что такое HWND в vc ++ - PullRequest
       21

что такое HWND в vc ++

1 голос
/ 28 октября 2009

хай .... что эквивалентно HWND (vc ++) в c #, потому что я хочу отправить HWND из моей программы на c # в VC ++ dll

Ответы [ 5 ]

7 голосов
/ 28 октября 2009

HWND является «дескриптором окна» и является частью Win32 API. HWND по сути являются указателями (IntPtr) со значениями, которые заставляют их (вроде) указывать на данные структуры окна. В целом HWND являются частью примера применения модели ADT .

Если вы хотите HWND элемента управления, см. Свойство Control.Handle . Это IntPtr, значение которого равно HWND.

Поскольку HWND не являются сущностью .Net, их необходимо разблокировать вручную. Это делается с помощью Control.DestroyHandle () .

Обратите особое внимание на создание и уничтожение HWND. Ответственность за уничтожение объектов необычна в .Net и, как правило, является источником ошибок и утечек памяти.

2 голосов
/ 28 октября 2009

Это будет IntPtr, который должен содержать неуправляемые маркеры и указатели.

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

1 голос
/ 28 октября 2009

HWND, как было указано, является аббревиатурой для Window Handle. реальный тип за HWND - это просто структура с целочисленным полем. Так что его аналогом в .Net является IntPtr

Однако здесь довольно интересный вопрос - какой размер у HWND в x64 Windows. Потому что IntPtr из .net тогда имеет 64-битную длину. Но если HWND остается 32-битным, могут возникнуть проблемы

1 голос
/ 28 октября 2009

IntPtr . Также вы можете прочитать о P / Invoke вызовах.

0 голосов
/ 28 октября 2009

HWND похож на IntPtr.

используйте следующий синтаксис

    [DllImport("ImortingDllName.dll")]
    public static extern void ExposedFunction(IntPtr hwndmsg, int all);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...