【问题标题】:WndProc assignment issueWndProc 分配问题
【发布时间】:2012-01-18 04:24:54
【问题描述】:

我正在尝试创建一个自定义 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 message, WPARAM wParam, LPARAM lParam)”类型的值无法分配给“WNDPROC”类型的实体。

我想不通

当 WndProc 与 WinMain 函数共享相同的 .cpp 文件时,我已经让它工作了,但看起来好像作用域把它扔掉了。

【问题讨论】:

    标签: c++


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-10-11
      • 1970-01-01
      • 2011-01-08
      • 2012-09-26
      • 1970-01-01
      • 2022-10-08
      • 1970-01-01
      • 2015-02-23
      相关资源
      最近更新 更多