[C#] reinterpret_cast ?

scoubidou944 Messages postés 714 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017 - 15 avril 2004 à 19:59
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 - 16 avril 2004 à 14:09
voila, j'ai une callback de type :
private static bool EvalWindow(int hWnd, int lParam)
{
}


Utilisé lors d'un appel à EnumWindows(). Le pb c'est que le parametre 'int lParam' bah moi je voudrais bien que ce soit un objet de type ArrayList.
La question est : G pas de reinterpret_cast, je fais comment ?

Thx

----------------------------
C++ forever
C# amateur

3 réponses

TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
16 avril 2004 à 11:44
C'est quoi un reinterpreter_cast ?

tu peux pas passer un type Object que tu cast après!?

::|The S@ib|::
MVP C#.NET
0
scoubidou944 Messages postés 714 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017
16 avril 2004 à 11:50
dans les appels aux API windows, on trouve souvent un LPARAM comme paramètre qui n'est autre qu'un entier 32 bits non signé.
Cet entier était souvent casté vers un pointeur de structure :

en C:
MaStruct Toto;
int i = 0;

FonctionWin32 ((int)i, (int)&toto);
ou en C++:
FonctionWin32 ((int)i, reinterpret_cast(&toto));

En gros, on pouvait caster n'importe quoi en n'importe quoi d'autre sans vérification de type.
Le pb C qu'en C#, tous les objets du langage meme s'ils dérivent du meme object à la base, l'interface via import de DLL n'a pas les memes avantages.
Donc entre le 'int' envoyé en paramètre & la structure que je passe (enfin voudrait passer) il n'existe pas de point commun ce qui exclu les 'as', 'explicit' &'implicit'

----------------------------
C++ forever
C# amateur
0
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
16 avril 2004 à 14:09
Je comprends toujours pas.
Mais si c'est pour des apis que tu as ce problème rien de plus simple tu adaptes ta declaration (DLLIMPORT) de l'api aux types dont tu as besoin.

::|The S@ib|::
MVP C#.NET
0
Rejoignez-nous