Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1202 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Interface graphique à partir de fichiers de ressource

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Interface graphique à partir de fichiers de ressource

n°1161903
sausagerol​l
Posté le 27-07-2005 à 16:56:03  profilanswer
 

J'ai à réaliser une interface graphique pour un programme. Mais ce que j'aimerais bien faire, c'est créer une fenètre à partir d'un template situé dans un fichier de ressource. J'ai pas envie de déclarer tous mes contrôles et taper leur CreateWindow() à chacun...  
 
Dans le projet Win32 par défaut de Visual C++ j'ai vu qu'il utilisait une fonction DialogBox() pour afficher une fenêtre définie par un template. Cependant, cette fenêtre était fille d'une fenêtre principale crée avec tout le bataclan RegisterClass, etc.  
 
Ce que je voudrais savoir, c'est si c'est possible de créer sa fenêtre principale de la sorte, en se référant à un fichier de ressource pour les contrôles d'interface et leur placement sur la fenêtre. Et si c'est possible, comment ?

mood
Publicité
Posté le 27-07-2005 à 16:56:03  profilanswer
 

n°1162066
slash33
Posté le 27-07-2005 à 18:35:13  profilanswer
 

A l'exception des menus, de l'icône et du titre de la fenêtre (donc un CFrameWnd), l'éditeur de ressource ne te sera pas d'une grande aide. Enfin si quelqu'un sait faire ça, je suis preneur.

n°1162176
sausagerol​l
Posté le 27-07-2005 à 20:22:14  profilanswer
 

Dans l'éditeur de source on peut facilement créer des boîtes de dialogue. Je ne vois pas pourquoi on aurait pas le droit d'utiliser ce genre de boîte de dialogue comme fenêtre principale, quand vous faites une interface graphique en C++, vous tappez toute l'affaire ?  
En fait je l'ai déjà fait mais je suis très paresseux :P
Tellement que ça me démange chaque fois d'utiliser Visual Basic... Mais je ne peux pas dans mon cas.

n°1162204
sausagerol​l
Posté le 27-07-2005 à 20:52:47  profilanswer
 

Ca fonctionne en utilisant DialogBox(), une fonction raccourci (macro) de Visual C++ qui appelle RegisterClass et CreateWindow pour vous. Ca fonctionne mais c'est pas la solution la plus élégante...
 
Et j'utilise l'API win32 (windows.h), pas MFC. Je vais essayer de me renseigner la dessus d'ailleurs.


Message édité par sausageroll le 27-07-2005 à 21:14:58
n°1162327
CosmoSys
Posté le 27-07-2005 à 23:10:44  profilanswer
 

J'utilise les ressources VC++ pour mes applications et l'APIWIN32.
En utilisant DialogBox(),il faut passer le numéro de ressource avec MAKEINTRESSAOURCE et définir une procédure DialogProc pour intercepter les messages.
 

Code :
  1. int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
  2. {return DialogBox(hInstance,MAKEINTRESOURCE(IDD_MADIALOGUE),0,MaDialogueProc);
  3. }

n°1162546
slash33
Posté le 28-07-2005 à 09:01:56  profilanswer
 

C'est une boîte de dialogue (CDialog like) ou une fenêtre (CFrameWnd ou dérivée) l'interface principale de ton application?
 
Pour une fenêtre, je ne connais aucun moyen de faire du "tout en un" avec l'éditeur de ressources. Pour un dialogue, tu as CDialog(CWnd* pParentWnd, UINT nTemplateID). Mais l'assistant de Visual te permet de créer une application qui a pour interface principale un dialogue (modal).


Message édité par slash33 le 28-07-2005 à 09:03:03
n°1162824
sausagerol​l
Posté le 28-07-2005 à 11:36:10  profilanswer
 

C'est sensé être une fenêtre, et comme je l'ai dit ça fonctionne avec la méthode qu'a présenté CosmoSys. Mais ça m'étonne qu'il n'existe pas une autre fonction du genre.
 
Mais si je suis pas le seul à utiliser DialogBox(), ça me rassure :D
 
Concernant CDialog, c'est une classe qui appartient aux MFC (Microsoft Fondation Classes). Bien que ça ait l'air intéressant à utiliser, je préfère l'API Win32.
 
A ce propos, j'ai trouvé un exemple dans l'aide, qui stipule qu'on peut utiliser une instance du dit CDialog comme fenêtre principale sans inconvénients.
 
J'en convient que c'est pareil avec DialogBox()...
 
Je pense que mon problème est résolu :P
 
Merci tout le monde !

