2009-10-28 62 views
1

海....什麼是C#HWND(VC++)相當於,因爲我想從我的C#程序發送HWND到VC++的dll什麼是HWND在vC++

+0

海進一步vinoth..proceed .. – maxy 2009-10-28 07:33:24

回答

7

HWND是一個 「處理一個窗口」 和是Win32 API的一部分。 HWND本質上是指針(IntPtr),它們的值使它們(排序)指向窗口結構數據。一般來說,HWND是應用ADT模型的一個例子。

如果您想要Control的HWND請參閱Control.Handle屬性。它是一個IntPtr,其值是一個HWND。

由於HWND不是.Net實體,因此需要手動發佈。這是通過Control.DestroyHandle()完成的。

密切關注HWND的創造和破壞。對象銷燬的責任在.Net中是不尋常的,並且通常是錯誤和內存泄漏的來源。

1

如上所述,HWND是Window Handle的縮寫。 HWND後面的真實類型只是一個帶整數字段的結構。所以它是模擬.Net是IntPtr

但是,這裏有一個相當有趣的問題 - 什麼大小的HWND在x64 Windows。因爲.net的IntPtr然後有64位長。但是,如果HWND保持32位長,則可能存在問題

0

HWND與IntPtr類似。

使用以下語法

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