IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

Créer un écran avec VC++ 6.0


Sujet :

Visual C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Par défaut Créer un écran avec VC++ 6.0
    Bonjour,
    J'utilise MS Visual C++ 6.0 je ne vois pas de boite à outils comme dans Visual Basic pour créer des écrans par drag and drop. Comment fait on pour dessiner un écran ? Est-ce un outils à part, une librairie à ajouter ou quoi ou qu'est-ce ?
    Toute aide bienvenue.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Qu'appelles-tu un écran ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    je te conseille de regarder ce tutoriel http://farscape.developpez.com/tutor...arrer-mfc-vc6/

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Par défaut Merci c'est bien ce que je voulais + question Dll
    Merci, je pensais qu'il y avait une possibilité sans utiliser les MFC.
    Le coeur de mon problème est que j'ai déjà créée une Dll (c'est ce qu'on m'avait demandé) de type "Win 32 Dynamic libray" or maintenant cette Dll doit afficher des écrans que je dois créer :
    Faut-il reprendre l'ensemble dans une Dll MFC ou y a t-il une autre solution ?

    Merci encore pour le premier point.

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Ça dépend de ce que tu appelles "un écran"...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    sans MFC, tu peux regarder ce tutoriel
    http://bob.developpez.com/tutapiwin/
    mais ca sera loin de VB

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Par défaut La solution sans MFC semble Ok
    Effectivement, après vérif je suis sensé ne pas utiliser les MFC.
    Ce qu'il y a dans le tuto correspondant semble suffire. Je vais faire des tests.

    Merci une nouvelle fois nico-pyright(c)

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    C'est un plaisir de se sentir lu...

    Donc, "un écran" ou toi, c'est juste une fenêtre/boîte de dialogue/formulaire ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 528
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 528
    Par défaut
    Citation Envoyé par styron
    Le coeur de mon problème est que j'ai déjà créée une Dll (c'est ce qu'on m'avait demandé) de type "Win 32 Dynamic libray" or maintenant cette Dll doit afficher des écrans que je dois créer :
    Faut-il reprendre l'ensemble dans une Dll MFC ou y a t-il une autre solution ?

    Merci encore pour le premier point.
    je doute très fortement qu'une dll puisse afficher des écrans !
    c'est une extension de code.
    Parce que je ne sais pas si la dll recevra jamais des message comme WM_PAINT ,WM_SIZE etc..par l'OS.
    Tu dois pouvoir afficher une DialogBox mais c'est pas certain

  10. #10
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Il n'y a pas de différence entre le fait qu'une fenêtre soit créée par une fonction d'une DLL ou de l'exe.
    L'important, c'est qu'il y a une boucle de message dans le thread auquel appartiennent les fenêtres.

    D'ailleurs, les Common Controls sont dans une DLL, les Common Dialog Boxes dans une autre...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Par défaut
    Si, Médinoc tu es lu et un écran c'est bien ce que tu décrits. Par contre dans le mesure où je ne vais gérer qu'une seule fenêtre qui sera modale, est il indispensable d'utiliser un thread ?

    Pour Mat.M sur le fait d'afficher une message box par la Dll ça ne pose aucun problème.

    Merci à vous 2.

  12. #12
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Citation Envoyé par styron
    Par contre dans le mesure où je ne vais gérer qu'une seule fenêtre qui sera modale, est il indispensable d'utiliser un thread ?
    Ça, ça sent l'idée reçue venue du monde unixoïde :
    Sous Windows, tout processus est constitué d'un ou plusieurs threads. Un processus a donc toujours au moins un thread, celui dans lequel s'exécute le main() ou WinMain().

    Ensuite, c'est à toi de choisir où doit se trouver la boucle de messages.
    • Elle peut être dans des fonctions de ta DLL, si tu y places exclusivement la boucle de messages, ou bien si tu y appelles DialogBox() ou DialogBoxParam() (les Common Dialogs sont généralement comme ça);
    • Ou bien elle peut être dans le programme utilisateur, si tes fonctions de la DLLs appellent CreateDialog() ou si tu laisses directement la ressource et la DialogProc à disposition de l'appelant.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Par défaut
    Ok, merci encore.
    Je continue mes tests et vous tiens au courant.

  14. #14
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 528
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 528
    Par défaut
    Citation Envoyé par Médinoc
    Elle peut être dans des fonctions de ta DLL, si tu y places exclusivement la boucle de messages, ou bien si tu y appelles DialogBox() ou DialogBoxParam() (les Common Dialogs sont généralement comme ça);
    Je doute que pour une fenetre autre qu'une fenetre de type Dialog ( c.a.d.du genre SDI ) on puisse gerer une boucle de message
    Styron une MessageBox c'est systeme

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Par défaut Pb paramètre DialogBox()
    Je fais un test avec DialogBox() mais j'ai un pb avec le premier paramètre. Hors Dll on fait comme ça:

    int APIENTRY WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow)
    {
    DialogBox(hInstance,(LPCTSTR)IDD_MAIN,NULL,(DLGPROC)MainProc);

    Mais que met-on si l'appel à Dialogbox() est dans une Dll ?
    Sachant qu'en entrée de la fonction (de la Dll) qui fait cet appel je reçois bien un handle sur la fenêtre appelante mais apparemment ce n'est pas ce qu'il faut mettre.

  16. #16
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 528
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 528
    Par défaut
    Apres certains vont nous dire mordicus que cela marche
    eh bien avec DllMain une HINSTANCE est passee egalement comme tu le dis ;
    Essaie avec ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    BOOL CALLBACK  DialogProc( HWND hwndDlg,  UINT uMsg, WPARAM wParam, LPARAM lParam  );
     
    BOOL APIENTRY DllMain( HANDLE hModule, 
                           DWORD  ul_reason_for_call, 
                           LPVOID lpReserved
    					 )
    {
     
    	DialogBoxParam(	(HINSTANCE)hModule,MAKEINTRESOURCE(IDD_DIALOG1),NULL , DialogProc,NULL );
    	return TRUE;
    }
     
    BOOL CALLBACK  DialogProc( HWND hwndDlg,  UINT uMsg, WPARAM wParam, LPARAM lParam  )
    {
    	switch ( uMsg ) 
    	{
    		//
    		// Initialize dialog
    		//
    		case WM_INITDIALOG:
    		break;
    		case WM_COMMAND:
    			switch (LOWORD(wParam)) 
    			{
    				case IDCANCEL:				
    					EndDialog(hwndDlg , 0 );
    				break;
    			}
    		break;
     
    	}
    	return 0;
    }
    Il faut creer un fichier .rc avec une Dialog IDD_DIALOG1 comme ressource

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Par défaut
    Si je mets NULL ça ne donne rien.

    Ce que moi j'ai en entrée de la Dll c'est ça :

    BOOL APIENTRY DllMain( HANDLE hModule,
    DWORD ul_reason_for_call,
    LPVOID lpReserved )

    Faut il utiliser hModule comme 1ier paramètre de DialogBox () ?
    Le pb c'est qu'il n'est pas connu dans la fonction de la Dll réalisant le DialogBox(). Comment puis je le récupérer ?

  18. #18
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 528
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 528
    Par défaut
    1000 excuses le code que j'ai donne n'est pas bon ; il faut creer une fonction dans la dll qui sera exportee et a cette fonction on passera un HINSTANCE et un HWND de programme parent c'est tout bete.
    Cette fonction appelera CreateDialogBox ou CreateDialogBoxParam...
    Elle sera appelee dans le programme qui charge la dll
    c'est bete comme choux !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    BOOL CALLBACK  DialogProc( HWND hwndDlg,  UINT uMsg, WPARAM wParam, LPARAM lParam  );
     
    BOOL APIENTRY DllMain( HANDLE hModule, 
                           DWORD  ul_reason_for_call, 
                           LPVOID lpReserved
    					 )
    {
    	return TRUE;
    }
     
    void FonctionExportee_A_appeler(HINSTANCE hinst,HWND hwndParent)
    {
    	DialogBoxParam(	hinst,MAKEINTRESOURCE(IDD_DIALOG1),hwndParent, DialogProc,NULL );
     
     
    }
    BOOL CALLBACK  DialogProc( HWND hwndDlg,  UINT uMsg, WPARAM wParam, LPARAM lParam  )
    {
    	switch ( uMsg ) 
    	{
    		//
    		// Initialize dialog
    		//
    		case WM_INITDIALOG:
    		break;
    		case WM_COMMAND:
    			switch (LOWORD(wParam)) 
    			{
    				case IDCANCEL:				
    					EndDialog(hwndDlg , 0 );
    				break;
    			}
    		break;
     
    	}
    	return 0;
    }

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Par défaut
    Merci Mat.M pour ton aide je n'avais pas vu ton code lors de mon dernier post
    mais ma dernière question reste valable !

  20. #20
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 528
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 528
    Par défaut
    Re regarde j'ai fait une modif de derniere minute

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/05/2012, 10h41
  2. Créer un fond d'écran avec plusieurs clips (images)
    Par arnaud_verlaine dans le forum Flash
    Réponses: 3
    Dernier message: 29/08/2006, 11h45
  3. Réponses: 3
    Dernier message: 21/09/2003, 15h52
  4. créer un noeuds avec des paramétres
    Par Toxine77 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/01/2003, 16h11
  5. [CR] Est il possible de créer des univers avec Seagate Info?
    Par Frank dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/06/2002, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo