2009-10-28 7 views
1

hai .... ce qui est l'équivalent de HWND (vC++) en C#, parce que je veux envoyer HWND de mon C# programme à la VC++ dllce qui est HWND dans vC++

+0

hai vinoth..proceed plus .. – maxy

Répondre

7

HWND est une "poignée d'une fenêtre" et fait partie de l'API Win32. Les HWND sont essentiellement des pointeurs (IntPtr) avec des valeurs qui les font (en quelque sorte) pointer vers des données de structure de fenêtre. En général, les HWND sont un exemple d'application du modèle ADT.

Si vous voulez une propriété HWND du contrôle, voir Control.Handle. C'est un IntPtr dont la valeur est HWND. Comme HWND n'est pas une entité .Net, ils doivent être libérés manuellement.

Ceci est fait avec Control.DestroyHandle().

Portez une attention particulière à la création et la destruction de HWND. La responsabilité de la destruction d'objet est inhabituelle dans .Net et est en général une source de bogues et de fuites de mémoire.

1

HWND comme indiqué est une abréviation de Window Handle. Le type réel derrière HWND est juste une structure avec un champ entier. Donc, il est analogique dans .Net est IntPtr

Cependant, voici une question assez intéressante - Quelle est la taille de HWND dans Windows x64. Parce que IntPtr de .net ont alors 64 bits de long. Mais si HWND reste 32 bits de long il peut y avoir des problèmes

0

HWND est similaire à IntPtr.

utiliser la syntaxe suivante

[DllImport("ImortingDllName.dll")] 
    public static extern void ExposedFunction(IntPtr hwndmsg, int all);