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

MFC Discussion :

Insertion d'une nouvelle classe dans un programme


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Par défaut Insertion d'une nouvelle classe dans un programme
    Bonjour,

    J'ai un programme existant auquel j'ai ajouter une nouvelle classe type MFC mais
    la classe generee differe des autres classes existantes en effet au niveau du fichier header dans la nouvelle classe j'ai un code qui ressemble a ceci:

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
     
    .....
    #pragma once
     
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
     
     
     
    namespace 99090 {
     
    	/// <summary>
    	/// Description résumée de ViewTestStereo
    	/// </summary>
    	public ref class ViewTestStereo : public System::Windows::Forms::UserControl
    	{
    	public:
    		ViewTestStereo(void)
    		{
    			InitializeComponent();
    			//
    			//TODO : ajoutez ici le code du constructeur
    			//
    		}
     
    	protected:
    		/// <summary>
    		/// Nettoyage des ressources utilisées.
    		/// </summary>
    		~ViewTestStereo()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
     
    	private:
    		/// <summary>
    		/// Variable nécessaire au concepteur.
    		/// </summary>
    		System::ComponentModel::Container ^components;
    		CInit				m_Init;
     
    #pragma region Windows Form Designer generated code
    		/// <summary>
    		/// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
    		/// le contenu de cette méthode avec l'éditeur de code.
    		/// </summary>
    		void InitializeComponent(void)
    		{
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    		}
    #pragma endregion
    	};
    }
    #pragma once
     
     
    // Mode formulaire CViewTestStereo
     
    #include "init.h"
    #include "Init.h"
    #include "afxwin.h"
    #include "Security.h"
    #include "test.h"
     
     
    class CViewTestStereo : public CFormView
    {
    	DECLARE_DYNCREATE(CViewTestStereo)
     
    protected:
    	CViewTestStereo();           // constructeur protégé utilisé par la création dynamique
    	virtual ~CViewTestStereo();
    	void Fonction_Stereo_test();
    .......

    et dans les anciennes classes j'ai des codes qui ressemblent a ceci:

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
     
    /*! \file ViewTestWago.h
     *      \brief Le fichier contient le header de la classe CViewTestWago: 
     *              \n On y retrouve le(s) constructeur(s), le destructeur ainsi que
     *              le prototype des fonctions membres et les variables membres de la classe.
    */
     
    /*! \class CViewTestWago
     *  \brief Gestion du test du module Wago
     *  \version 1.0
     *  \date    21/02/2006
    */
     
    #if !defined(AFX_VIEWTESTWAGO_H__996A3CD9_50B1_41A9_A902_258F09EA6F64__INCLUDED_)
    #define AFX_VIEWTESTWAGO_H__996A3CD9_50B1_41A9_A902_258F09EA6F64__INCLUDED_
     
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
     
    #ifndef __AFXEXT_H__
    #include <afxext.h>
    #endif
     
    #include "test.h"
     
    /*! \def BASE_TIME_WAGO_OK 
     *      \brief représente la base de temps lorsque le test est OK
    */
    #define BASE_TIME_WAGO_OK			1000
     
    /*! \def BASE_TIME_WAGO_NOK 
    *       \brief représente la base de temps lorsque le test est KO
    */
    #define BASE_TIME_WAGO_NOK			5000
     
     
    class CViewTestWago : public CFormView
    {
    protected:
    	CViewTestWago();           // protected constructor used by dynamic creation
    	DECLARE_DYNCREATE(CViewTestWago)
     
    // Form Data
    public:
    	//{{AFX_DATA(CViewTestWago)
    	enum { IDD = IDD_TESTWAGO };
     
    .....

    -Ma premiere question que represente ce morceau de code generer?

    #if !defined(AFX_VIEWTESTWAGO_H__996A3CD9_50B1_41A9_A902_258F09EA6F64__INCLUDED_)
    #define AFX_VIEWTESTWAGO_H__996A3CD9_50B1_41A9_A902_258F09EA6F64__INCLUDED_


    -Et ma deuxieme question:

    Apres insertion de ma classe, j'ai aussi, par la suite, ajoutee dans un 'DIALOG' commun a 4 classes un bouton pour cette nouvelle classe que je viens de creer et j'ai donc maintenant 5 boutons dans ce dialog. La compilation a bien marchee mais lors du lancement du programme lorsque j'affiche le 'DIALOG' commun, le bouton que j'avais placer ne figure pas (zone de gris a l'emplacement) alors que les boutons des anciennes classes apparaissent et il y a un message :


    "Debug assertion failed :
    File: f:/rtm/vctools/vc7libs/shi/atlmfc/src/mfc/winctrl1.cpp
    Line: 84


    Que dois-je faire pour eviter ce probleme ?


    Merci

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    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 393
    Par défaut
    Ce n'est pas une classe MFC que tu viens d'insérer, c'est une classe .Net...
    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
    Membre confirmé
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Par défaut
    Rebonjour,

    En fait je me suis rendu compte que je n'avais pas ajouter les variables du bouton de ma nouvelle classe dans la fonction OnInitialUpdate() de la classe associee au 'DIALOG' commun.

    en ayant rempli comme il se doit de la meme maniere que celles des autres classes, j'obtiens cette fois une fois mon programme lancer lors du click sur un bouton affichant le 'DIALOG' commun un message d'erreur :



    rtm/vctools/vc7libs/ship/atlmfc/src/mfc/winbtn.cpp
    Line : 62



    C'est encore pire qu'avant car maintanant le 'DIALOG' commun n'apparait meme pas .

    Comment dois je proceder pour bien ajouter cette classe ?


    Merci de m'aider

  4. #4
    Membre confirmé
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Par défaut
    Ok,

    Donc j'aurais inserer une classe .NET mais je pense que l'erreur vient du fait que le programme avait ete creer en Visual C++6 mais actuellement j'ai creer cette classe avec Visual Studio 2005.

    Comment bien implementer ma classe dans ce cas de figure?

    Merci

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Par défaut
    Il faudrait peut-être déjà savoir si tu souhaites continuer à faire du C++/MFC ou bien porter ton projet en .NET ?

  6. #6
    Membre confirmé
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Par défaut
    Non non,

    je reste vraiment sur C++/MFC le programme a la base c'est du MFC mais je pensait pas qu'avec Visual studio 2005 j'allais generer du code .NET?

    Et donc comment faire?

    Merci

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    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 393
    Par défaut
    Sous VS 2005 NON-Express, tu peux tout-à-fait faire des programmes natifs basés sur les MFC...
    Et sur tous les VS2005, tu peux faire des programmes Windows natifs. Le .Net n'est pas obligatoire.
    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.

  8. #8
    Membre confirmé
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Par défaut Classe et fichiers transparents sous Visual Studio 2005
    Bonjour,

    Il s'agit d'un probleme assez etrange: j'ai tout d'abord cree une boite de Dialogue de type Form. Sur ce DialogForm, en faisant click droit j'ai ajouter (associer) une classe et j'ai ajouter du code aux fichiers header et source de cette classe. Et cette classe est bien apparue sur l'onglet Classe du workspace, jusqu'ici pas de probleme.

    Toutes ces operations je les avez faites en ouverture mode Workspace (.dsw) du programme.
    Donc j'ai sauver le workspace et puis je l'ai fermer. Mais etrangement lorsque j'ai reouvert ce workspace la classe que j'avais creee n'y etait plus mais mon dialogForm (IDD_MONDIALOGUEFORM) etait bien present donc j'ai essayer a nouveau d'ajouter ma classe a ce dialogform en saisissant le meme nom une fenetre est apparue me disant que maclasse.h existe deja et me demande si je veux fusionner avec l'existant (idem pour le fichier source)?
    J'ai bien regarder dans l'onglet FileView mais ni le fichier .h ni le fichier .cpp n'apparaisse!

    Donc ce que j'ai fait c'est d'ouvrir le dossier ou se trouve tous ces fichiers pour voir si je vois ces fichiers avec l'explorer windows et la par contre je les voit bien ils existent?!

    J'ai recommence plusieurs fois ces etapes et toujours la meme chose la classe est transparente on dirait!

    Ma question: pourquoi ces fichiers qui existent n'apparaisse pas lorsque j'ouvre Visual Studio 2005 ?

    -Est-ce du au fait qu'une fois j'avais coder mon programme lorsque je l'avais ouvert en mode Solution (.sln)? Et donc devrais-je pas coder en mode solution mais en mode workspace ou vice versa?

    -Est-ce du au fait que je devais d'abord creer ma classe puis associer a cette classe l'objet Dialogform?


    Merci
    il n'est pas utile de multiplier les posts sur le même sujet, Merci Farscape

  9. #9
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    ton problème est étrange ,si quand tu associes la classe a la fenêtre il te répond que la classe existe déjà , c'est que ton projet tient déjà compte de cette classe et donc des fichiers s'y rapportant...
    tu peux faire une copie d"écran (et la poster ) de la partie du gestionnaire de projet pour voir ?


  10. #10
    Membre confirmé
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Par défaut
    Bonjour,

    Cette fois j'ai ouvert lle programme avec le fichier projet (.dsp)
    mais toujours pas de classe qui apparait. Apres avoir cliquer sur : Projet -> Afficher tous les fichiers.

    Je m'apercois que dans la fenetre d'espace de travail sous l'onglet exploreur de solutions que les fichiers apparaisse avec des intrerdits. (voir fichier attache)

    Il sagit de la classe CViewTestStereo.


    Merci

  11. #11
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    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 393
    Par défaut
    Regarde si tu peux régler "inclus dans le projet" à true.

    PS: Pourquoi avoir déformé l'image???
    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.

  12. #12
    Membre confirmé
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Par défaut
    Bonsoir,

    Oui c'etait bien ca le probleme en ayant fais "inclus dans le projet" e true
    ca a bien fonctionner et j'ai bien enregsitrer. Mais lorsque j'ai ferme puis reouvert en mode workspace (.dsw) ca a fait le meme probleme. Pour eviter ce probleme j'ai du reouvrir le programme en mode projet (.dsp) et la ca fonctionne de merveille.

    C'est quoi l'erreur que j'ai commise? l'ouverture en mode solution et/ou workspace ne permet peut etre pas d'ajouter une classe donc on devra sans doute tous le temps ouvrir avec le fichier .dsp le programme?

    Oui pour l'inclinaison c'est le programme printkey qui par defaut incline l'image, je ne sais pas pourquoi.

    Merci

Discussions similaires

  1. Etapes de création d'une nouvelle classe dans NS-2
    Par blanche lamignone dans le forum Administration
    Réponses: 0
    Dernier message: 25/09/2013, 12h27
  2. Réponses: 3
    Dernier message: 03/01/2009, 18h43
  3. Insertion d'une nouvelle ligne dans la table
    Par boby15000 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 20/05/2008, 17h49
  4. Appelé une class dans le programme main
    Par nistelsof dans le forum Langage
    Réponses: 28
    Dernier message: 06/06/2007, 09h12
  5. Réponses: 18
    Dernier message: 26/07/2006, 14h51

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