Cformview 中的dialog如何初始化成和视图一样大小
时间: 2024-03-26 12:35:50 浏览: 58
您可以在 CFormView 的 OnInitialUpdate 函数中设置 dialog 的大小,使其与视图大小相同。具体的代码如下:
```
void CMyFormView::OnInitialUpdate() {
CFormView::OnInitialUpdate();
// 获取视图大小
CRect rect;
GetClientRect(rect);
// 设置 dialog 大小
CWnd* pWnd = GetDlgItem(AFX_IDC_PREVIEW_VIEW);
pWnd->SetWindowPos(NULL, 0, 0, rect.Width(), rect.Height(), SWP_NOMOVE | SWP_NOZORDER);
}
```
在上面的代码中,我们首先获取了视图的大小,然后通过 GetDlgItem 函数获取了 dialog 的句柄,最后使用 SetWindowPos 函数设置 dialog 的大小。其中,SWP_NOMOVE 表示不改变 dialog 的位置,SWP_NOZORDER 表示不改变 dialog 的 Z 顺序。
相关问题
MFC中Cformview 中的dialog如何初始化成和视图一样大小
在 MFC 中,CFormView 的 dialog 可以通过以下几个步骤初始化成和视图一样大小:
1. 在 CFormView 的 OnInitialUpdate 函数中获取该视图的尺寸,可以通过 GetClientRect 函数来获取。
2. 在 OnInitDialog 函数中设置对话框的尺寸为视图的尺寸。可以使用 SetWindowPos 函数来实现。
下面是代码示例:
```
void CMyFormView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// 获取视图的尺寸
CRect rect;
GetClientRect(rect);
// 将对话框的尺寸设置为视图的尺寸
CWnd* pWnd = GetDlgItem(AFX_IDC_FORMVIEW);
if (pWnd != NULL)
{
pWnd->SetWindowPos(NULL, 0, 0, rect.Width(), rect.Height(), SWP_NOZORDER | SWP_NOMOVE);
}
}
BOOL CMyFormView::OnInitDialog()
{
CFormView::OnInitDialog();
// 将对话框样式设置为无边框
ModifyStyleEx(WS_EX_DLGMODALFRAME, 0, SWP_FRAMECHANGED);
return TRUE;
}
```
需要注意的是,在 OnInitDialog 函数中,还需要将对话框的样式设置为无边框,以免出现窗口边框的重叠。
继承Cformview 的DIALOG如何初始化调整大小
要初始化调整大小继承自CFormView的对话框,您可以使用以下步骤:
1. 在您的对话框类的OnInitDialog函数中,添加以下代码:
```cpp
CRect rect;
GetClientRect(&rect);
CalcWindowRect(&rect);
SetWindowPos(NULL, 0, 0, rect.Width(), rect.Height(), SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
```
2. 在您的对话框类的OnSize函数中,添加以下代码:
```cpp
CRect rect;
GetClientRect(&rect);
CalcWindowRect(&rect);
SetWindowPos(NULL, 0, 0, rect.Width(), rect.Height(), SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
```
这些代码将根据您的对话框的客户区大小计算窗口框架的大小,并将窗口重新定位和调整大小。这将确保您的对话框在初始化和调整大小时总是正确的大小。
阅读全文