1

我有一个用 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. 使用 Common Controls 6 时,在按标准对话框按下 alt 键后,快捷助记符和虚线焦点矩形上的下划线不会出现。(如果我在对话框启动时按住键,它们确实会出现)。

  2. 单击父窗口时,我没有像标准对话框那样使对话框框闪烁。(在运行上述循环之前,我禁用了拥有窗口)。

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

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

4

1 回答 1

0

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

于 2013-05-10T11:59:20.590 回答