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