在Win-32 C ++应用程序中,CALLBACK关键字是什么意思?

在Win-32 C ++应用程序中,CALLBACK关键字是什么意思?,第1张

概述在Win-32 C ++应用程序中,CALLBACK关键字是什么意思?

Win-32 C ++应用程序中的某些函数调用将CALLBACK关键字应用于它们,如本例(取自此MSDN页面 ):

BOol CALLBACK DeleteItemProc(HWND hwndDlg,UINT message,WParaM wParam,LParaM lParam) { // ... code here ... }

我通过Visual Studio看到CALLBACK关键字被定义(使用#define )作为__stdcall 。 __stdcall文档并没有让我更清楚(对我来说)它做了什么。

总之, 使用CALLBACK对我有什么作用? 这是绝对必要的,还是我可以离开这个声明?

EndDialog与DestroyWindow

WorkbookOpen事件与windows服务没有触发,而它与windows应用程序触发

确定types的定义

哪个线程调用windows proccallback函数?

shell扩展:Dragqueryfile返回至多16(在windows 7中)

如何在linux中使用C语言的伪terminal?

主/工作线程和信号处理

在Visual Studio 2005中编译Win32“hello world”的命令行

设置控制台以最大化在Dev C ++

单声道/ C#:一个很好的GUI工具包? 在KDE上看起来不错?

需要的是,__stdcall不是大多数编译器的默认调用约定。 __cdecl是正常的默认值。 调用惯例错误将使您的程序在一个难以诊断的方式行事不端。 参数值错误,堆栈不平衡。

这只是32位代码中的一个问题,64位代码只有一个调用约定。 谁又增加了一个,将被立即禁止到南大西洋的一个小岛上终生。 __stdcall是一个历史性的意外事件,从DOS和16位windows的pascal调用约定开始,当只有很少的内存可用时,在关闭调用的指令时很重要。

CALLBACK被定义为__stdcall机制。 但是,这本身就是一个功能,在发生一个事件(比如说)的时候,这个功能会被其他功能调用。

这是必须的吗? 是! 为什么? 因为默认是__cdecl

CALLBACK不是关键字。 这只是一个预处理器宏,它被替换为适当的调用约定,正如您已经注意到的那样是__stdcall 。

这是一个类似“Pascal”的调用约定, 不支持可变数量的参数 ,Win32 API从早期开始使用,并且由于历史原因而仍然存在。

总结

以上是内存溢出为你收集整理的在Win-32 C ++应用程序中,CALLBACK关键字是什么意思?全部内容,希望文章能够帮你解决在Win-32 C ++应用程序中,CALLBACK关键字是什么意思?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1267658.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存