如何将win32 WndProc包装到C ++类中?
这有可能吗? 例如,假设我有以下内容:
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
类中有说明。唯一的问题是,因为它是一个部分class,会出现错误。这样,它是如何实现的?它是静态的吗?即便如此,如果类包装它仍然是某种程度的类的一部分。如果我在类之外创建它,那么简单地抹掉了这一点。
您this
指针作为GWLP_USERDATA
给SetWindowLongPtr
,这有效地允许您将自由函数简单地转发到成员函数。