C ++ Windows:LRESULT CALLBACK和WNDPROC

时间:2013-09-22 11:57:38

标签: c++ windows class winapi

我有一个班级:

class SomeClass
{
    public:
        void Init ();

    private:
        LRESULT CALLBACK WndProc (HWND wnd, UINT msg, WPARAM wparam, LPARAM lparam);
};

另外,在另一个文件中我有一个功能:

void MakeWindow (WNDPROC wnd_proc, DWORD style, HICON lg_icon, ...);

第一个参数应该将LRESULT CALLBACK函数作为输入。某处我也有Init函数的定义:

void SomeClass::Init ()
{
    MakeWindow (this->WndProc, WM_POPUP, NULL, ...);
}

当我尝试将this->WndProc传递给WNDPROC wnd_proc时,这会在VS2012中给出错误C3867。我有什么办法可以将LRESULT CALLBACK WndProc函数传递给MakeWindow吗?

1 个答案:

答案 0 :(得分:3)

问题是您的WndProc方法是实例方法,因此与WNDPROC不匹配。因为它是一个实例方法,所以它会收到一个额外的,隐含的this参数。

您需要将其声明为static方法才能与WNDPROC兼容。