hai ....在c#中等效于HWND(vc ++),因为我想将HWND从我的c#程序发送到VC ++ dll
答案 0 :(得分:7)
HWND是“窗口句柄”,是Win32 API的一部分。 HWND本质上是指针(IntPtr),其值使它们(某种程度上)指向窗口结构数据。通常,HWND是应用ADT模型的一个示例。
如果您想要Control的HWND,请参阅Control.Handle属性。它是一个IntPtr,其值是HWND。
由于HWND不是.Net实体,因此需要手动释放它们。这是通过Control.DestroyHandle()完成的。
密切关注HWND的创建和破坏。对象破坏的责任在.Net中是不常见的,并且通常是错误和内存泄漏的来源。
答案 1 :(得分:2)
那就是IntPtr,它意味着包含非托管句柄和指针。
答案 2 :(得分:1)
答案 3 :(得分:1)
然而,这里有一个非常有趣的问题 - 在x64 Windows中,HWND的大小是多少。因为.net的IntPtr然后有64位长。但如果HWND保持32位长可能会出现问题
答案 4 :(得分:0)
HWND类似于IntPtr。
使用以下语法
[DllImport("ImortingDllName.dll")]
public static extern void ExposedFunction(IntPtr hwndmsg, int all);