
maevasa
|
voilà la déclaration de mes fonctions , je mets pas tout le code parce que c'est long ! Donc ma fenêtre menu me permet d'ouvrir la fenêtre A PROPOS DE , FENETRE DROITS ,FENETRE OUVRIR PDF . Ca j'y arrive bien mais une par une et ma fenêtre menu devient inactive (elle est toujours visible). Je voudrais pouvoir toute les ouvrir! (Mais pas deux fois la même!)
//+++++++++++++++++++++++++++ FENETRE A PROPOS DE //Procédure de gestion des évènements de la fenêtre ABOUT BOOL CALLBACK AboutDlgProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam); //+++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++ FENETRE DROITS //Procédure de gestion des évènements de la fenêtre DROITS BOOL CALLBACK DroitsDlgProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam);
//Initialisation des CheckBox suivant les droits de l'utilisateur void CheckBox(HWND hdlg); //+++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++ FENETRE OUVRIR PDF
//Procédure de gestion des évènements de la fenêtre Ouvrirpdf BOOL CALLBACK PdfDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam);
//Initialise la boite de dialogue Pdf void InitDialogPdf(HWND hdlg);
//Fonction qui implémente et affiche le browser void OnBrowse();
//Fonction qui enlève la chaîne de caractère .pdf à la fin de szfile void EnlevePointPdf(); //+++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++ FENETRE MENU //Procédure de gestion des évènements de la fenêtre Menu BOOL CALLBACK MenuDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam);
//Initialise la boite de dialogue Menu void InitDialogMenu(HWND hdlg);
//+++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++ FENETRE MOT DE PASSE //Procédure de gestion des évènements de la fenêtre Motdepasse BOOL CALLBACK MotdepasseDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam);
//Initialise la fenêtre Motdepasse void InitDialogMotdepasse(HWND hdlg); //Vérifie le mot de passe rentré par l'utilisateur int VerifMotdepasse(char Login[10],char Password[16],HWND hdlg); //+++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++ FENETRE BIENVENUE
//Procédure de gestion des évènements de la fenêtre Bienvenue BOOL CALLBACK BienvenueDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam); //+++++++++++++++++++++++++++++++++++++++++++++
//POINT D'ENTREE DU PROG (EQUIVALENT DU MAIN) int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE x, PSTR y, int z);
BOOL CALLBACK AboutDlgProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) { switch(uMsg){ case WM_CTLCOLORDLG: return (LONG)(LONG_PTR)hbrush;
case WM_CTLCOLORSTATIC: SetBkMode((HDC)wParam,TRANSPARENT); return (LONG)(LONG_PTR)hbrush; case WM_COMMAND: switch( LOWORD(wParam) ){ case IDOK: EndDialog(hwndDlg, 0); break; }
return TRUE; }
return FALSE; } BOOL CALLBACK DroitsDlgProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) { switch(uMsg) { case WM_INITDIALOG: CheckBox(hwndDlg);
case WM_CTLCOLORDLG: return (LONG)(LONG_PTR)hbrush;
case WM_CTLCOLORSTATIC: SetBkMode((HDC)wParam,TRANSPARENT); return (LONG)(LONG_PTR)hbrush; case WM_COMMAND: { switch( LOWORD(wParam) ) { case IDOK: { EndDialog(hwndDlg, 0); break; } }
return TRUE; } }
return FALSE; } void CheckBox(HWND hdlg) {
//si le groupe est vrai on coche le checkbox correspondant if(BoolGroupe[0]==true) CheckDlgButton(hdlg,IDC_G0, (WPARAM) BST_CHECKED);
if(BoolGroupe[1]==true) CheckDlgButton( hdlg, IDC_G1, (WPARAM) BST_CHECKED);
if(BoolGroupe[2]==true) CheckDlgButton(hdlg, IDC_G2, (WPARAM) BST_CHECKED);
if(BoolGroupe[3]==true) CheckDlgButton(hdlg, IDC_G3, (WPARAM) BST_CHECKED);
if(BoolGroupe[4]==true) CheckDlgButton(hdlg, IDC_G4, (WPARAM) BST_CHECKED);
if(BoolGroupe[5]==true) CheckDlgButton( hdlg, IDC_G5, (WPARAM) BST_CHECKED);
if(BoolGroupe[6]==true) CheckDlgButton(hdlg, IDC_G6, (WPARAM) BST_CHECKED);
if(BoolGroupe[7]==true) CheckDlgButton(hdlg, IDC_G7, (WPARAM) BST_CHECKED);
if(BoolGroupe[8]==true) CheckDlgButton(hdlg, IDC_G8, (WPARAM) BST_CHECKED);
if(BoolGroupe[9]==true) CheckDlgButton(hdlg, IDC_G9, (WPARAM) BST_CHECKED); }
BOOL CALLBACK PdfDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam) { switch(mssg) { case WM_INITDIALOG: InitDialogPdf(hdlg); return 1; case WM_CTLCOLORDLG: return(LONG)(LONG_PTR)hbrush;
case WM_CTLCOLORSTATIC: SetBkMode((HDC)wParam,TRANSPARENT); return (LONG)(LONG_PTR)hbrush; case WM_SYSCOMMAND: if(wParam == SC_CLOSE) { CloseDataBase(); EndDialog(hdlg,0); return 0; } case WM_COMMAND: switch(wParam) { case IDC_Browse: OnBrowse(); return 0; case IDC_Ouvrir:
if(GetWindowText(hedname, szfile, 264)) { EnlevePointPdf();
if(DecryptFichier(sztitle ,szfile)==1)//on décrypte le fichier et on vérifie les droits { ShellExecute(NULL, "open", FichierPdf,NULL, NULL, SW_MAXIMIZE); } SendDlgItemMessage (hdlg,IDC_pdf,WM_SETTEXT,0,(LONG)(LONG_PTR) ""); } else { MessageBox(hdlg, "nom de fichier requis" , "Erreur !", MB_ICONEXCLAMATION); PostMessage(hdlg, WM_NEXTDLGCTL, (WPARAM) hedname, 1); } return 0; case IDC_Print: if(GetWindowText(hedname, szfile, 264)) { EnlevePointPdf(); if(DecryptFichier(sztitle ,szfile)==1)//on décrypte le fichier et on vérifie les droits { char FichierPdfAImprimer[MAX_PATH]; sprintf(FichierPdfAImprimer,"%s %s","/p",FichierPdf); ShellExecute(NULL, NULL, "acrord32",FichierPdfAImprimer, NULL, SW_MAXIMIZE); } SendDlgItemMessage (hdlg,IDC_pdf,WM_SETTEXT,0,(LPARAM) ""); } else { MessageBox(hdlg, "nom de fichier requis" , "Erreur !", MB_ICONEXCLAMATION); } return 0; case IDC_RetourMenu: EndDialog(hdlg, 0); return 1;
case IDCANCEL: CloseDataBase(); EndDialog(hdlg,0); return 0; } } return 0; }
void InitDialogPdf(HWND hdlg) { //on charge l'icone SGCV SetClassLong(hdlg, GCL_HICON, (LONG)(LONG_PTR)LoadIcon(hinst,(LPCTSTR) IDI_SGCV)); hedname = GetDlgItem(hdlg, IDC_pdf); //On charge les images dans les boutons //.........(GetDlgItem(identifiant,NomBouton), BM_SETIMAGE, IMAGE_BITMAP, (LONG)(LONG_PTR) LoadBitmap(hinst, (LPCTSTR)Nom Du Bitmap)); SendMessage(GetDlgItem(hdlg, IDC_Browse) , BM_SETIMAGE, IMAGE_ICON,(LONG)(LONG_PTR) LoadIcon(hinst, (LPCTSTR)IDI_BROWSE));//image dans bouton SendMessage(GetDlgItem(hdlg,IDC_Ouvrir ) , BM_SETIMAGE, IMAGE_BITMAP, (LONG)(LONG_PTR) LoadBitmap(hinst, (LPCTSTR)IDB_PDF)); SendMessage(GetDlgItem(hdlg,IDC_Print ) , BM_SETIMAGE, IMAGE_BITMAP,(LONG)(LONG_PTR) LoadBitmap(hinst, (LPCTSTR)IDB_PRINT)); SendMessage(GetDlgItem(hdlg,IDC_RetourMenu ) , BM_SETIMAGE, IMAGE_BITMAP, (LONG)(LONG_PTR) LoadBitmap(hinst, (LPCTSTR)IDB_RetourMenu)); SendMessage(GetDlgItem(hdlg, IDCANCEL) , BM_SETIMAGE, IMAGE_BITMAP, (LONG)(LONG_PTR) LoadBitmap(hinst, (LPCTSTR)IDB_Quitter)); }
BOOL CALLBACK MenuDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam) { switch(mssg) { case WM_INITDIALOG: InitDialogMenu(hdlg); return 1; case WM_NOTIFY: InfoBullesMenu(lParam); return 0;
case WM_CTLCOLORSTATIC: SetBkMode((HDC)wParam,TRANSPARENT); return (LONG)(LONG_PTR)hbrush; case WM_CTLCOLORDLG: return (LONG)(LONG_PTR)hbrush;
case WM_COMMAND:// on regarde les messages relatifs aux controles // les 16 bits de poids faible (recuperes par la macro LOWORD()) nous indiquent // le controle concerne par le message. switch( LOWORD(wParam) ){ // bouton 'Exit' case ID_FILE_EXIT: // on quitte le dialogue en renvoyant la valeur 0 en valeur de retour. // Attention !! cela ne veut pas dire que l'on quitte l'application mais // juste que le dialogue est tue. CloseDataBase(); EndDialog(hdlg, 0); break;
// Item du menu nomme 'A propos de cette application ...' case ID_ABOUT_ABOUTTHISAPPLICATION: // on lance un autre dialogue (de type modal ici pour forcer l'utilisateur a // cliquer sur OK pour revenir au dialogue principal). DialogBoxParam(hinst, (LPCTSTR)IDD_ABOUT, hdlg, AboutDlgProc, 0); //DialogBox( hinst, MAKEINTRESOURCE(IDD_DIALOG_ABOUT), hdlg, AboutDlgProc ); break;
case ID_DROIT: // on lance un autre dialogue (de type modal ici pour forcer l'utilisateur a // cliquer sur OK pour revenir au dialogue principal). DialogBoxParam(hinst, (LPCTSTR)IDD_DROITS, hdlg, DroitsDlgProc, 0); //DialogBox( hinst, MAKEINTRESOURCE(IDD_DIALOG_ABOUT), hdlg, AboutDlgProc ); break;
case IDCANCEL: CloseDataBase(); EndDialog(hdlg,0); return 0;
case IDC_pdf: DialogBoxParam(hinst, (LPCTSTR)IDD_Ouvrirpdf, hdlg, PdfDlgProc, 0); return 0;
}
}
return 0;
}
void InitDialogMenu(HWND hdlg) { Droits(hdlg);
//images dans boutons SendMessage(GetDlgItem(hdlg, IDC_pdf) , BM_SETIMAGE, IMAGE_BITMAP, (LONG)(LONG_PTR) LoadBitmap(hinst, (LPCTSTR)IDB_PDF)); SendMessage(GetDlgItem(hdlg, IDCANCEL) , BM_SETIMAGE, IMAGE_BITMAP, (LONG)(LONG_PTR) LoadBitmap(hinst, (LPCTSTR)IDB_Quitter)); SendMessage(GetDlgItem(hdlg, IDC_rech) , BM_SETIMAGE, IMAGE_BITMAP, (LONG)(LONG_PTR) LoadBitmap(hinst, (LPCTSTR)IDB_Recherche)); SendMessage(GetDlgItem(hdlg, IDC_maj) , BM_SETIMAGE, IMAGE_BITMAP, (LONG)(LONG_PTR) LoadBitmap(hinst, (LPCTSTR)IDB_Miseajour)); SendMessage(GetDlgItem(hdlg,IDC_Hist ) , BM_SETIMAGE, IMAGE_BITMAP, (LONG)(LONG_PTR) LoadBitmap(hinst, (LPCTSTR)IDB_Historique));
// on charge le menu
hMenu = LoadMenu( hinst, MAKEINTRESOURCE(IDR_MENU1) ); if( hMenu ) // on attache le menu a la boite de dialogue SetMenu( hdlg, hMenu ); SetClassLong(hdlg, GCL_HICON, (LONG)(LONG_PTR)LoadIcon(hinst, (LPCTSTR)IDI_SGCV)); //PostMessage(hdlg, WM_INITMDB, 0, 0); // laisse fenêtre s'afficher
}
BOOL CALLBACK MotdepasseDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam) {
char Login[10]; char Password[16]; switch(mssg) { case WM_INITDIALOG: { InitDialogMotdepasse(hdlg); return 1; }
case WM_CTLCOLORSTATIC: { SetBkMode((HDC)wParam,TRANSPARENT); return (LONG)(LONG_PTR)hbrush; } case WM_CTLCOLORDLG: return (LONG)(LONG_PTR)hbrush;
case WM_COMMAND: switch(wParam) { case IDCANCEL: { //ferme les bases de données CloseDataBase(); //fin du dialog EndDialog(hdlg, 0); //return 0 return 0; } case IDENTRER: { //enregistre le champs IDC_Login dans login GetDlgItemText(hdlg,IDC_Login,Login,10);
//enregistre le champs IDC_Mp dans motdepasse GetDlgItemText(hdlg,IDC_Mp,Password,16); //vérification du mot de passe VerifMotdepasse(Login,Password,hdlg); return 0; } } } return 0; }
void InitDialogMotdepasse(HWND hdlg) {
//images dans boutons SendMessage(GetDlgItem(hdlg, IDENTRER) , BM_SETIMAGE, IMAGE_BITMAP, (LONG)(LONG_PTR) LoadBitmap(hinst, (LPCTSTR)IDB_Valider)); SendMessage(GetDlgItem(hdlg, IDCANCEL) , BM_SETIMAGE, IMAGE_BITMAP, (LONG)(LONG_PTR) LoadBitmap(hinst, (LPCTSTR)IDB_Quitte)); //chargement de l'icone SetClassLong(hdlg, GCL_HICON, (LONG)(LONG_PTR)LoadIcon(hinst, (LPCTSTR)IDI_SGCV));
}
BOOL CALLBACK BienvenueDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam) { switch(mssg) { case WM_INITDIALOG: //images dans boutons SendMessage(GetDlgItem(hdlg, IDENTRER) , BM_SETIMAGE, IMAGE_BITMAP,(LONG)(LONG_PTR) LoadBitmap(hinst, (LPCTSTR)IDB_Entrer)); SendMessage(GetDlgItem(hdlg, IDCANCEL) , BM_SETIMAGE, IMAGE_BITMAP, (LONG)(LONG_PTR)LoadBitmap(hinst, (LPCTSTR)IDB_Quitter)); //icone de la fenêtre SetClassLong(hdlg, GCL_HICON, (LONG)(LONG_PTR)LoadIcon(hinst, (LPCTSTR)IDI_SGCV)); //copy le hwnd de la fenêtre en cours dans hmain return 1;
case WM_CTLCOLORDLG: return (long)(LONG_PTR)hbrush;
case WM_CTLCOLORSTATIC: SetBkMode((HDC)wParam,TRANSPARENT); return (long)(LONG_PTR)hbrush;
case WM_COMMAND: switch(wParam) { case IDCANCEL: { SetCursor(LoadCursor(0, IDC_WAIT)); CloseDataBase(); SetCursor(LoadCursor(0, IDC_ARROW)); EndDialog(hdlg, 1); return 0; } case IDENTRER: EndDialog(hdlg, 0); DialogBoxParam(hinst, (LPCTSTR)IDD_Motdepasse, hdlg,MotdepasseDlgProc, 0); return 1; } } return 0; }
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE x, PSTR y, int z) { hinst = hInstance;
DialogBoxParam(hInstance, (LPCTSTR)IDD_Bienvenue, 0, BienvenueDlgProc, 0); return 0; }
|