0/5 (25 avis)
Vue 7 769 fois - Téléchargée 581 fois
//---------------------------------------------------------------------------------------------------------------------------------------------------- #include <Windows.h> #define Bouton1 500 // identificateur pour bouton 1 #define Bouton2 501 // identificateur pour bouton 2 #define Quitter 502 // identificateur pour bouton quitter HINSTANCE hInstance; HWND hstatic; LRESULT CALLBACK DialogProc(HWND,UINT ,WPARAM ,LPARAM ); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { HGLOBAL hmem; //handle mémoire globale LPDLGTEMPLATE lpdt; //pointeur sur structure dialog template LPWORD lpw; // pointeur sur un WORD LPWSTR lpnom; // pointeur sur chaine UNICODE pour le nom de la boite //allouer de la mémoire pour notre dialog template hmem = GlobalAlloc(GPTR, 512); //GPTR=taille fixe initialisée à 0 if (!hmem) return 1; //convertir le handle en pointeur DLGTEMPLATE sur le début de la mémoire allouée lpdt = ( LPDLGTEMPLATE) hmem; // Définir les propriétés de la boite de dialogue lpdt->style = WS_POPUP | WS_BORDER |WS_MINIMIZEBOX| WS_SYSMENU | DS_MODALFRAME | WS_CAPTION; lpdt->x = 10; //position x lpdt->y = 10; //position y lpdt->cx = 300; //largeur lpdt->cy = 200; //hauteur //obtenir pointeur juste après la structure DLGTEMPLATE lpw = (LPWORD) (lpdt + 1); //obtenir pointeur sur la zone du nom de la boite de dialogue lpnom = (LPWSTR) lpw+2; //convertir le nom en UNICODE et le mettre dans la zone nom MultiByteToWideChar (CP_ACP, 0, "Ma Boîte de Dialogue", -1, lpnom, 128); // lancer la boite de dialogue DialogBoxIndirect(hInstance,lpdt,NULL,(DLGPROC)DialogProc); // libération de la mémoire allouée GlobalFree(hmem); return 0; } LRESULT CALLBACK DialogProc(HWND Dlg,UINT message,WPARAM wParam,LPARAM lParam) { HWND hbouton1,hbouton2,hcadre,hquitter; switch(message) { case WM_INITDIALOG: { // Creer les boutons, le cadre et la zone de texte hbouton1 = CreateWindow("BUTTON", "Bouton 1", WS_CHILD | WS_VISIBLE , 180, 190,80, 30, Dlg, (HMENU)Bouton1, hInstance, 0); hbouton2 = CreateWindow("BUTTON", "Bouton 2", WS_CHILD | WS_VISIBLE , 330, 190,80, 30, Dlg, (HMENU)Bouton2, hInstance, 0); hstatic = CreateWindow("STATIC", 0, WS_CHILD | WS_VISIBLE , 200, 130,250, 30, Dlg, 0, hInstance, 0); hcadre = CreateWindow("BUTTON", "Cliquez sur un bouton :", WS_CHILD | WS_VISIBLE | BS_GROUPBOX, 100, 70,400, 180, Dlg, 0, hInstance, 0); hquitter = CreateWindow("BUTTON", "Quitter", WS_CHILD | WS_VISIBLE , 260, 320,80, 30, Dlg, (HMENU)Quitter, hInstance, 0); return 0; } case WM_CLOSE: //clic sur la croix de fermeture { EndDialog(Dlg,0); } case WM_COMMAND: { switch(LOWORD(wParam)) { case Bouton1: //clic sur le bouton 1 { SetWindowText(hstatic,"Vous avez cliqué sur le bouton 1"); break; } case Bouton2: //clic sur le bouton 2 { SetWindowText(hstatic,"Vous avez cliqué sur le bouton 2"); break; } case Quitter: //clic sur le bouton Quitter { EndDialog(Dlg,0); } } } break; } return 0; } //----------------------------------------------------------------------------------------------------------------------------------------------------
19 sept. 2004 à 08:05
19 sept. 2004 à 18:02
http://www.cppfrance.com/code.aspx?id=25149
19 sept. 2004 à 20:08
19 sept. 2004 à 21:03
A+
20 sept. 2004 à 08:55
Cependant, question : peut on programmer plusieurs boîtes de dialogue de ce type et les faire afficher en même temps ???
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.