2013-05-09 16 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