begin process at 2010 02 10 07:38:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

plusieurs fenêtre win32


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

plusieurs fenêtre win32

jeudi 22 juillet 2004 à 11:05:30 | plusieurs fenêtre win32

maevasa

bonjour,


Voilà j'ai un programme qui ouvre sur un menu . Ce menu permet d'ouvrir plusieurs fenêtres mais lorque une est ouverte je ne peux pas cliquer sur mon menu.
Ce que je voudrais faire c'est pouvoir ouvrir plusieurs fenêtre à partir de mon menu.
Comment est ce que je peux faire ça?

merci d'avance
Maeva
jeudi 22 juillet 2004 à 13:29:08 | Re : plusieurs fenêtre win32

BruNews

Administrateur CodeS-SourceS
Maeva prendrait les membres de CS pour des extralucides ???
Quelques precisions stp si tu veux que qlqun t'apporte un debut de reponse.

ciao...
BruNews, Admin CS, MVP Visual C++
jeudi 22 juillet 2004 à 14:27:10 | Re : plusieurs fenêtre win32

arno03

lol je pense qu'elle parle d'un exemple que tu as dans mis Brunews, Petzold, avec le MDIDemo...

ArNo
vendredi 23 juillet 2004 à 15:34:49 | Re : plusieurs fenêtre win32

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;
}


vendredi 23 juillet 2004 à 15:55:28 | Re : plusieurs fenêtre win32

BruNews

Administrateur CodeS-SourceS
Dans BienvenueDlgProc, tu crees une fenetre fille de hdlg alors que tu la tues avant par EndDialog, un peu de coherence stp.
Je t'avais deja arrange cela dans ton ancien proj.
Regle ce point, si besoin reorganise le deroulement du prog.
On verra le reste ensuite.

ciao...
BruNews, Admin CS, MVP Visual C++


Cette discussion est classée dans : ouvrir, menu, fenêtre, win32


Répondre à ce message

Sujets en rapport avec ce message

Ouvrir une deuxième fenêtre Win32 sous Dev-C++ [ par olivier007700 ] Bonjour, Je souhaite ouvrir, depuis une première fenêtre, une deuxième fenêtre tout à fait classique.Quel est le code le plus simple pour ce faire ?Me [C++ Win32] un menu avec une fenêtre Dialog [ par F0ra ] Je n'arrive pas à afficher un menu avec une fenêtre Dialog en C++ Win32Comme ceci :http://pages.cpsc.ucalgary.ca/~carman/481/examples/vb.net/menus.2.j problème affichage fenêtres API WIN32 [ par yepla75 ] Bonjour,Je suis nouveau et j'espère poster au bon endroit...Je débute la programmation C / API WIN32 et je veux faire un programme qui affiche une fen Comment mettre une icone (contenue dans les ressources) en plus du nom du "sous-menu" dans un menu? En programmation API WIN32 en C. [ par ndubien ] Salut, Je cherche comment mettre une icone en plus du nom du "sous-menu" dans un menu en programmation API WIN32 en C.Dans le menu si de win32 fenêtre pas déplaçable [ par snpier wolf ] salut à tous  enfaite je débute et j'ais deuxquestion à vous pouser.voila j'ai créé un bou de code et quand je le compile la fenêtre apparait mais il [Win32] Changer le texte d'un menu aprés création [ par goebish ] Bonjour,Je cherche à changer les textes d'un menu aprés sa création:voila comment je créé mon menu:[code]m_hMenu = ::CreateMenu();HMENU hMenuDrive = : ouvrir une dialog box d'apres un sous menu [ par skouby ] bonjours, simple d'apparence pour moi c'est le case-tete   j,ai fais un MFC App simple document avec menu , maintenant je voudrais que lorsque je Toolbar win32 [ par zibo3 ] Bonjour,J'ai créé une toolbar et elle fonctionne très bien mais quand je double clique dessus, une fenêtre de paramètrage de la toolbar apparait furti créer un menu contextuel dans une fenêtre de dialogue [ par walid05 ] dans une fenêtre de dialogue, j'ai crée un menumais je veux ajouter un menu contextuel dans la fenêtre, qui contient 3 éléments : enregistrer, annuler Ouvrir une sous-fenêtre depuis un bouton [Dev-cpp] [ par by_rabbit_08 ] bonour! J'ai posté une question sur le forum l'autre, mais a voir, elle n'a pas été bien compris ... Enfait, j'imagine que pour beaucoup de monde, c'e


Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales