Ответ 1
Я нашел решение, и мне все равно, если это kludge.
hWnd = static_cast<HWND>(Handle.ToPointer());
Works.
Учитывая форму
System.Windows.Forms::Form Form1;
и дескриптор окна
HWND hWnd;
Как установить hWnd в свойство Handle Form1, которое действительно существует как общедоступное свойство, которое "Возвращает дескриптор окна, к которому привязан элемент управления (Унаследовано от Control.)" в соответствии с Документация Microsoft на System.Windows.Forms:: Form? В конструкторе моей формы Form1 я пробовал
hWnd = this.Handle;
но компилятор жалуется:
ошибка C2228: слева от '.Handle' должен быть класс /struct/union type 'MyNamespace:: Form1 ^ const', вы намеревались использовать '- > ' вместо?
Итак, я пытаюсь
hWnd = this->Handle;
и просто
hWnd = Handle; // Since I'm in the Form
а затем компилятор говорит:
ошибка C2440: '=': невозможно преобразовать из "System:: IntPtr" в "HWND". Доступен оператор пользовательского преобразования, который может выполнить это преобразование, или оператор не может быть вызван
Я нашел решение, и мне все равно, если это kludge.
hWnd = static_cast<HWND>(Handle.ToPointer());
Works.