1
我的问题是,我想创建一个的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是一个全局变量。
创建实际的对话,其中包括适当的为好。你有什么想法? -Celestialkey
作为一个侧面说明,在MessageBox只是测试,看看如果它是一个NULL句柄。没有文字的理由,因为它只是在测试中迅速向我发出警告。尽管您的解决方案解决了这个问题 – 2010-09-30 17:35:02