我试图制作一个自定义GLWindow类,其中包括我所有的OpenGL窗口设置。但是,我也想在GLWindow类中包含用于发送到窗口的消息的WndProc回调函数。
GLWindow.h:
class GLWindow
{
private:
HWND hWnd;
HDC hDC;
HGLRC hRC;
public:
GLWindow();
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
bool Create();
~GLWindow();
}
GLWindow.cpp:
GLWindow::GLWindow()
{
}
bool GLWindow::Create(int width, int height, char * title, bool fullscreen)
{
WNDCLASSEX window;
HINSTANCE hInstance;
hInstance = GetModuleHandle(NULL);
window.cbSize = sizeof(WNDCLASSEX);
window.cbClsExtra = 0;
window.cbWndExtra = 0;
window.hbrBackground = NULL;
window.hIcon = LoadIcon(NULL, IDI_APPLICATION);
window.hIconSm = LoadIcon(NULL, IDI_WINLOGO);
window.hCursor = LoadCursor(NULL, IDC_ARROW);
window.hInstance = hInstance;
window.lpfnWndProc = GLWindow::WndProc; // ERROR
}
GLWindow::~GLWindow()
{
}
错误是无法将类型“LRESULT(__stdcall GLWindow::*)(HWND hWnd,UINT消息,WPARAM wParam,LPARAM lParam)”的值分配给类型“WNDPROC”的实体。
我不知道
当WndProc与WinMain函数共享相同的.cpp文件时,我已经使用了它,但是好像作用域将它抛弃了。
最佳答案
它应该是static
或全局函数。类成员函数希望接收一个称为this
的附加隐藏参数,因此签名不匹配。
关于c++ - WndProc分配问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8469860/