- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一直搞不懂为什么在函数前面加上WINAPI、CALLBACK等是什么意思 又不是返回值 为什么加在前面 今天终于知道了这是一个呼叫声明(姑且称之吧)。
引子:
看看这个函数:
int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw){???? MSG msg;
????//进行程序的初始化工作???? if(!AppInit(hInst,hPrev,sw))???????? return FALSE;
????//消息循环处理???? for(;;)???? {???????? while(PeekMessage(msg, NULL, 0, 0,PM_REMOVE))//Peek只是查看事件,一般不作任何处理????????????????????????? //Get会做一些例行处理,并且把事件从队列中删除掉(WM_PAINT除外)
??????????????????? //通常先peek,看某事件是否存在,再get,进行处理
?????????????????? //未经严格测试:如果你get某个在队列中不存在的事件,程序会陷入等待,但是peek总是立即返回
???????? {???????????? if(msg.message == WM_QUIT)???????????????? break;?? // Leave the PeekMessage while() loop???? //TranslateAccelerator将WM_KEYDOWN和WM_SYSYKEYDOWN消息翻译成为WM_COMMAND消息,//然后直接将消息送到相关的窗口过程中去,直到消息被处理后才返回值???????????? if(TranslateAccelerator(ghwndApp, ghAccel, msg))???????????????? continue;
???????????? TranslateMessage(msg);???????????? DispatchMessage(msg);???????? }
???????? if(msg.message == WM_QUIT)???????????? break;?? // Leave the for() loop
???????? WaitMessage();//当本窗口的消息序列中没有消息的时候,将控制权交给其他的线程直到再次有消息进入自己的消息队列中时才返回???? }
???? // Reached on WM_QUIT message???? CoUninitialize();???? return ((int) msg.wParam);}
别的先别看,现看看这个PASCAL :
The __pascal, __fortran, and __syscall calling conventions are no longer supported. You can emulate their functionality by using one of the supported calling conventions and appropriate linker options.
WINDOWS.H now supports the WINAPI macro, which translates to the appropriate calling convention for the target. Use WINAPI where you previously used PASCAL or __far __pascal.
看来现在用WINAPI来代替己经不用的PASCAL了,那么WINAPI是什么呢?
WINAPI:
查看WINAPI的定义:(WINDOWS.H)
#define WINAPI FAR PASCAL
WINAPI:Use in place of FAR PASCAL in API declarations. If you are writing a DLL with exported API entry points, you can use this for your own APIs.??
原来是个宏定义。用法也说到了,你可以使用WINAPI来为自己的API写一个DLL文件(有导出的API入口点的DLL,废话,没有API入口,要DLL干什么?)。
消息处理函数就是这么定义的:LONG WINAPI?? AppWndProc(HWND hwnd, UINT msg, WPARAM wParam,
您可能关注的文档
最近下载
- 构建面向智能化时代的先进存力中心 2024.pdf
- 2023年放射医学技术考试:放射主管技师相关专业知识真题模拟汇编(共759题).doc VIP
- 《ISO IWA 48-2024ESG实施框架》中文版.docx
- 高一政治必修一:重点知识点总结.pdf
- 医院信息科工程师面试题及参考答案结构化面试题.docx VIP
- 2023年湖南省长沙市长培中学小升初英语模拟试卷及答案解析.pdf VIP
- ORTEC高纯锗谱仪技术手册(final).pdf
- third-wave-AdvantEdge实例说明教程文件.doc
- 红色喜庆风优秀员工表彰PPT模板.pptx VIP
- 苏Z01-2002 城市道路标准图集.docx
文档评论(0)