Mon problème est que j'essaie de créer une application Opengl/Win32 et je suis incapable de garder ma boîte de dialogue ouverte. Il clignote littéralement comme si quelqu'un appuyait sur annuler à droite à l'ouverture. J'ai regardé autour de google et trouvé quelques autres avec ce problème, mais aucune des solutions qu'ils ont postées ne m'a aidé, alors je me tourne vers la communauté StackOverflow!Pourquoi cette boîte de dialogue se ferme-t-elle immédiatement après son ouverture?
Dans un premier temps, je l'ai écrit le code pour la boîte de dialogue Procédure ...
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;
}
J'ai alors écrit le code réel pour afficher la boîte.
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() renvoie un hwnd du programme principal. Cette fonction fonctionne correctement. et LoginDlgHwnd est une variable globale.
La boîte de dialogue actuelle est créée et incluse correctement. As tu des idées? -Celestialkey
En note, le MessageBox testait juste pour voir si c'était un handle NULL. Aucune raison pour le texte puisque c'était juste pour me lancer un avertissement rapidement lors des tests. Vos solutions corrigent le problème. –