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

C++/CLI Discussion :

[C++/CLI] Accès aux objets en global


Sujet :

C++/CLI

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 22
    Points : 21
    Points
    21
    Par défaut [C++/CLI] Accès aux objets en global
    Bonjour,
    je débute en C++ .NET et je souhaite me faire les dents sur les threads.

    Mon but est le suivant:
    j'ai une classe Form1, j'y crée un label1
    je crée une 2eme classe, dans laquelle j'ai la méthode Chgt_Label (change le texte de mon label1)

    Dans la classe Form1, je lance mon thread

    1er cas: je passe en argument label1 (Form1->2eme classe), mais ça ne change pas pour autant le texte de mon label1, car j'ai en fait créer un clone de label1)

    2eme cas: pensant que label1 est accessible en variable globale, lorsque je tape label1-> dans ma 2eme classe, je n'ai pas accès à ses méthodes et ses paramètres.

    En résumer, comment faire pour que des objets de ma Form1 soient accessibles quelque soit la classe, un peu comme des variables globales

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    Bonjour, merci de consulter les tutoriel et la FAQ ce sujet est traiter au moins une fois par semaine sur le forum alors qu'il suffit de chercher :
    LIEN vers le tutoriel
    1 || 1 = 1
    1 && 1 = 1
    1 * 1 = 1
    Bon après tout, peut-être que Van Damme avait raison :
    1 + 1 = 1 // harmonie parfaite

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 22
    Points : 21
    Points
    21
    Par défaut [C++ .NET] Accès aux objets en global
    Bonjour, voici le code que je viens de faire. Le but premier est d'activer une connection UDP, et lancer un Thread qui se met en attente d'une réception UDP.
    Le problème, c'est que la méthode UDP->Receive ne fonctionne pas, car j'ai déclaré l'objet UDP dans une autre fonction, celle qui lance le thread. Est-il possible d'avoir des objets accessibles partout (global) ?

    Merci de votre aide


    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
     
    #pragma once
     
     
    namespace Simulateur_GPS_M2000D {
     
    	using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
     
    	/// <summary>
    	/// Description résumée de Form1
    	///
    	/// AVERTISSEMENT*: si vous modifiez le nom de cette classe, vous devrez modifier la
    	///          propriété 'Nom du fichier de ressources' de l'outil de compilation de ressource managée
    	///          pour tous les fichiers .resx dont dépend cette classe. Dans le cas contraire,
    	///          les concepteurs ne pourront pas interagir correctement avec les ressources
    	///          localisées associées à ce formulaire.
    	/// </summary>
    	public ref class Form1 : public System::Windows::Forms::Form
    	{
    		public: UdpClient^ UDP;
    	public: ThreadStart^ Start_Reception_UDP;
    	public: Thread^ Thread_Reception_UDP;
    	public: Form1^ w;
    	public:
    		Form1(void)
    		{
    			InitializeComponent();
    			//
    			//TODO*: ajoutez ici le code du constructeur
    			//
     
     
    		}
     
    	protected:
    		/// <summary>
    		/// Nettoyage des ressources utilisées.
    		/// </summary>
    		~Form1()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    	private: System::Windows::Forms::Label^  label1;
    	private: System::Windows::Forms::Label^  label2;
     
    	protected: 
     
    	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->label1 = (gcnew System::Windows::Forms::Label());
    			this->label2 = (gcnew System::Windows::Forms::Label());
    			this->SuspendLayout();
    			// 
    			// label1
    			// 
    			this->label1->AutoSize = true;
    			this->label1->Location = System::Drawing::Point(204, 100);
    			this->label1->Name = L"label1";
    			this->label1->Size = System::Drawing::Size(35, 13);
    			this->label1->TabIndex = 0;
    			this->label1->Text = L"label1";
    			// 
    			// label2
    			// 
    			this->label2->AutoSize = true;
    			this->label2->Location = System::Drawing::Point(178, 190);
    			this->label2->Name = L"label2";
    			this->label2->Size = System::Drawing::Size(35, 13);
    			this->label2->TabIndex = 1;
    			this->label2->Text = L"label2";
    			// 
    			// Form1
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(292, 266);
    			this->Controls->Add(this->label2);
    			this->Controls->Add(this->label1);
    			this->Name = L"Form1";
    			this->Text = L"Form1";
    			this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
    			this->ResumeLayout(false);
    			this->PerformLayout();
     
    		}
    #pragma endregion
     
     
     
    	public: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
    				 w=gcnew Form1;
    				 UDP=gcnew UdpClient(5500);
    				 Start_Reception_UDP=gcnew ThreadStart(w,&Form1::Reception_UDP);
    				 Thread_Reception_UDP=gcnew Thread(Start_Reception_UDP);
    				 Thread_Reception_UDP->Start();
    				 for(int i=0;i<100;i++)
    					 label1->Text=Convert::ToString(i);
     
     
    			 }
     
    	public: void Reception_UDP()
    			 {
    				 IPEndPoint^ RemoteIpEndPoint=gcnew IPEndPoint(IPAddress::Any,0);
    				 array<Byte>^ receiveBytes=	UDP->Receive(RemoteIpEndPoint);
    				 String^ returnData=Encoding::ASCII->GetString(receiveBytes);
    			 }
    	};
    }
    pense à la balise code à l'avenir / nico-pyright(c)

  4. #4
    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
    Points : 16 075
    Points
    16 075
    Par défaut
    tu ne peux pas faire ta fonction de thread comme membre de la classe ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 22
    Points : 21
    Points
    21
    Par défaut
    C'est à dire ?

    Sinon, j'ai essayé aussi de mettre la fonction Thread dans une autre classe, mais depuis cette classe, je n'arrive toujours pas accéder aux variables et objets de la première classe (Form1)

  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
    Points : 16 075
    Points
    16 075
    Par défaut
    nan mais, si tu mets la fonction dans la classe et que ta variable est membre de la classe, tu la verras

Discussions similaires

  1. Acces aux objets dans un sous-formulaire
    Par Destiny dans le forum Access
    Réponses: 3
    Dernier message: 13/02/2007, 08h28
  2. Accés aux objets d'un autre utilisateur
    Par ariesnojf dans le forum Oracle
    Réponses: 2
    Dernier message: 02/02/2007, 18h30
  3. [Corba/Java] Accès aux objets
    Par soa dans le forum CORBA
    Réponses: 4
    Dernier message: 16/01/2007, 18h14
  4. [c#] Méthode d'accès aux objets de ma form1
    Par SDuh dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/03/2006, 11h21
  5. [TGroupBox] Accès aux objets
    Par JediKerian dans le forum Composants VCL
    Réponses: 3
    Dernier message: 04/04/2003, 14h34

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