2013-05-09 70 views
1

我有一個用C++編寫的舊式Win32模態對話框。佈局在代碼中(而不是從資源加載)建造和使用這樣的自定義模式消息循環顯示:爲自定義Win32模式對話框模仿:: DialogBox()

// Spin message loop 
    window->m_modalInfo = &mi; 
    while (!mi.modalFinished) 
    { 
     // Get a message 
     MSG msg; 
     GetMessage(&msg, NULL, 0, 0); 

     // Process dialog messages first 
     if (IsDialogMessage(hWnd, &msg)) 
      continue; 

     // Dispatch other messages 
     TranslateMessage(&msg); 
     DispatchMessage(&msg); 
    } 

在主要工作除了少數煩惱

  1. 當使用公共控件如圖6所示,按照標準對話框敲擊alt鍵後​​,快捷鍵助記符和虛線焦點矩形上的下劃線不會出現。 (如果我在對話框啓動時按住一個鍵,它們確實會出現)。

  2. 單擊父窗口時,我沒有看到對話框框架像標準對話框一樣閃爍。 (在運行上述循環之前,我禁用了擁有窗口)。

基本上我想要標準對話框程序的功能,但不需要從資源加載對話框。

要清楚,佈局不能從資源加載。我可以使用一個空的對話框模板,調用:: DialogBox()並在WM_INITDIALOG上以編程方式設置它的內容,但我想了解爲什麼上述不起作用。

回答

0

如果要以編程方式佈局對話框,請使用DialogBoxIndirectParam