Fenêtre par dessus boite dialogue

Résolu
Signaler
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008
-
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008
-
Salut,

J'ai un programme win32 qui est une boite de dialogue.

Je voudrais que lorsque qu'on clique sur un bouton ça ouvre une FENETRE par dessus la boite de dialogue.

Je sais que pour les boite de dialogue il y a les MAKEINTRESOURCE mais pour la fenetre j'y arive pas.

Lorsque je clique sur le bouton il ne ce passe rien.

Pouvez vous m'aider SVP ???

7 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
Salut,
Pour créer une fenêtre, il faut
-Enregistrer une classe avec RegisterClassEx
-Créer une fenêtre de cette classe avec CreateWindowEx
-Tu fais cela dans le message WM_COMMAND quand wParam vaut l'ID de ton boutton.
Tu peux trouver des tutorial sur la création de fenêtres sur ce site
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008

Ok merci pour ce tuto.

Mais le problème c'est que moi à la base j'ai une boite de dialogue.

Alors est ce que c'est possible d'afficher une fenêtre par dessus une boite de dialogue ???

J'y arrive pas ...
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
Oui, comme je te l'ai dit au debut
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008

Bon alors j'ai réussi grace à ton tuto à faire ça :

MA FONCTION PRINCIPALE :

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
wc.style = CS_OWNDC;
wc.lpfnWndProc = WindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = "OGL";

RegisterClass(&wc);

DialogBox(hInstance,(LPCTSTR)IDD_DIALOG1,NULL,(DLGPROC)MainProc); //ajout produit


return 0;
}

J' APPELE LA FENETRE :

case ID_FENETRE:
hwnd = CreateWindow
("OGL", "Fenetre OpenGL",
WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE,
0, 0, 640, 480, NULL, NULL, hInstance, NULL
);
break;

J'ai une fonction pour ma boite de dialogue :
LRESULT CALLBACK MainProc(HWND Dlg,UINT message,WPARAM wParam,LPARAM lParam)

Et une autre pour ma fenêtre:
LRESULT CALLBACK WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)

POUR FERMER MA FENETRE :

case WM_CLOSE:
wglMakeCurrent (NULL, NULL);
wglDeleteContext (RC);
ReleaseDC (hwnd,DC);
PostQuitMessage (0);
break;

Mais voila, le problème c'est que lorsque je ferme ma fenêtre ça ferme aussi ma boite de dialogue, en fait ça ferme le programme en entier.

J'arrive pas à fermer seulement la fenêtre.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
remplace PostQuitMessage (0); par DestroyWindow(hWnd)
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008

COOOOL !!!
Merci beaucoup ça marche impec grace à toi !!!

En plus tu m'as trouvé un super tutu sur win32 !!!

Encore merci !
à++++++