Win32 WndProc as class member

前端 未结 3 991
野的像风
野的像风 2021-01-22 06:58

Is there a way to wrap WndProc as private member?

If I have this:

class Window
{
public:
    Window();
    virtual ~Window();
    void create();

private         


        
3条回答
  •  一整个雨季
    2021-01-22 07:15

    You should add the static modifier to it.

    The reason for this, is that when it's a member function (which I believe is a __thiscall in Visual C++), it's actually just a C function taking this as the first parameter. This would look like this:

    LRESULT CALLBACK WndProc(Window& this, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
    

    If you make it static, the compiler gets rid of the first Window& this parameter, making it compatible with lpfnWndProc .

提交回复
热议问题