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

时间:2012-08-13 20:33:29

标签: c++ winapi

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

我还有另一个app类,它创建了我的win32包装类的实例。

我希望app类的用户能够编写自己的代表事件的函数,例如OnMouseClick()或OnMouseMove(),但是为了使它能够工作,我需要调用事件函数来自win32包装器类的Wndproc(不知道app类)。

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

1 个答案:

答案 0 :(得分:0)

您的课程结构及其目的尚不清楚。然而,包装类的典型推荐结构如下:

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事件时调用虚方法。这会触发应用程序代码的执行。