什么是vc ++中的HWND

时间:2009-10-28 07:27:48

标签: c# winapi visual-c++

hai ....在c#中等效于HWND(vc ++),因为我想将HWND从我的c#程序发送到VC ++ dll

5 个答案:

答案 0 :(得分:7)

HWND是“窗口句柄”,是Win32 API的一部分。 HWND本质上是指针(IntPtr),其值使它们(某种程度上)指向窗口结构数据。通常,HWND是应用ADT模型的一个示例。

如果您想要Control的HWND,请参阅Control.Handle属性。它是一个IntPtr,其值是HWND。

由于HWND不是.Net实体,因此需要手动释放它们。这是通过Control.DestroyHandle()完成的。

密切关注HWND的创建和破坏。对象破坏的责任在.Net中是不常见的,并且通常是错误和内存泄漏的来源。

答案 1 :(得分:2)

那就是IntPtr,它意味着包含非托管句柄和指针。

http://msdn.microsoft.com/en-us/library/system.intptr.aspx

答案 2 :(得分:1)

IntPtr。您也可以阅读有关P/Invoke来电的信息。

答案 3 :(得分:1)

如上所述,HWND是Window Handle的缩写。 HWND背后的实数类型只是一个带整数字段的结构。所以它在.Net中的模拟是IntPtr

然而,这里有一个非常有趣的问题 - 在x64 Windows中,HWND的大小是多少。因为.net的IntPtr然后有64位长。但如果HWND保持32位长可能会出现问题

答案 4 :(得分:0)

HWND类似于IntPtr。

使用以下语法

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