2010-02-22 30 views
1

對不起,愚蠢的問題在本教程中所描述的,我做的一切: http://www.functionx.com/visualc/howto/calldlgfromdlg.htm調用從對話框窗口中的第二對話框沒有讓任何一個活躍

我創建對話框窗口,並嘗試調用另一個對話框響應於使用下面的代碼的按鈕按壓:出現

CSecondDlg Dlg; 
Dlg.DoModal(); 

模態窗口,但不是有效的,並且主窗口不是活性太和一切滯後。 下面是截圖:

Two dialogs interfering with each other http://img713.imageshack.us/img713/3919/63418833w.gif

這裏是我的對話框中的定義:

IDD_DIARY_TEST_DIALOG DIALOGEX 0, 0, 320, 200 
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU 
EXSTYLE WS_EX_APPWINDOW 
CAPTION "diary_test" 
FONT 8, "MS Shell Dlg", 0, 0, 0x1 
BEGIN 
    DEFPUSHBUTTON "Second",IDC_SECOND_BTN,209,179,50,14 
    PUSHBUTTON  "Cancel",IDCANCEL,263,179,50,14 
    CTEXT   "TODO: Place dialog controls here.",IDC_STATIC,10,96,300,8 
END 

IDD_SECOND_DLG DIALOGEX 0, 0, 195, 127 
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_DISABLED | WS_CAPTION 
CAPTION "Second" 
FONT 8, "MS Shell Dlg", 400, 0, 0x0 
BEGIN 
    LTEXT   "TODO: layout property page",IDC_STATIC,53,59,90,8 
    PUSHBUTTON  "Button1",IDC_BUTTON1,61,93,50,14 
END 

回答

4

我們只是比較樣式的兩個對話框中:

風格DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_DISABLED | WS_CAPTION

我已經指出在大膽的差異,併爲您的問題的原因,現在應該是顯而易見的:你的第二個對話框被禁用(WS_DISABLED),從而防止它被激活!另一個區別是,缺少DS_MODALFRAME風格,會導致它出現輕微的異常(但不應該大大影響行爲);最後的差異(WS_SYSMENU)只能防止顯示系統菜單(和左側圖標,右側關閉按鈕)。

在你的屏幕截圖所示的其他古怪,第二個對話框中顯示混入控制第一,可能是由於您最初使用的WS_CHILDas patriiice surmised ...

鑑於這一點,您發佈的其他代碼,我懷疑你最初創建這個屬性頁面。屬性頁面,而類似正常的對話框模板,打算作爲子窗口顯示;正常的模態對話框是而不是

3

你不顯示你的源代碼,但它可能是你的第二個對話框中被定義爲一個孩子窗口而不是彈出窗口。只需在資源編輯器中進行驗證。

+0

@isergeymd:在RC文件中找到對話框定義並將其粘貼到您的問題中。否則,我們都在猜測...... – Shog9 2010-02-22 20:14:36

相關問題