Mimicking :: DialogBox()用于自定义Win32模式对话框

时间:2013-05-09 06:51:30

标签: winapi dialog modal-dialog

我有一个用C ++编写的旧学校Win32模态对话框。布局是用代码构造的(不是从资源加载的),并使用如下的自定义模态消息循环显示:

    // 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. 单击父窗口时,我没有像标准对话框那样使对话框框闪烁。 (在运行上述循环之前,我正在禁用拥有窗口)。

  3. 基本上我想要标准对话框过程的功能,但不需要从资源加载对话框。

    要清楚,无法从资源加载布局。我可以使用一个空的对话框模板,调用:: DialogBox()并以编程方式在WM_INITDIALOG上设置它的内容,但我想了解为什么上面的内容不起作用。

1 个答案:

答案 0 :(得分:0)

如果要以编程方式布局对话框,请使用DialogBoxIndirectParam