使用CascadeWindows函数在Linux中安排Cascade CDialogs

时间:2010-07-20 06:44:17

标签: c++ visual-c++ user-interface mfc

除了根据先前显示的窗口的位置简单地使用SetWindowPos之外,我如何以级联格式在MFC中以编程方式排列对话框?

对话位置将从我的应用程序中的注册表加载,因此我们使用:

SetWindowPos(NULL,x,y,cx,cy,SWP_NOZORDER); 

...用于对话框。之后,如果我们使用CascadeWindows函数,它似乎不适用于此Dialog,尽管它适用于同一父窗口中的其他对话框。似乎CascadeWindows函数对调用SetWindowPos的窗口没有影响;任何人都可以确认一下吗?

如果是这样,我们是否必须仅使用SetWindowPos来安排对话框的级联,还是有另一种方式?

1 个答案:

答案 0 :(得分:1)

检查对话框是否具有窗口样式:WS_EX_TOOLWINDOWWS_EX_TOPMOSTCascadeWindows不会安排具有该样式的窗口。

我使用以下代码尝试了基于MFC示例对话框的应用程序:

void CTestCascadeDlg::OnBnClickedOk()
{
    this->SetWindowPos( NULL, 100,100,500,500, SWP_NOZORDER );
    CascadeWindows( NULL, MDITILE_ZORDER, NULL, NULL, NULL );
}

我可以观察到我的对话框已成功级联。