从 Win32 包装器 WndProc 调用另一个类中的函数

Call function in another class from Win32 wrapper WndProc

本文关键字:函数 另一个 调用 Win32 包装 WndProc      更新时间:2023-10-16

我有一个win32包装类,它有一个有效的WndProc(我使用静态wndproc将消息转发到WndProc成员函数)。

我还有另一个应用程序类,它创建我的 win32 包装类的实例。

我希望应用程序类的用户能够编写自己的表示事件的函数,例如 OnMouseClick() 或 OnMouseMove(),但为了使其正常工作,我需要从 win32 包装类的 Wndproc 调用事件函数(它不知道应用程序类)。

最好的方法是什么?我是否应该将指向每个事件函数的指针发送到我的 win32 包装类,并通过指针调用它?还是有更好的方法?

类的结构及其目的尚不清楚。尽管如此,包装类的典型推荐结构如下:

class BaseClass
{
public:
    virtual void OnMouseClick(...) { }   // Empty body
    virtual void OnMouseMove(...) { }   // Empty body
};
class AppClass : public BaseClass
{
public:
    void OnMouseClick(...) { AppCode }
    void OnMouseMove(...) { AppCode }
};

基类在其静态 WndProc 处理程序中接收 Windows 事件时调用虚拟方法。这会触发应用程序代码的执行。