WNDPROC声明问题,从C转换为C ++

时间:2009-09-09 11:16:31

标签: c++ wndproc

我正在将程序从C转换为C ++。我将编译器设置为默认使用__fastcall调用约定。

我曾经有一个声明行如下:

INT32 PASCAL graph_window_handler(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

后来我有:

wndclass.lpfnWndProc    = graph_window_handler;

这一切都在C下编译和工作。但是在C ++下,我从编译器那里得到了关于第二行代码的各种抱怨。我想我需要将原始声明更改为涉及WNDPROC的内容,可能还会引入_cdecl?有没有INT32?但似乎我尝试的每一个变化仍然被抱怨。宣言应该是什么样的,以至于第二行不会被抱怨? - 干杯。

1 个答案:

答案 0 :(得分:5)

根据MSDN documentation,它应如下所示:

LRESULT CALLBACK graph_window_handler(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);

如果您检查WinUser.h,您会看到WNDPROC typedef'如下:

typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);