首页 文章

WndProc分配问题

提问于
浏览
1

我正在尝试创建一个自定义的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文件时,我已经得到了这个功能,但似乎范围将其抛弃 .

1 回答

  • 4

    它应该是 static 或全局函数 . 类成员函数期望接收名为 this 的附加隐藏参数,因此签名不匹配 .

相关问题