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

请问其中LRESULTCALLBACK是什么意思?... 请问其中LRESULT CALLBACK 是什么意思? 展开
 我来答
justcrack
2007-02-21 · TA获得超过135个赞
知道小有建树答主
回答量:253
采纳率:0%
帮助的人:289万
展开全部
LRESULT就是LONG
CALLBACK专用在回调函数里,看看VC/BCB里的定义

VC:WINDEF.h
#define CALLBACK PASCAL //_pascal
#define WINAPI CDECL //_cdecl

BCB:windef.h
#define CALLBACK __stdcall
#define WINAPI __stdcall

__cdecl是C/C++和MFC程序默认使用的调用约定,也可以在函数声明时加上__cdecl关键字来手工指定。采用__cdecl约定时,函数参数按照从右到左的顺序入栈,并且由调用函数者把参数弹出栈以清理堆栈。因此,实现可变参数的函数只能使用该调用约定。由于每一个使用__cdecl约定的函数都要包含清理堆栈的代码,所以产生的可执行文件大小会比较大。__cdecl可以写成_cdecl。
__stdcall调用约定用于调用Win32 API函数。采用__stdcal约定时,函数参数按照从右到左的顺序入栈,被调用的函数在返回前清理传送参数的栈,函数参数个数固定。由于函数体本身知道传进来的参数个数,因此被调用的函数可以在返回前用一条ret n指令直接清理传递参数的堆栈。__stdcall可以写成_stdcall。
__fastcall约定用于对性能要求非常高的场合。__fastcall约定将函数的从左边开始的两个大小不大于4个字节(DWORD)的参数分别放在ECX和EDX寄存器,其余的参数仍旧自右向左压栈传送,被调用的函数在返回前清理传送参数的堆栈。__fastcall可以写成_fastcall。

在默认情况下,采用__cdecl方式,因此可以省略.
WINAPI一般用于修饰动态链接库中导出函数
CALLBACK仅用于修饰回调函数
xufeng0325
2007-02-21 · TA获得超过3682个赞
知道小有建树答主
回答量:366
采纳率:0%
帮助的人:417万
展开全部
LRESULT CALLBACK

它们其实是宏,表示函数的返回类型,你可以在VC里面对它们点右键然后Go To Definition看到它的宏定义。

其实,这就表示了WinProg函数是一个回调函数。在MFC中,得到Message消息以后系统会进行回调,当然,我们需要编写一个回调函数来响应。为了区别于其它函数,在回调函数前加上LRESULT CALLBACK
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式