Précédent   Forum du club des développeurs et IT Pro > C et C++ > Outils pour C & C++ > Visual C++ > C++/CLI
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 21/12/2012, 11h01   #1
abouelmajd
Invité de passage
 
Homme SIDAOUI Mejdi
Expert sécurité informatique
Inscription : novembre 2011
Messages : 13
Détails du profil
Informations personnelles :
Nom : Homme SIDAOUI Mejdi
Localisation : Tunisie

Informations professionnelles :
Activité : Expert sécurité informatique
Secteur : Enseignement

Informations forums :
Inscription : novembre 2011
Messages : 13
Points : 2
Points : 2
Par défaut comment utiliser methodInvoker en c++ cli?

Bonjour, j'ai ce code en c# qui est correcte

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void HandleFarmStateChanged(object sender, ValueChangedEventArgs<CFarm.FarmState> e)
        {
            if (control.InvokeRequired)
            {
                control.Invoke(new MethodInvoker(delegate
                {
                    HandleFarmStateChanged(sender, e);
                }));
                return;
            }
 
           //FarmStateStatusLabel.Text = e.NewValue.ToString();
            Console.WriteLine(e.NewValue.ToString());
            Console.WriteLine("       ");
        }
mais je le veux en c++ cli et c'est ce que j'ai essayé

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void GetNotifications::HandleFarmStateChanged(Object ^sender, ValueChangedEventArgs<CFarm::FarmState> ^e)
{
	if (control->InvokeRequired)
            {
				control->Invoke(
    gcnew System::Windows::Forms::MethodInvoker(
        this,
		&GetNotifications::HandleFarmStateChanged
    )
);
                return;
            }
 
	Console::WriteLine(e->NewValue.ToString());
	Console::WriteLine("       ");
}
et pourtant j'ai toujour cette erreur
"Error 1 error C3352: 'void GetNotifications::HandleFarmStateChanged(System::Object ^,BaseLibCS::ValueChangedEventArgs<T> ^)' : the specified function does not match the delegate type 'void (void)'"

Merci d'avance
Modifier
abouelmajd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 13h14   #2
leternel
Membre Expert
 
Homme Pierre
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Localisation : France

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

Informations forums :
Inscription : juin 2007
Messages : 1 175
Points : 2 476
Points : 2 476
C'est assez simple, void HandleFarmStateChanged(Object^,ValueChangedEventArgs<T>^) n'est pas une void f(void)Il "suffit" de creer une fonction sans arguments, qui fournit les arguments requis.

Pour les détails, je ne connais ni C# ni C++/CLI

ce que tu fais ressemble (d'après le message d'erreur) à:
Code :
1
2
3
4
5
6
void myListener(int, int);
void registerListener( void *(void) );
//...
{
    registerListener(myListener);
}
__________________
Mes principes de bases du codeur qui veut pouvoir dormir:
  • Une variable de moins est une source d'erreur en moins.
  • Un pointeur de moins est une montagne d'erreurs en moins.
  • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
  • La plus sotte des questions est celle qu'on ne pose pas.
leternel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 20h01   #3
bacelar
Expert Confirmé Sénior
 
Homme Paul Bacelar
Développeur informatique
Inscription : février 2005
Messages : 2 651
Détails du profil
Informations personnelles :
Nom : Homme Paul Bacelar
Âge : 41
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Conseil

Informations forums :
Inscription : février 2005
Messages : 2 651
Points : 4 044
Points : 4 044
Manque un delagate

http://stackoverflow.com/questions/3...odinvoker-in-c
bacelar est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 14h44.


 
 
 
 
Partenaires

Hébergement Web