2010-07-20 14 views
1

如何根據先前顯示的窗口的位置以編程方式在MFC中以級聯格式安排對話框,而不是簡單地使用SetWindowPos使用CascadeWindows函數安排在MFC中級聯CDialogs

對話框位置是從我的應用程序在註冊表加載的,所以我們使用:

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

...的對話框。之後,如果我們使用CascadeWindows函數,它似乎不適用於此對話框,儘管它適用於同一父窗口中的其他對話框。看起來CascadeWindows函數對稱爲SetWindowPos的窗口沒有影響;任何人都可以確認嗎?

如果是這樣,我們是否只需要使用SetWindowPos來安排對話框的級聯,或者有其他方法?

+0

SetWindowPos不會更改窗口的位置和大小以外的任何屬性,所以應該沒有任何方式影響CascadeWindows。如果您不調用SetWindowPos,窗口是否正常級聯? – 2011-11-17 17:19:30

回答

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); 
} 

而且我可以看到我的對話已成功級聯。