MFC布局Children和 Composite 水平布局 设置控件大小无效
时间: 2024-02-05 21:11:22 浏览: 34
在 MFC 中,如果你使用了 `CWnd` 类中的 `MoveWindow` 函数来设置控件的大小和位置,但是发现设置无效,可能是因为你没有使用正确的布局方式。
对于 `CMFCChildWnd` 和 `CMFCPropertyGridProperty` 这样的子窗口控件,可以使用 `CMFCTabCtrl` 控件来实现水平布局。具体步骤如下:
1. 在对话框或父窗口中添加一个 `CMFCTabCtrl` 控件。
2. 在 `CMFCTabCtrl` 中添加多个标签页,并将每个标签页设置为需要放置的控件的容器。
3. 将需要放置的控件添加到对应的标签页中。
当你需要调整子窗口控件的大小时,可以使用 `CRect` 类来指定控件的位置和大小,然后将其传递给 `CMFCTabCtrl` 控件的 `AdjustRect` 函数来调整控件的位置和大小。
对于 `CMFCVisualManager` 控件,可以使用 `CMFCVisualManager::GetInstance` 函数获取当前的视觉管理器对象,并调用其 `OnUpdateToolbars` 函数来更新界面布局。例如:
```
CMFCVisualManager::GetInstance()->OnUpdateToolbars();
```
这样就可以实现在使用 `MoveWindow` 函数设置子窗口控件大小和位置后,正确地显示控件并更新布局。
相关问题
MFC布局Children
MFC中的布局是通过控制子窗口(Children)的相对位置和大小来实现的。在MFC中,可以使用以下方法来布局子窗口:
1. 使用布局管理器(Layout Manager):布局管理器是一种MFC中的工具,可以让你轻松地将控件放置在对话框或窗口上,并自动调整它们的大小和位置,以适应窗口的大小和形状。
2. 使用代码实现:使用代码来控制子窗口的位置和大小,这需要在OnSize()事件处理程序中编写代码。
例如,以下代码片段演示了如何在MFC中使用代码来布局子窗口:
```
void CMyDialog::OnSize(UINT nType, int cx, int cy)
{
CDialogEx::OnSize(nType, cx, cy);
// 获取控件的指针
CWnd* pWnd = GetDlgItem(IDC_MYCONTROL);
if (pWnd != nullptr)
{
// 获取窗口的新大小
CRect rect;
GetClientRect(&rect);
// 设置控件的新位置和大小
int nWidth = rect.Width() / 2;
int nHeight = rect.Height() / 2;
int nLeft = rect.left + (rect.Width() - nWidth) / 2;
int nTop = rect.top + (rect.Height() - nHeight) / 2;
pWnd->MoveWindow(nLeft, nTop, nWidth, nHeight);
}
}
```
这段代码将控件IDC_MYCONTROL放置在窗口的中心,并让它占据窗口大小的一半。通过在OnSize()事件处理程序中编写此类代码,可以在窗口大小发生变化时自动调整控件的大小和位置。
CWnd mfc webbrowser 设置控件大小
您可以通过以下步骤设置MFC WebBrowser控件的大小:
1. 打开您的MFC对话框资源。
2. 添加一个新的WebBrowser控件。
3. 选中该控件并在属性窗口中找到“ID”属性。
4. 将其设置为您在类向导中创建的成员变量的ID。
5. 在您的代码中,添加以下行来设置控件的大小:
```
CWnd* pBrowserWnd = GetDlgItem(IDC_YOUR_WEB_BROWSER_ID);
CRect rect;
pBrowserWnd->GetClientRect(&rect);
pBrowserWnd->MoveWindow(rect.left, rect.top, YOUR_WIDTH, YOUR_HEIGHT, TRUE);
```
在上述代码中,您需要将“YOUR_WEB_BROWSER_ID”替换为您在步骤4中设置的控件ID,并将“YOUR_WIDTH”和“YOUR_HEIGHT”替换为您想要的控件宽度和高度。
6. 重新编译并运行您的应用程序,您应该能够看到您的WebBrowser控件已经被正确地调整大小了。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)