我有一个 type 的对话框CPropertyPage
,在对话框中我显示一个CPropertySheet
对象以显示几个选项卡。
最初,当我测试这个对话框时,我让它作为一个单独的对话框窗口 ( dialog.DoModal()
) 运行。当我将它作为单独的对话框窗口运行时,该SetWindowPos()
功能起作用,并且我成功地将CPropertySheet
对象移动到正确的位置。
但是,然后我尝试将其合并CPropertyPage
到另一个 parentCPropertySheet
中。这是该SetWindowPos()
功能不起作用的时候。
CPropertySheet
当我有 a时 ,它似乎忽略了它CPropertyPage
,它包含在 another 中CPropertySheet
。有人知道为什么吗?
已编辑:添加了额外的代码和图片。
编码:
窗格“pane.h”:
CPropertySheet SheetSettings;
顶部CPropertySheet
,顶部.h:
CMyDlg PageMyDlg;
Onsize(UINT nType, int cx, int cy);
顶部CPropertySheet
,顶部.cpp:
Top::Top()
{
SheetSettings.AddPage(&PageMyDlg);
}
Top::Onsize(UINT nType, int cx, int cy)
{
if(SheetSettings.GetSafeHwnd())
{
SheetSettings.MoveWindow(0, 0, cx, cy);
CRect Rect;
SheetSettings.GetClientRect(Rect);
Rect.InflateRect(-2, -4, -2, -2);
SheetSettings.GetTabControl()->MoveWindow(Rect.left, Rect.top, Rect.Width(), Rect.Height());
SheetSettings.GetTabControl()->AdjustRect(FALSE, Rect);
if (Page12nc.GetSafeHwnd())
Page12nc.MoveWindow(Rect.left, Rect.top, Rect.Width(), Rect.Height());
}
// CPane holds the page where the CPropertySheet is drawn.
CPane::OnSize(nType, cx, cy);
}
对话框'CMyDlg',MyDlg.h:
CPropertySheet _dlgPropSheet;
对话框'CMyDlg',MyDlg.cpp:
CRect rcSheet;
_dlgPropSheet.GetParent()->GetWindowRect(&rcSheet);
ScreenToClient( &rcSheet );
// This goes wrong.
_dlgPropSheet.SetWindowPos( NULL, rcSheet.left+26, rcSheet.top+223, rcSheet.Width(), rcSheet.Height(), SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE );
这就是.doModal()
我的CMyDlg
.
这就是在顶部绘制底部时绘制的内容。