MFC 用C++语言把Text控件移动到slider控件下面开头五分之一的位置
时间: 2023-10-04 19:07:09 浏览: 146
您可以使用以下代码将MFC中的Text控件移动到Slider控件下面开头五分之一的位置:
```cpp
CWnd* pSlider = GetDlgItem(IDC_SLIDER1);
CRect rectSlider;
pSlider->GetWindowRect(&rectSlider);
ScreenToClient(&rectSlider);
CWnd* pText = GetDlgItem(IDC_TEXT1);
CRect rectText;
pText->GetWindowRect(&rectText);
ScreenToClient(&rectText);
// 将Text控件的左边缘移动到Slider控件的左边缘
rectText.left = rectSlider.left;
// 将Text控件的顶部移动到Slider控件下面的开头五分之一处
int height = rectSlider.Height();
rectText.top = rectSlider.bottom + height / 5;
// 设置Text控件的新位置
pText->MoveWindow(rectText);
```
其中,IDC_SLIDER1和IDC_TEXT1分别表示Slider和Text控件的ID。需要注意的是,在调用GetWindowRect函数之前,需要先获取到控件的指针,这里使用了GetDlgItem函数。另外,由于GetWindowRect函数返回的是屏幕坐标,所以需要使用ScreenToClient函数将其转换为客户端坐标。
相关问题
win32 用C++语言把Text控件移动到slider控件下面左边缘的五分之一的位置
您可以使用Win32 API中的SetWindowPos函数来实现将Text控件移动到Slider控件下面左边缘的五分之一的位置。以下是示例代码:
```cpp
HWND hText = GetDlgItem(hWnd, ID_TEXT); // 获取Text控件的句柄
HWND hSlider = GetDlgItem(hWnd, ID_SLIDER); // 获取Slider控件的句柄
RECT rcSlider;
GetWindowRect(hSlider, &rcSlider); // 获取Slider控件的矩形区域
int xPos = rcSlider.left + rcSlider.right / 5; // 计算Text控件的横坐标位置
int yPos = rcSlider.bottom + 5; // 计算Text控件的纵坐标位置
SetWindowPos(hText, NULL, xPos, yPos, 0, 0, SWP_NOSIZE | SWP_NOZORDER); // 将Text控件移动到指定位置
```
在上述代码中,假设ID_TEXT和ID_SLIDER分别是Text和Slider控件的ID号。函数GetDlgItem可以用来获取指定ID号的控件句柄。GetWindowRect函数可以用来获取指定控件的矩形区域。xPos和yPos分别是Text控件的横、纵坐标位置。SetWindowPos函数可以将Text控件移动到指定位置,使用SWP_NOSIZE和SWP_NOZORDER参数可以保持Text控件的大小和Z轴顺序不变。
阅读全文