n°1163728
adm1n1s7ra​7eur
Posté le 28-07-2005 à 18:02:56  profilanswer
 


tu peux utiliser un autre fonction : il s'agit de  
 
CreateDialog() .
A++

n°1163741
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 28-07-2005 à 18:21:51  profilanswer
 

adm1n1s7ra7eur a écrit :

tu peux utiliser un autre fonction : il s'agit de  
 
CreateDialog() .
A++


diantre ! mais tu t'arrètes jamais toi [:petrus75]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1163788
slash33
Posté le 28-07-2005 à 18:50:37  profilanswer
 

Mais non il faut qu'il ai le dernier mot.

mood
Publicité
Posté le 28-07-2005 à 18:50:37  profilanswer
 

n°1164192
adm1n1s7ra​7eur
Posté le 29-07-2005 à 01:26:39  profilanswer
 

 
c'est grace à mes connaissances  :sol:  .
 
vous voyez : ce n'est pas question d'age ou d'experience :non: .
 
MAIS d'intelligence   :)  
 
:D

n°1165301
CosmoSys
Posté le 29-07-2005 à 22:46:13  profilanswer
 

Une petite information concerna

Code :
  1. Une petite c

n°1165303
CosmoSys
Posté le 29-07-2005 à 22:49:10  profilanswer
 

Excuser, mais j'ai du appuyer sur une mauvaise touche.
Pour revenir à CreateDialog(), on peut l'utiliser mais il est plus compliquer, contrairement à DialogBox() et compagnie, CreateDialog() n'est pas bloquant et donc il faut gérer soit même la bouche de traitement des messages! :pfff:  

n°1165314
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 29-07-2005 à 23:30:32  profilanswer
 

adm1n1s7ra7eur a écrit :

c'est grace à mes connaissances  :sol:  .


tes quoi ?
 

adm1n1s7ra7eur a écrit :


vous voyez : ce n'est pas question d'age ou d'experience :non: .
 
MAIS d'intelligence:)  
 
:D


de quoi ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°1165336
adm1n1s7ra​7eur
Posté le 30-07-2005 à 00:22:30  profilanswer
 

Citation :


adm1n1s7ra7eur a écrit :
 
c'est grace à mes connaissances  :sol:  .  
 
 
 
tes quoi ?  
 
adm1n1s7ra7eur a écrit :
 
 
vous voyez : ce n'est pas question d'age ou d'experience :non: .  
 
MAIS d'intelligence:)  
   
:D
 
 
de quoi ?


 :kaola:  

Citation :


Excuser, mais j'ai du appuyer sur une mauvaise touche.  
Pour revenir à CreateDialog(), on peut l'utiliser mais il est plus compliquer, contrairement à DialogBox() et compagnie, CreateDialog() n'est pas bloquant et donc il faut gérer soit même la bouche de traitement des messages! :pfff:  


 

Code :
  1. HWND CreateDialog(
  2.   HINSTANCE hInstance_Of_Application, 
  3.   MAKEINTRESOURCE(ID_OF_YOUR_DIALOG_BOX),                     
  4.   HWND hWnd_OF_Parent_window,     
  5.   DLGPROC Your_Procedure
  6.                      );


 la fonction CreateDialog retourne le handle de la boite de dialog  
 
en cas de succes  :)  
 :sol:  


---------------
n'editez pas !!!  
n°1165351
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 30-07-2005 à 01:12:05  profilanswer
 

adm1n1s7ra7eur a écrit :

[

Code :
  1. HWND CreateDialog(
  2.   HINSTANCE hInstance_Of_Application, 
  3.   MAKEINTRESOURCE(ID_OF_YOUR_DIALOG_BOX),                     
  4.   HWND hWnd_OF_Parent_window,     
  5.   DLGPROC Your_Procedure
  6.                      );


 la fonction CreateDialog retourne le handle de la boite de dialog  
 
en cas de succes  :)  
 :sol:


et après ? t'as pas l'impression de raconter n'importe quoi là ? arrète donc de dire des conneries sur tous les topics sur lesquels tu passes, je vais finir par t'éjecter !
 
cosmosys & sausageroll >> pourquoi vous n'utilisez pas la fonction DialogBoxParam(), qui à mon avis est plus adaptée ?
http://msdn.microsoft.com/library/ [...] xparam.asp


Message édité par Harkonnen le 30-07-2005 à 01:12:29
n°1165358
adm1n1s7ra​7eur
Posté le 30-07-2005 à 01:32:28  profilanswer
 

Citation :


