除了根据先前显示的窗口的位置简单地使用SetWindowPos
之外,我如何以级联格式在MFC中以编程方式排列对话框?
对话位置将从我的应用程序中的注册表加载,因此我们使用:
SetWindowPos(NULL,x,y,cx,cy,SWP_NOZORDER);
...用于对话框。之后,如果我们使用CascadeWindows函数,它似乎不适用于此Dialog,尽管它适用于同一父窗口中的其他对话框。似乎CascadeWindows
函数对调用SetWindowPos
的窗口没有影响;任何人都可以确认一下吗?
如果是这样,我们是否必须仅使用SetWindowPos来安排对话框的级联,还是有另一种方式?
答案 0 :(得分:1)
检查对话框是否具有窗口样式:WS_EX_TOOLWINDOW
或WS_EX_TOPMOST
。 CascadeWindows
不会安排具有该样式的窗口。
我使用以下代码尝试了基于MFC示例对话框的应用程序:
void CTestCascadeDlg::OnBnClickedOk()
{
this->SetWindowPos( NULL, 100,100,500,500, SWP_NOZORDER );
CascadeWindows( NULL, MDITILE_ZORDER, NULL, NULL, NULL );
}
我可以观察到我的对话框已成功级联。