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

Windows Forms Discussion :

Démarer une IHM avec Visual studio 2010 et WinForms [Débutant]


Sujet :

Windows Forms

  1. #1
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut Démarer une IHM avec Visual studio 2010 et WinForms
    Bonjour:

    je commence une migration d'un projet bcb de 50 000 Lines of code vers Visual Studio. J'ai pas mal exploré le sujet et je butte sur un exemple très simple.
    J'ai appris après quelques essais que je pouvais utiliser WinForm, et j'ai ouvert un projet de test pour maquetter mon besoin.
    Je vais d'abord illustrer mon état de départ:
    J'ai crée une solution Chargeur de specification qui a pour nom de projet Test6.cpp ce projet est de type "Projet Win 32".

    Je vais parler maintenant de mon besoin. J'ai besoin au plus haut niveau d'avoir une tool bar qui ait deux tab: File et Quit.
    J'ai également besoin que une fois le fichier chargé une progress bar indique l'avancement du traitement.
    J'ai enfin besoin que en cas de sélection du tab File, on ouvre une nouvelle fenêtre qui affiche le contenu d'un répertoire pointé par l'application, ainsi que quelques données statiques.
    Dans le mode projet win 32 J'ai la structure de haut niveau avec une tool box a deux tab File et about, ok d'autant plus que le file sort sur quit, mais je n'ai rien dans ma tool box pour ajouter des contrôles. par contre il y a un main plus conséquent avec une pompe à message qui peut être utilisée.
    Je n'ai pas trouvé dans ce mode ou on pouvait ajoute r un choix dans le menu file.
    je n'ai pas trouvé non plus comment appeler la form ouvrir et également comment créer une progress bar? A fortiori j'aurais besoin d'ajouter dans la form ouvrir une boite pointant sur le répertoire courant et diffénret chaps rich Edit. le savoir serait

  2. #2
    Membre confirmé

    Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2004
    Messages : 178
    Points : 645
    Points
    645
    Par défaut
    Bonjour, je vais te répondre un peu en vrac:

    - Je vais parler maintenant de mon besoin. J'ai besoin au plus haut niveau d'avoir une tool bar qui ait deux tab: File et Quit.
    C'est le composant MenuStrip dans la boite à outil. Fais le glisser dans ton ihm et personnalise le.

    J'ai également besoin que une fois le fichier chargé une progress bar indique l'avancement du traitement.
    C'est le composant ProgressBar qui fait ça. Pour gérer son avancement, tu vas devoir le coupler à un BackGroundWorker.
    Voici un exemple simple pour gérer ça : http://www.codeproject.com/Tips/8331...ogressBar-demo

    J'ai enfin besoin que en cas de sélection du tab File, on ouvre une nouvelle fenêtre qui affiche le contenu d'un répertoire pointé par l'application, ainsi que quelques données statiques.
    Il s'agit du composant OpenFileDialog. Cherche également, il ya des exemples d'utilisation.

    Je n'ai guère compris le reste de ton message.

  3. #3
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut La tool box est vide
    Bonjour,
    D'abord dans le contexte de projet dans lequel je suis je n'ai rein dans la tool box et donc si je prend les composant que tu cite, il me faut le code correspondant, ou alors modifier mon environnement pour avoir la tool box. je ne sais pas comment faire cela.
    Ensuite le code généré par les objets que tu référence n'offre pas de possibilité de chaînage: quand je suis dans une tool bar je dois rajouter un champ dans la tool bar pour appeler l'autre form, et cela aussi je ne sais pas faire.
    J'ai donc crée un nouveau projet pour avoir la boite a outil et j'ai suivi vos conseils ma classe est donc devenue:
    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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    public class Form1 : Form
        {
    	public:
    		Form1(void)
    		{
    			InitializeComponent();
    			Shown += new EventHandler(Form1_Shown);
                // To report progress from the background worker we need to set this property
                backgroundWorker1.WorkerReportsProgress = true;
                // This event will be raised on the worker thread when the worker starts
                backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
                // This event will be raised when we call ReportProgress
                backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
    		}
     
    		void Form1_Shown( object sender, EventArgs e)
            {
                // Start the background worker
                backgroundWorker1.RunWorkerAsync();
            }
     
    		// On worker thread so do our thing!
     
    		void backgroundWorker1_DoWork( object sender, DoWorkEventArgs e)
            {
                // Your background task goes here
                for (int i = 0; i <= 100; i++)
                {
                    // Report progress to 'UI' thread
                    backgroundWorker1.ReportProgress(i);
                    // Simulate long task
                    System.Threading.Thread.Sleep(100);
                }
            }
     
    		// Back on the 'UI' thread so we can update the progress bar
     
    		void backgroundWorker1_ProgressChanged( object sender, ProgressChangedEventArgs e)
            {
                // The progress percentage is a property of e
                progressBar1.Value = e.ProgressPercentage;
            }
    	protected:
    		/// <summary>
    		/// Nettoyage des ressources utilisées.
    		/// </summary>
    		~Form1()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    	private: System::Windows::Forms::MenuStrip^  menuStrip1;
    	protected: 
    	private: System::Windows::Forms::ToolStripMenuItem^  fileToolStripMenuItem;
    	private: System::Windows::Forms::ToolStripMenuItem^  loadNewSpecificationToolStripMenuItem;
    	private: System::Windows::Forms::ToolStripMenuItem^  quitToolStripMenuItem;
    	private: System::Windows::Forms::ToolStripMenuItem^  aboutToolStripMenuItem;
    	private: System::Windows::Forms::ProgressBar^  progressBar1;
    	private: System::ComponentModel::BackgroundWorker^  backgroundWorker1;
     
    	private:
    		/// <summary>
    		/// Variable nécessaire au concepteur.
    		/// </summary>
    		System::ComponentModel::Container ^components;
     
    #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->menuStrip1 = (gcnew System::Windows::Forms::MenuStrip());
    			this->fileToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
    			this->loadNewSpecificationToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
    			this->quitToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
    			this->aboutToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
    			this->progressBar1 = (gcnew System::Windows::Forms::ProgressBar());
    			this->backgroundWorker1 = (gcnew System::ComponentModel::BackgroundWorker());
    			this->menuStrip1->SuspendLayout();
    			this->SuspendLayout();
    			// 
    			// menuStrip1
    			// 
    			this->menuStrip1->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^  >(2) {this->fileToolStripMenuItem, 
    				this->aboutToolStripMenuItem});
    			this->menuStrip1->Location = System::Drawing::Point(0, 0);
    			this->menuStrip1->Name = L"menuStrip1";
    			this->menuStrip1->Size = System::Drawing::Size(980, 24);
    			this->menuStrip1->TabIndex = 0;
    			this->menuStrip1->Text = L"menuStrip1";
    			// 
    			// fileToolStripMenuItem
    			// 
    			this->fileToolStripMenuItem->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^  >(2) {this->loadNewSpecificationToolStripMenuItem, 
    				this->quitToolStripMenuItem});
    			this->fileToolStripMenuItem->Name = L"fileToolStripMenuItem";
    			this->fileToolStripMenuItem->Size = System::Drawing::Size(35, 20);
    			this->fileToolStripMenuItem->Text = L"File";
    			// 
    			// loadNewSpecificationToolStripMenuItem
    			// 
    			this->loadNewSpecificationToolStripMenuItem->Name = L"loadNewSpecificationToolStripMenuItem";
    			this->loadNewSpecificationToolStripMenuItem->Size = System::Drawing::Size(190, 22);
    			this->loadNewSpecificationToolStripMenuItem->Text = L"load new specification";
    			// 
    			// quitToolStripMenuItem
    			// 
    			this->quitToolStripMenuItem->Name = L"quitToolStripMenuItem";
    			this->quitToolStripMenuItem->Size = System::Drawing::Size(190, 22);
    			this->quitToolStripMenuItem->Text = L"Quit";
    			// 
    			// aboutToolStripMenuItem
    			// 
    			this->aboutToolStripMenuItem->Name = L"aboutToolStripMenuItem";
    			this->aboutToolStripMenuItem->Size = System::Drawing::Size(48, 20);
    			this->aboutToolStripMenuItem->Text = L"About";
    			// 
    			// progressBar1
    			// 
    			this->progressBar1->Location = System::Drawing::Point(98, 204);
    			this->progressBar1->Name = L"progressBar1";
    			this->progressBar1->Size = System::Drawing::Size(754, 23);
    			this->progressBar1->TabIndex = 1;
    			// 
    			// Form1
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(980, 476);
    			this->Controls->Add(this->progressBar1);
    			this->Controls->Add(this->menuStrip1);
    			this->MainMenuStrip = this->menuStrip1;
    			this->Name = L"Form1";
    			this->Text = L"Form1";
    			this->menuStrip1->ResumeLayout(false);
    			this->menuStrip1->PerformLayout();
    			this->ResumeLayout(false);
    			this->PerformLayout();
     
    		}
    #pragma endregion
    	};
    }
    Et la le compilateur me jette pleins d'injures: je ne sais pas traiter la première. ni d'ailleurs la seconde, ni la troisième.
    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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    1>  Specification loader.cpp
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(16): error C3625: 'Specificationloader::Form1' : un type non managé ne peut pas dériver d'un type managé 'System::Windows::Forms::Form'
    1>          c:\program files\reference assemblies\microsoft\framework\.netframework\v4.0\system.windows.forms.dll*: voir la déclaration de 'System::Windows::Forms::Form'
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(30): error C2061: erreur de syntaxe*: identificateur 'object'
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(38): error C2061: erreur de syntaxe*: identificateur 'object'
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(52): error C2061: erreur de syntaxe*: identificateur 'object'
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(68): error C3265: impossible de déclarer 'menuStrip1' managé dans 'Specificationloader::Form1' non managé
    1>          impossible de déclarer une variable globale ou statique, ou un membre d'un type natif faisant référence à des objets du tas gc
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(70): error C3265: impossible de déclarer 'fileToolStripMenuItem' managé dans 'Specificationloader::Form1' non managé
    1>          impossible de déclarer une variable globale ou statique, ou un membre d'un type natif faisant référence à des objets du tas gc
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(71): error C3265: impossible de déclarer 'loadNewSpecificationToolStripMenuItem' managé dans 'Specificationloader::Form1' non managé
    1>          impossible de déclarer une variable globale ou statique, ou un membre d'un type natif faisant référence à des objets du tas gc
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(72): error C3265: impossible de déclarer 'quitToolStripMenuItem' managé dans 'Specificationloader::Form1' non managé
    1>          impossible de déclarer une variable globale ou statique, ou un membre d'un type natif faisant référence à des objets du tas gc
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(73): error C3265: impossible de déclarer 'aboutToolStripMenuItem' managé dans 'Specificationloader::Form1' non managé
    1>          impossible de déclarer une variable globale ou statique, ou un membre d'un type natif faisant référence à des objets du tas gc
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(74): error C3265: impossible de déclarer 'progressBar1' managé dans 'Specificationloader::Form1' non managé
    1>          impossible de déclarer une variable globale ou statique, ou un membre d'un type natif faisant référence à des objets du tas gc
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(75): error C3265: impossible de déclarer 'backgroundWorker1' managé dans 'Specificationloader::Form1' non managé
    1>          impossible de déclarer une variable globale ou statique, ou un membre d'un type natif faisant référence à des objets du tas gc
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(81): error C3265: impossible de déclarer 'components' managé dans 'Specificationloader::Form1' non managé
    1>          impossible de déclarer une variable globale ou statique, ou un membre d'un type natif faisant référence à des objets du tas gc
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(21): error C2065: 'Shown'*: identificateur non déclaré
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(21): error C3867: &'Specificationloader::Form1::Form1_Shown'*: liste d'arguments manquante dans l'appel de fonction*; utilisez 'Specificationloader::Form1::Form1_Shown' pour créer un pointeur vers membre
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(21): error C2750: 'System::EventHandler'*: impossible d'utiliser 'new' dans le type référence*; utilisez 'gcnew' à la place
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(21): error C3350: 'System::EventHandler'*: un constructeur délégué attend 2 argument(s)
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(23): error C2228: la partie gauche de '.WorkerReportsProgress' doit avoir un class/struct/union
    1>          le type est 'System::ComponentModel::BackgroundWorker ^'
    1>          voulez-vous utiliser '->' à la place*?
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(25): error C2228: la partie gauche de '.DoWork' doit avoir un class/struct/union
    1>          le type est 'System::ComponentModel::BackgroundWorker ^'
    1>          voulez-vous utiliser '->' à la place*?
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(25): error C3867: &'Specificationloader::Form1::backgroundWorker1_DoWork'*: liste d'arguments manquante dans l'appel de fonction*; utilisez 'Specificationloader::Form1::backgroundWorker1_DoWork' pour créer un pointeur vers membre
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(25): error C2750: 'System::ComponentModel::DoWorkEventHandler'*: impossible d'utiliser 'new' dans le type référence*; utilisez 'gcnew' à la place
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(25): error C3350: 'System::ComponentModel::DoWorkEventHandler'*: un constructeur délégué attend 2 argument(s)
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(27): error C2228: la partie gauche de '.ProgressChanged' doit avoir un class/struct/union
    1>          le type est 'System::ComponentModel::BackgroundWorker ^'
    1>          voulez-vous utiliser '->' à la place*?
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(27): error C3867: &'Specificationloader::Form1::backgroundWorker1_ProgressChanged'*: liste d'arguments manquante dans l'appel de fonction*; utilisez 'Specificationloader::Form1::backgroundWorker1_ProgressChanged' pour créer un pointeur vers membre
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(27): error C2750: 'System::ComponentModel::ProgressChangedEventHandler'*: impossible d'utiliser 'new' dans le type référence*; utilisez 'gcnew' à la place
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(27): error C3350: 'System::ComponentModel::ProgressChangedEventHandler'*: un constructeur délégué attend 2 argument(s)
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(33): error C2228: la partie gauche de '.RunWorkerAsync' doit avoir un class/struct/union
    1>          le type est 'System::ComponentModel::BackgroundWorker ^'
    1>          voulez-vous utiliser '->' à la place*?
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(44): error C2228: la partie gauche de '.ReportProgress' doit avoir un class/struct/union
    1>          le type est 'System::ComponentModel::BackgroundWorker ^'
    1>          voulez-vous utiliser '->' à la place*?
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(46): error C2882: 'System'*: utilisation non conforme d'un identificateur d'espace de noms dans l'expression
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(46): error C2228: la partie gauche de '.Threading' doit avoir un class/struct/union
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(46): error C2228: la partie gauche de '.Thread' doit avoir un class/struct/union
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(46): error C2228: la partie gauche de '.Sleep' doit avoir un class/struct/union
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(55): error C2228: la partie gauche de '.Value' doit avoir un class/struct/union
    1>          le type est 'System::Windows::Forms::ProgressBar ^'
    1>          voulez-vous utiliser '->' à la place*?
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(55): error C2065: 'e'*: identificateur non déclaré
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(55): error C2228: la partie gauche de '.ProgressPercentage' doit avoir un class/struct/union
    1>          le type est ''unknown-type''
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(98): error C2039: 'SuspendLayout'*: n'est pas membre de 'Specificationloader::Form1'
    1>          d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(15)*: voir la déclaration de 'Specificationloader::Form1'
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(145): error C2039: 'AutoScaleDimensions'*: n'est pas membre de 'Specificationloader::Form1'
    1>          d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(15)*: voir la déclaration de 'Specificationloader::Form1'
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(146): error C2039: 'AutoScaleMode'*: n'est pas membre de 'Specificationloader::Form1'
    1>          d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(15)*: voir la déclaration de 'Specificationloader::Form1'
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(147): error C2039: 'ClientSize'*: n'est pas membre de 'Specificationloader::Form1'
    1>          d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(15)*: voir la déclaration de 'Specificationloader::Form1'
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(148): error C2039: 'Controls'*: n'est pas membre de 'Specificationloader::Form1'
    1>          d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(15)*: voir la déclaration de 'Specificationloader::Form1'
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(148): error C2227: la partie gauche de '->Add' doit pointer vers un type class/struct/union/générique
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(149): error C2039: 'Controls'*: n'est pas membre de 'Specificationloader::Form1'
    1>          d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(15)*: voir la déclaration de 'Specificationloader::Form1'
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(149): error C2227: la partie gauche de '->Add' doit pointer vers un type class/struct/union/générique
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(150): error C2039: 'MainMenuStrip'*: n'est pas membre de 'Specificationloader::Form1'
    1>          d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(15)*: voir la déclaration de 'Specificationloader::Form1'
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(151): error C2039: 'Name'*: n'est pas membre de 'Specificationloader::Form1'
    1>          d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(15)*: voir la déclaration de 'Specificationloader::Form1'
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(152): error C2872: 'Text'*: symbole ambigu
    1>          est peut-être 'System::Drawing::Text'
    1>          ou       'System::Text'
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(152): error C2882: 'Text'*: utilisation non conforme d'un identificateur d'espace de noms dans l'expression
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(155): error C2039: 'ResumeLayout'*: n'est pas membre de 'Specificationloader::Form1'
    1>          d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(15)*: voir la déclaration de 'Specificationloader::Form1'
    1>d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(156): error C2039: 'PerformLayout'*: n'est pas membre de 'Specificationloader::Form1'
    1>          d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(15)*: voir la déclaration de 'Specificationloader::Form1'
    1>Specification loader.cpp(14): error C2065: 'e'*: identificateur non déclaré
    1>Specification loader.cpp(14): error C2228: la partie gauche de '.ProgressPercentage' doit avoir un class/struct/union
    1>          le type est ''unknown-type''
    1>Specification loader.cpp(15): error C2355: 'this'*: ne peut être référencé qu'à l'intérieur de fonctions membres non static
    1>Specification loader.cpp(15): error C2065: 'e'*: identificateur non déclaré
    1>Specification loader.cpp(15): error C3861: 'backgroundWorker1_ProgressChanged'*: identificateur introuvable
    1>Specification loader.cpp(17): error C2726: 'gcnew' peut uniquement être utilisé pour créer un objet de type managé
    1>Specification loader.cpp(17): error C2665: 'System::Windows::Forms::Application::Run'*: aucune des 3 surcharges n'a pu convertir tous les types d'arguments
    1>          c:\program files\reference assemblies\microsoft\framework\.netframework\v4.0\system.windows.forms.dll: peut être 'void System::Windows::Forms::Application::Run(System::Windows::Forms::Form ^)'
    1>          c:\program files\reference assemblies\microsoft\framework\.netframework\v4.0\system.windows.forms.dll: ou       'void System::Windows::Forms::Application::Run(System::Windows::Forms::ApplicationContext ^)'
    1>          lors de la tentative de mise en correspondance de la liste des arguments '(Specificationloader::Form1 *)'
    J'ai cependant avancé un peu sur la compilation
    ma déclaration de classe est maintenant conforme
    par contre il n'accepte pas le token
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d:\usr\memoria\dev\aln_kernel\make\specification loader\specification loader\Form1.h(31): error C2061: erreur de syntaxe*: identificateur 'object'
    correpondant aux en tête de méthodes par exemple
    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
    void Form1_Shown( object sender, EventArgs e)
            {
                // Start the background worker
                backgroundWorker1.RunWorkerAsync();
            }
     
    		// On worker thread so do our thing!
     
    		void backgroundWorker1_DoWork( object sender, DoWorkEventArgs e)
            {
                // Your background task goes here
                for (int i = 0; i <= 100; i++)
                {
                    // Report progress to 'UI' thread
                    backgroundWorker1.ReportProgress(i);
                    // Simulate long task
                    System.Threading.Thread.Sleep(100);
                }
            }
    Je crois qu'il manque un include: lequel?, et je crois que les autres messages du compilateur sont des mauvaises reprises due l'analyseur d'erreurs, après le diagnostique object
    ce serait d'avoir la réponse

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Hello

    En premier lieu, je te recommande chaudement d'avoir ton environnement de développement correctement configuré. Même s'il faut réinstallé ou dédier une nouvelle machine avec une installation correcte de VisualStudio.

    Pour les barres de menu, il y a effectivement le composant "MenuStrip" qui est prévu pour ceci. Bien que si c'est pour afficher uniquement 2 actions, on peut très bien imaginer utiliser 2 boutons standard.

    Concernant la barre de chargement, il y a le composant statusStrip qui permet d'afficher en bas de formulaire une progressBar et un label si besoin. En premier lieu je te conseille de ne pas te focaliser sur ce point.

    En effet l'utilisation d'une progressBar nécessite de faire appel à du multithread (avec un backgroundworker au plus simple). Ceci ajoute une difficulté supplémentaire qu'il faut mieux intégrer après coup...

  5. #5
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Oula attention il ne faut pas mélanger du C#, du C++ managé et du C++ non managé. Lequel souhaites tu utiliser?

  6. #6
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut J'utilise C++ Je ne sait pas ce que c'est managé ou non managé
    Bonjour
    pour la 1° réponse,Je crois que mon compilateur est bien installé: je l'ai installer deux fois.
    avec un mode la boite box ne s'affiche avec rien
    avec l'autre mode je trouve tout.
    le Deuxième exemple est avec l'autre mode
    c'est

  7. #7
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Winform fait parti de .Net et .Net c'est une plateforme de code managé (un peu comme du Java). C'est à dire que ton code est compilé dans un format intermédiaire (MSIL) puis interpreté par une machine virtuelle (la CLR). Ca n'est donc pas du code natif (comme le C++ traditionnel).
    Tu ne peux donc pas utiliser du Winform sans .Net ce qui dans Visual Studio correspond à créer un projet Visual C++ -> CLR -> Windows Forms Application

  8. #8
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut je n'ai pas compris ta réponse
    Bonjour et encore merci
    J'ai pris la toolbox et j'ai vu que certaines boites qui étaient dedans était du .NET. Mais je ne sait pas interpréter ta réponse.

  9. #9
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    En gros, pas de winform en C++ Win32

  10. #10
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Winform fait parti de .Net et .Net c'est une plateforme de code managé (un peu comme du Java). C'est à dire que ton code est compilé dans un format intermédiaire (MSIL) puis interpreté par une machine virtuelle (la CLR). Ca n'est donc pas du code natif (comme le C++ traditionnel).
    Erf, attention au choix des mots. Le code MSIL n'est pas interprété, il est compilé à la volée en code natif.

  11. #11
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut Bonjour
    Mon besoin: c'est d'ouvrir une tool box dans une première form et quand l'utilisateur choisit d'ouvrir un fichier d'appeler une autre form.
    Je pense que ce besoin est un basique dans l'utilisation d'une chaine de compilation. Je ne comprends pas votre langage. J'ai l'impression qu'un se perd dans les outils de Visual Studio.
    J'ai appris a faire une form, et à poser des outils dessus.
    Ce que je ne sais pas faire c'est de chainer la deuxième form après la première.
    Je serais content d'avoir une réponse à cette question. ce sera

  12. #12
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Citation Envoyé par JeanNoel53 Voir le message
    Ce que je ne sais pas faire c'est de chainer la deuxième form après la première.
    Je serais content d'avoir une réponse à cette question. ce sera
    Form.Show() ShowDialog() peuvent prendre en argument une fenêtre parente. C'est aussi simple que cela.

  13. #13
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Bon au risque de me répèter, mais je vais écrire ca plus gros et en gras au cas où...
    Winform c'est du .Net, c'est à dire une plateforme un peu particulière. Ca n'est PAS la même chose que du C++ traditionnel natif. Par conséquent il ne faut pas que tu fasses un projet Win32. WINFORM n'est pas utilisable sans .NET.
    Le compilateur est bien clair à ce sujet:
    un type non managé ne peut pas dériver d'un type managé 'System::Windows::Forms::Form'
    De plus, le code que tu as copié-collé n'est PAS du C++, c'est du C#, ca n'est pas le même language. C'est comme si tu copiais du VB.Net et t'étonnais que ca ne compilait pas!

  14. #14
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut on avance
    Merci pour les deux réponse:
    J'ai compris que le code de retour que j'avais copier n'était pas du C++. Je vais le retirer.
    J'ai compris que
    Form.Show() ShowDialog() peuvent prendre en argument une fenêtre parente. C'est aussi simple que cela.
    pouvait faire ce que j'avais besoin. C'est peut être si ça marche.
    Mais malheureusement je n'ai pas pu compiler. Qui qu'il en soit, j'ai avancé et mon code a fortement diminué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Form1(void)
    		{
     
    			InitializeComponent();
    			Form1.Show()ShowDialog();
    		}
    il me dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    d:\usr\memoria44sansisuusbuildermiseenplacedevisual\dev\aln_kernel\make\specification loader\specification loader\Form1.h(22): error C2143: erreur de syntaxe*: absence de ';' avant '.'
    1>d:\usr\memoria44sansisuusbuildermiseenplacedevisual\dev\aln_kernel\make\specification loader\specification loader\Form1.h(22): error C2143: erreur de syntaxe*: absence de ';' avant '.'
    Je pense qu je ne suis pas loin de la solution et peut être qu'il y a des paramètres à mettre aussi. ce serait d'avoir votre avis

  15. #15
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Il va falloir se décider sur la techno là.
    Soit c'est du VisualC++ avec MFC et par conséquent ca n'est pas du WinForm (et je déplace ce sujet dans le bon forum).
    Soit c'est du C++\CLI et Winform auquel cas c'est le bon forum.
    Mais dans tous les cas il va falloir arrêter la tambouille immonde qui est faite sans comprendre actuellement.
    On a tous été débutant à un moment, pour commencer il serait bon de prendre un cours et potasser les notions de base

  16. #16
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut Clarification
    Bonjour
    Pour documenter le discussion je vais dire ce que je sais et pas ce que je ne sais pas
    J'ai acheté Visual Studio C++ 2010. Je l'ai configuré avec CLR et j'ai mis deux form à partir de la ToolBox.
    Comme l'utilisation des form à l'air compliqué, tant en choix de forum qu'en tant que conseil, et que j'ai acheté 2 livres pour avoir des bases, même si il m'en ont donné peu( le premier était sur Visual Studio C++ version 6 et l'autre est polyvalent basé sur Visual Studio 2010 mais très orienté .NET et mélange du c# et du c++. Voilà J'ai dit toute mon expérience de Visual Studio.
    Comme j'ai vu que ça convergeait doucement, j'ai fit avancer la solution BCB et j'ai tourné le bug du compilateur. Ainsi la solution Visual Studio est en mode attente sur réponses et on pourra prendre le temps d'arriver au minimum.
    Je suis assez sécurisé sur le portage du code C++, la compilation étant satisfaisante. J'attendrai donc vos décisions et vos réponses. Je crois cependant que BCB est à bout de souffle et c'est pourquoi je réponds fidèlement à vos interventions. Mais je suis très interloqué par la complexité apparente du sujet.
    Mon besoin: c'est d'ouvrir une tool box dans une première form et quand l'utilisateur choisit d'ouvrir un fichier d'appeler une autre form.
    Je pense que ce besoin est un basique dans l'utilisation d'une chaine de compilation.
    .
    J'espère que ce post vous permettra de prendre la bonne décision. et je vous remeercie en tous cas de votre aide. c'est

  17. #17
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Mais non, c'est très simple en réalité. Considère qu'il y a deux C++, deux langages distincts.
    * Le C++ traditionnel qui compile en un code non-managé (natif). Il n'a accès qu'aux API non-managées, telles que MFC pour l'UI.
    * Le C++/CLI qui compile en un code managé. Celui-ci a accès à la fois aux API non-managées et aux API managées (telles que Windows Forms).

    Et tes deux bouquins correspondent chacun à un de ces deux langages. Et plus exactement le C++/CLI est une version étendue du C++ pour être compatible avec le monde managé.

    Enfin, pour ce que j'avais dit plutôt, j'avais oublié un "ou", il fallait donc écrire : Form1.Show(); OU Form1.ShowDialog();, la seconde version étant pour les fenêtres modales. Cela dit tu appelles une méthode d'instance comme une méthode statique et à mon avis tu es encore à cent lieues de ce que tu veux.


    PS : Le C++/CLI nécessite une bonne expérience et une bonne compréhension de la plateforme dotnet. Puisque ça ne semble pas être le cas, s'il t'es possible de te rabattre sur du C#, je te conseille vivement ce choix.

  18. #18
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut Merci. je suis
    J'ai donc supprimé dans l'appel le 2° show et j'ai le même résultat.
    J'ai essayé trois syntaxes et j'ai toujours le même diagnostic du compilateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Form1(void)
    		{
     
    			InitializeComponent();
    			Form1.Show( OpenAFile);
    		}
    j'ai aussi essayé OpenAFile.show(); et Form1.Show(); avec toujours le même diagnostic de Visual Studio:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    1>d:\usr\memoria44sansisuusbuildermiseenplacedevisual\dev\aln_kernel\make\specification loader\specification loader\Form1.h(22): error C2143: erreur de syntaxe*: absence de ';' avant '.'
    1>d:\usr\memoria44sansisuusbuildermiseenplacedevisual\dev\aln_kernel\make\specification loader\specification loader\Form1.h(22): error C2143: erreur de syntaxe*: absence de ';' avant '.'
    Il me reste donc à comprendre les syntaxes à utiliser. Le commence à douter: Est ce moi qui suis bête. J'ai quand même réussi à faire le projet avec BCB. Est ce moi qui pose mal le problème: je l'ai reformulé 3 fois, ou est ce Visual qui est intrinsèquement compliqué et là c'est plus grave... Les réponses à ces questions seront

  19. #19
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut bonjour le forum de msdn m'a donné une part de la réponse
    Bonjour
    Le forum msdn m'a dit que quant on a une toolbar il faut double clicker pour avoir l'appel dans le source je vais copier mon code pour donner le résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private: System::Void openAFileToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) 
    			 {
    				 Test6::OpenAFile FormToOpen = gcnew OpenAFile();
                     FormToOpen.Show();
    			 }
    mais il va falloir résoudre le dernier problème car le type de FormToOpen soit celui qui a besoin de compiler: il n''est pas compilable dans cet état.
    Heureusement que le form de msdn à répondu, car sans cela j'aurais jeté à la poubelle mon achat de Visual Studio
    J'en conclus provisoirement que avec Visual Studio on peut avoir un projet WinForm simple et qui marche

  20. #20
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par JeanNoel53 Voir le message
    J'en conclus provisoirement que avec Visual Studio on peut avoir un projet WinForm simple et qui marche
    Bah oui, à condition de s'y prendre correctement et de décider si on fait du C++ managé ou non...

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

Discussions similaires

  1. [Débutant] manipulation d'une table mdb avec visual studio 2010
    Par Invité dans le forum Visual Studio
    Réponses: 1
    Dernier message: 28/06/2015, 17h37
  2. Réponses: 2
    Dernier message: 28/05/2015, 18h39
  3. Réponses: 0
    Dernier message: 10/02/2015, 17h46
  4. Réponses: 4
    Dernier message: 19/05/2011, 15h06
  5. droit en lecture sur une feuille avec visual studio
    Par kingson dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 13/04/2007, 05h18

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