Вопрос по visual-studio, visual-c++ – Как получить дескриптор HWND из System.Windows.Forms.Form

15

Учитывая форму

System.Windows.Forms::Form Form1;

и ручка окна

HWND hWnd;

Как я могу установить hWnd для свойства Handle формы Form1, которое действительно существует как открытое свойство, которое "получает дескриптор окна, к которому привязан элемент управления. (Унаследовано от Control.) & Quot; в соответствии сДокументация Microsoft по System.Windows.Forms :: Form? В конструкторе моей формы Form1 я пытался

hWnd = this.Handle;

но компилятор жалуется:

ошибка C2228: слева от ".Handle" должен иметь класс / структура / объединение, тип - «MyNamespace :: Form1 ^ const»; Вы намеревались использовать & quot; & gt; & ap; вместо?

Так я стараюсь

hWnd = this->Handle;

и просто

hWnd = Handle; // Since I'm in the Form

и тогда компилятор говорит:

ошибка C2440: "=" : невозможно преобразовать из & System; IntPtr & amp; к "HWND" Нет доступного пользователя оператора преобразования, который может выполнить это преобразование, или оператор не может быть вызван

Какое пространство имен вы используете в вашей программе .net, чтобы объявитьHWND hWnd;? Zharios

Ваш Ответ

1   ответ
21

Я нашел решение, и мне все равно, будет ли это клуджем.

hWnd = static_cast<HWND>(Handle.ToPointer());

Работает.

Насколько я понимаю, это правильный способ сделать это.

Похожие вопросы