CallWindowProc()为什么会有错误??

KingOf007 2001-11-26 05:28:03
WNDPROC P_OldProc;
.....
CallWindowProc(P_OldProc,hWnd,message,wParam,lParam);
编译会有以下的错误提示:
[C++ Error] Unit1.cpp(37): E2034 Cannot convert 'long (__stdcall *)(void *,unsigned int,unsigned int,long)' to 'int (__stdcall *)()'
[C++ Error] Unit1.cpp(37): E2342 Type mismatch in parameter 'lpPrevWndFunc' (wanted 'int (__stdcall *)()', got 'long (__stdcall *)(void *,unsigned int,unsigned int,long)')
为什么,请各位帮帮忙

...全文
365 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
KingOf007 2001-11-27
  • 打赏
  • 举报
回复
我试了一下,正如ThinkX()所说改成FARPROC就一切OK了,多谢......
还有就是FARPROC是供系统调用的,而WNDPROC是供本程序内部调用的,好像就是这样子
ThinkX 2001-11-27
  • 打赏
  • 举报
回复
我没有试过,应该是的
KingOf007 2001-11-26
  • 打赏
  • 举报
回复
是不是应该:
FARPROC P_OldProc;
.....
ThinkX 2001-11-26
  • 打赏
  • 举报
回复
这是在BCB帮助和MSDN中查的,你用的是第一种情况,这里应该是第二种,
用FARPROC的,它是这样一个函数指针
int FAR WINAPI MyWindowProcedure();
或是
int __stdcall MyWindowProcedure();

#ifdef STRICT
WNDPROC MyWindowProcedure
#else
FARPROC MyWindowProcedure
#endif
...
lResult = CallWindowProc(MyWindowProcedure, ...) ;

NowCan 2001-11-26
  • 打赏
  • 举报
回复
在调用这函数之前,你让P_OldProc等于什么了?
NowCan 2001-11-26
  • 打赏
  • 举报
回复
信息量不够,无法判断。
KingOf007 2001-11-26
  • 打赏
  • 举报
回复
有没有人了解啊??

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