scoubidou944
Messages postés714Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention19 janvier 2017
-
15 avril 2004 à 19:59
TheSaib
Messages postés2367Date d'inscriptionmardi 17 avril 2001StatutMembreDernière intervention26 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
scoubidou944
Messages postés714Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention19 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
TheSaib
Messages postés2367Date d'inscriptionmardi 17 avril 2001StatutMembreDernière intervention26 décembre 200723 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.