et après ? t'as pas l'impression de raconter n'importe quoi là ?  
 
arrète donc de dire des conneries sur tous les topics sur lesquels  
 
tu passes, je vais finir par t'éjecter !  


mais qui entre nous dit les conneries    :heink:   ?
 
c'est toi et tes amis      !!!
 
je sais pas pourquoi vous essayer de m'enerver  :kaola:  
 
en plus ,j'ai essaye d'aider CosmoSys  ,
 
CosmoSys : tu doit savoir que DialogBox et CreateDialog sont  
 
presque similaires , la seule difference c'est dans les valeurs  
 
retournés :o  
 
une derniere fois : fiche moi la paix monsieur Harkonnen S'IL TE  
 
PLAIT .
 
 
 
 
 
 
 


---------------
n'editez pas !!!  
n°1165365
antp
Super Administrateur
Champion des excuses bidons
Posté le 30-07-2005 à 01:47:09  profilanswer
 

adm1n1s7ra7eur a écrit :


une derniere fois : fiche moi la paix monsieur Harkonnen S'IL TE  
 
PLAIT .


 
S'il t'ennuie tu n'as qu'à le dénoncer à un modérateur ;)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1165367
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 30-07-2005 à 01:51:12  profilanswer
 

adm1n1s7ra7eur a écrit :


mais qui entre nous dit les conneries    :heink:   ?
 
c'est toi et tes amis      !!!


[:rofl]
 

adm1n1s7ra7eur a écrit :


je sais pas pourquoi vous essayer de m'enerver  :kaola:  
 
en plus ,j'ai essaye d'aider CosmoSys  ,


on n'essaye pas de t'énerver, mais juste de te faire comprendre que tu es à coté de la plaque dans chaque réponse que tu donnes, et je te le prouve :
 

adm1n1s7ra7eur a écrit :


CosmoSys : tu doit savoir que DialogBox et CreateDialog sont  
 
presque similaires , la seule difference c'est dans les valeurs  
 
retournés :o  


tout faux ! DialogBox() créé une boite de dialogue modale, et possédant sa propre pompe à messages. CreateDialog() créé une boite de dialogue non modale et dont la pompe à messages doit être implémentée manuellement.
 

adm1n1s7ra7eur a écrit :


une derniere fois : fiche moi la paix monsieur Harkonnen S'IL TE  
 
PLAIT .


tant que tu raconteras des énormités de ce genre, c'est hors de question que je te fiche la paix


---------------
J'ai un string dans l'array (Paris Hilton)
n°1165368
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 30-07-2005 à 01:52:37  profilanswer
 

antp a écrit :

S'il t'ennuie tu n'as qu'à le dénoncer à un modérateur ;)


[:totoz]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1165455
adm1n1s7ra​7eur
Posté le 30-07-2005 à 11:39:43  profilanswer
 

Citation :


adm1n1s7ra7eur a écrit :
 
 
CosmoSys : tu doit savoir que DialogBox et CreateDialog sont  
 
presque similaires , la seule difference c'est dans les valeurs  
 
retournés    
 
 
 
tout faux ! DialogBox() créé une boite de dialogue modale, et possédant sa propre pompe à messages. CreateDialog() créé une boite de dialogue non modale et dont la pompe à messages doit être implémentée manuellement.  
 


ça n'a ete qu'une petite comparaison qui demontre comment utiliser  
 
CreateDialog() pck notre ami CosmoSys a dit :

Citation :


on peut l'utiliser mais il est plus compliquer


a part le cote de la declaraction ,CreateDialog cree une boite de  
 
dialog non modal et DialogBox cree une boite de dialog  
 
modale .pour savoir plus sur les differences , essaie de chercher  
 
sur le NET .


---------------
n'editez pas !!!  
n°1165508
slash33
Posté le 30-07-2005 à 13:24:30  profilanswer
 

Tu continues encore à te prendre la tête Harko? Quel courrage!

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Interface graphique à partir de fichiers de ressource

 

Sujets relatifs
[ASP.NET]librairie graphiqueCréation de doc ou pdf à partir d'un modele...
droits sur des fichiersliste générée a partir de champs contenus dans 2 tables
Boucle pour enregistrer plusieur fichierscompresser des fichier a partir des commandes dos
Upload de gros fichiers sans acces au FTPpremonade dans un monde a partir dun jeux
Upload de gros fichiers sans acces au FTP[php-Xoops]Probleme de fichiers phpxx.tmp qui saturent le dossier temp
Plus de sujets relatifs à : Interface graphique à partir de fichiers de ressource


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR