如何将win32 WndProc包装成C ++类?

时间:2012-01-08 19:52:13

标签: c winapi visual-c++ wrapper wndproc

这甚至可能吗?例如,假设我有以下内容:

class Window {
private:
    WNDCLASSEX wc;
public:
    inline WNDCLASSEX getWindowClass() {
        return wc;
    }
    Window();
    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, LPARAM lParam, WPARAM wParam);
}

void RegisterWindow(Window win) {
    WNDCLASSEX* wc = win.getWindowClass();
    RegisterClassEx(wc);

}

现在,某处会有一个部分(可能在Window类的构造函数中,需要分配WNDCLASSEX一个WndProc,这在Window类。唯一的问题是,因为它是类的一部分,所以会引发错误。因此,这是如何实现的?它是静态的吗?即便如此,如果类包装它是仍然以某种方式成为课程的一部分。如果我在课堂之外创作它,那就简单地抹掉了这一点。

1 个答案:

答案 0 :(得分:4)

您将this指针作为GWLP_USERDATA传递给SetWindowLongPtr,这有效地允许您将自由函数转发给成员函数。