1

我对以下之间的区别有点困惑:

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

virtual void WndProc(Message %m);

我知道第一个是在 win32 中获取消息以管理事件,但是当我们编写 Windows 窗体项目时,“WndProc(Message %m)”是一样的吗?

最后一个问题是:什么时候用NativeWindow方法比较好,什么时候用win32方法管理事件比较好?

我的项目是一个带有面板的简单窗口窗体,在面板上我称为一个窗口,我可以在其中管理 OpenGL 操作。

有人可以帮助我吗?

4

1 回答 1

1

前者是原始的 C 风格 Win32 API。后者是 .NET 类System.Windows.Forms.Control和的成员System.Windows.Forms.NativeWindow,用 C++/CLI 表示。

我想 .NET 运行时WndProc在内部实现 Win32 回调,并安排它调用WndProc类方法,如果您选择在派生自Control.

我不确定你为什么需要NativeWindow. 如果由于某种原因您想处理原始窗口消息,则从那里派生您的类Panel并覆盖WndProc那里;Panel源自Control

于 2013-09-11T12:47:03.087 回答