【发布时间】:2010-09-29 16:48:29
【问题描述】:
我的问题是我正在尝试创建一个 Opengl/Win32 应用程序,但我无法让我的对话框保持打开状态。它实际上会闪烁,好像有人在它打开时按下了取消按钮。 我环顾了谷歌,发现其他一些人有这个问题,但他们发布的解决方案都没有帮助我,所以我求助于 StackOverflow 社区!
最初,我为对话过程编写代码...
LRESULT CALLBACK LoginDlgProc(HWND hWndDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
ShowWindow(hWndDlg, SW_SHOW); // These were added to get the window to show up
UpdateWindow(hWndDlg); // even if the chance was small.
switch(Msg)
{
case WM_INITDIALOG:
return true;
case WM_COMMAND:
switch(wParam)
{
case IDOK:
EndDialog(hWndDlg, 0);
return TRUE;
}
break;
}
return FALSE;
}
然后我编写了实际的代码来显示该框。
void DisplayLoginBox()
{
LoginDlgHwnd = NULL;
LoginDlgHwnd = (HWND)DialogBox(GetModuleHandle(NULL),
MAKEINTRESOURCE(LOGIN_DIALOG),
app.GetHandle(),
reinterpret_cast<DLGPROC>(LoginDlgProc)
);
if(LoginDlgHwnd == NULL)
MessageBox(NULL, NULL, NULL, MB_OK);
}
app.GetHandle() 返回主程序的 hwnd。此功能正常工作。而 LoginDlgHwnd 是一个全局变量。
实际的对话框也已正确创建和包含。你有什么想法? -天界之钥
【问题讨论】: