我有一个用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);
}
除了一些烦恼外,大部分都是作品
使用通用控件6时,按照标准对话框点击alt键后,不会出现快捷键助记符和点状焦点矩形的下划线。 (如果我在对话框启动时按住某个键,它们会出现)。
单击父窗口时,我没有像标准对话框那样使对话框框闪烁。 (在运行上述循环之前,我正在禁用拥有窗口)。
基本上我想要标准对话框过程的功能,但不需要从资源加载对话框。
要清楚,无法从资源加载布局。我可以使用一个空的对话框模板,调用:: DialogBox()并以编程方式在WM_INITDIALOG上设置它的内容,但我想了解为什么上面的内容不起作用。
答案 0 :(得分:0)
如果要以编程方式布局对话框,请使用DialogBoxIndirectParam
。