【发布时间】:2011-11-11 05:52:42
【问题描述】:
我正在尝试使用 WinApi 编写这个 win32 程序,但我被卡住了,因为我正在遵循的教程似乎有问题。
MainWindow.h:
class MainWindow
{
public:
MainWindow(HINSTANCE);
~MainWindow(void);
LRESULT CALLBACK WndProcedure(HWND, UINT, WPARAM, LPARAM);
// [...]
MainWindow.cpp:
MainWindow::MainWindow(HINSTANCE hInstance) : hwnd(0)
{
WNDCLASSEX WndClsEx;
// [...]
WndClsEx.lpfnWndProc = &MainWindow::WndProcedure;
// [...]
}
LRESULT CALLBACK MainWindow::WndProcedure(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
// [...]
}
我一定是引用 MainWindow::WndProcedure 错误,因为我完全按照教程所说的那样遵循签名,但是构造函数中的 lpfnWndProc 行给出了编译时错误:
错误 C2440: '=' : 无法从 'LRESULT (__stdcall MainWindow::* )(HWND,UINT,WPARAM,LPARAM)' 转换为 'WNDPROC'
【问题讨论】:
-
你在哪一行得到这个错误?我不认为它在你发布的内容中。
-
请参阅 Raymond Chens scratch program,了解将窗口消息传递给类方法的惯用方式(回答
static之后的下一个逻辑问题,添加到方法签名中)。