2013-09-11 3 views
1

Я немного запутался о разнице между:NativeWindows или Win32?

LRESULT CALLBACK WndProc(HWND hWindow, UINT msg, WPARAM wParam, LPARAM lParam); 

и

virtual void WndProc(Message %m); 

Я знаю, что первое, чтобы получить сообщение для MENAGE события в win32, но так «WndProc (Message% m) «Это то же самое, когда мы программируем проект Windows Form?

Последний вопрос: когда лучше использовать методы NativeWindow и когда лучше использовать методы win32 для управления событиями?

Мой проект - это простая форма окна с панелью, на панели я вызываю окно, где я могу управлять операциями OpenGL.

Не мог бы кто-нибудь мне помочь?

ответ

1

Первый - это исходный API-интерфейс Win32 C-стиля. Последний является членом классов .NET System.Windows.Forms.Control и System.Windows.Forms.NativeWindow, как указано в C++/CLI.

Я полагаю, что среда .NET внутренне реализует WndProc Win32 обратного вызова, и организует его называют WndProc метод класса, если вы выбираете, чтобы переопределить его в класс, производный от Control.

Я не уверен, зачем вам нужен NativeWindow. Если по какой-то причине вы хотите обрабатывать сообщения с открытым окном, то выведите свой класс из Panel и переопределите WndProc; Panel происходит от Control.

+0

Спасибо, Игорь; Я вызываю NativeWindow для создания контекста рендеринга OpenGL для отображения в окне того, что я создал с помощью библиотеки OpenGL; и поэтому для запуска события мне нужно получить окно сообщения. Но на данный момент я не знаю, является ли это лучшим способом сделать все это; Если вы знаете лучшую альтернативу, скажите, пожалуйста. Спасибо – Aidoru

+0

Вы можете получить свой класс из «NativeWindow» и создать экземпляр * этого *; в этом классе вы можете переопределить WndProc, если вы так склонны. Я не знаю достаточно о .NET или OpenGL, чтобы дать совет по дизайну, я должен с сожалением признать. –

Смежные вопросы