这甚至可能吗?例如,假设我有以下内容:
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
类。唯一的问题是,因为它是类的一部分,所以会引发错误。因此,这是如何实现的?它是静态的吗?即便如此,如果类包装它是仍然以某种方式成为课程的一部分。如果我在课堂之外创作它,那就简单地抹掉了这一点。
答案 0 :(得分:4)
您将this
指针作为GWLP_USERDATA
传递给SetWindowLongPtr
,这有效地允许您将自由函数转发给成员函数。