回 帖 发 新 帖 刷新版面

主题:[求助]类似WINAPI,CALLBACK这类在放在返回值和函数之间的参数是干什么用的?

这是《windows程序设计》书中中的第一个例子:
#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)

{

MessageBox (NULL, TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"), 0);

return 0 ;

}

在书中的解释:
WINAPI标识符在WINDEF.H定义,语句如下:

#define WINAPI __stdcall

该语句指定了一个呼叫约定,包括如何生产机械码以在堆栈中放置函数呼叫的参数。许多Windows函数呼叫声明为WINAPI。

MSDN解释:
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.

类似的回调函数CALLBACK也不太懂,各位前辈,希望能给我详细解释一下,先谢过了

回复列表 (共6个回复)

沙发

一种调用约定,约定定义了一种生成机器代码和放置函数参数的方式

板凳

和dll的引入,引出是不是一个道理,这里的winapi相当于一个引出?

3 楼

__stdcall
WINAPI  CALLBACK 等不少符号常量都被定义为__stdcall;在网上查了一下说是回调说明,指由系统调用的函数。与WIN程序的架构有关。windows程序的架构都是由系统给约定好了,程序员只需按这个架构的需要声明并编写实现具体功能的函数由操作系统根据具体的消息调用。带有回调说明的函数都是架构需要的函数,必须按要求编写,供系统调用。

其实这种说明任意一本差不多的书中都会有。

下面我说的别的,可能不正确,可以参考。

而C++标准的函数声明语法,在函数明前只有一个说明符。如果完全按照c++标准来,实现回调功能必须用另外一种方式来。所以我认为这是VC++对c++标准的扩展,以实现自己的需要。其实个人认为c++标准只是一个让编译器开发商遵循(最好是全遵循)的标准,各开发者可以根据自己的实际需要做出扩展。不断更新的c++标准中有部分就是采纳的一些编译器开发者做出的扩展。

4 楼

追加说明:
我刚有看了一点东西;
http://bbs.pfan.cn/post-298796.html
回调,这个术语用在这很可能不正确。
这是我国的通病,喜欢乱用术语

5 楼

__stdcall 就是标准调用,就是参数是从右往左依次入栈,由被调用函数本身平衡堆栈

6 楼

学习.

[color=FFFFFF][url=http://yuyinliaotian.spaces.live.com/].[/url][url=http://shipinzhan.spaces.live.com/].[/url][url=http://jiaoyouwang.spaces.live.com/].[/url][url=http://luotiliaotian.spaces.live.com/].[/url][url=http://luoliaowang.spaces.live.com/].[/url][url=http://cid-af1a4ec1db5b9900.spaces.live.com/].[/url][url=http://97gan-97gan.spaces.live.com/].[/url][url=http://97ai-97ai-97ai.spaces.live.com/].[/url][url=http://qvod-qvod.spaces.live.com/].[/url][url=http://qvod.spaces.live.com/].[/url][url=http://kuaibo-qvod.spaces.live.com/].[/url][url=http://cf-cfwaigua.spaces.live.com/].[/url][url=http://dnf-dnfqiandao.spaces.live.com/].[/url][url=http://cid-6364484f512ccf61.spaces.live.com/].[/url][url=http://cid-f935c1b4a3089f13.spaces.live.com/].[/url][url=http://cid-ba7e279874360dfc.spaces.live.com/].[/url][url=http://cid-98f2367c673dd93a.spaces.live.com/].[/url][url=http://cid-9eb7327f611df626.spaces.live.com/].[/url][url=http://se-huangse.spaces.live.com/].[/url][url=http://97ai-97se.spaces.live.com/].[/url][url=http://97gan-97gan-97gan.spaces.live.com/].[/url][url=http://quanhuang97.spaces.live.com/].[/url][url=http://97ai-97ai-ai.spaces.live.com/].[/url][url=http://dj97-dj97.spaces.live.com/].[/url][url=http://97wuyuetian.spaces.live.com/].[/url][url=http://97se-97se.spaces.live.com/].[/url][url=http://97wen.spaces.live.com/].[/url][url=http://kof97-kof97.spaces.live.com/].[/url][url=http://97bobo-91bobo.spaces.live.com/].[/url][url=http://97bobo.spaces.live.com/].[/url][url=http://qvod-dianying.spaces.live.com/].[/url][url=http://qvod-lunlidianying.spaces.live.com/].[/url][url=http://qvod-dianyingwang.spaces.live.com/].[/url][url=http://qvod-zaixiandianying.spaces.live.com/].[/url][url=http://qvod-dianyingxiaozai.spaces.live.com/].[/url][url=http://qvod-yingpian.spaces.live.com/].[/url][url=http://qvod-zuixindianying.spaces.live.com/].[/url][url=http://kuaibo-kuaibo.spaces.live.com/].[/url][url=http://kuaibodianying.spaces.live.com/].[/url][url=http://kuaiboyingyuan.spaces.live.com/].[/url][url=http://kuaiboxiazai.spaces.live.com/].[/url][url=http://kuaibolunli.spaces.live.com/].[/url][url=http://kuaiboziyuan.spaces.live.com/].[/url][url=http://qq-kuaibo.spaces.live.com/].[/url][url=http://kuaibowang.spaces.live.com/].[/url][url=http://beijingjiaoyou.spaces.live.com/].[/url][url=http://jiaoyou-jiaoyou.spaces.live.com/].[/url][url=http://jiaoyou-liaotian.spaces.live.com/].[/url][url=http://jiaoyouwangzhan.spaces.live.com/].[/url][url=http://cid-da67a551e3fd8249.spaces.live.com/].[/url][url=http://liaotianjiaoyou.spaces.live.com/].[/url][url=http://jiaoyoudizhi.spaces.live.com/].[/url][url=http://chengrenjiaoyou.spaces.live.com/].[/url][url=http://meinvjiaoyou.spaces.live.com/].[/url][url=http://liaotian-meinv.spaces.live.com/].[/url][url=http://jiaopengyou-a.spaces.live.com/].[/url][url=http://cid-f83e7a48c43789ec.spaces.live.com/].[/url][url=http://cid-930cb719a5190f86.spaces.live.com/].[/url][url=http://cid-00670414fa35710c.spaces.live.com/].[/url][url=http://cid-9901121a6f5b17e5.spaces.live.com/].[/url][url=http://cid-8bacdf4e16b14aaa.spaces.live.com/].[/url][url=http://cid-98acc788830747c8.spaces.live.com/].[/url][url=http://cid-65d1608712e2518a.spaces.live.com/].[/url][url=http://cid-d478a3e948303f17.spaces.live.com/].[/url][url=http://cid-489f10841fa903d3.spaces.live.com/].[/url][url=http://cid-37a6270685083d2f.spaces.live.com/].[/url][url=http://cid-0e9d8f40729749a2.spaces.live.com/].[/url][url=http://cid-03ba3ecafc7a790f.spaces.live.com/].[/url][url=http://cid-a917153815be8340.spaces.live.com/].[/url][url=http://cid-0d421659c7aefa46.spaces.live.com/].[/url][url=http://liaotianshi-a.spaces.live.com/].[/url][url=http://cid-b8b0fba0a040c9dd.spaces.live.com/].[/url][url=http://cid-11f9a85b2aa56136.spaces.live.com/].[/url][url=http://shipinliaotian-51.spaces.live.com/].[/url][url=http://shiliaowang.spaces.live.com/].[/url][url=http://luotiliao.spaces.live.com/].[/url][url=http://chengrenliaotian.spaces.live.com/].[/url][url=http://tingtingwuyuetian.spaces.live.com/].[/url][url=http://niuniujidi97.spaces.live.com/].[/url][url=http://liaotianshi97.spaces.live.com/].[/url][url=http://jiaoyoushequ.spaces.live.com/].[/url][url=http://shipinjiaoyou.spaces.live.com/].[/url][url=http://luotiliao1.spaces.live.com/].[/url][url=http://meinvluowu.spaces.live.com/].[/url][url=http://www.137v.com/].[/url][url=http://www.ad61.com/].[/url][url=http://blog.pfan.cn/fadianjichu].[/url][url=http://bbs.pfan.cn/post-304629.html].[/url][url=http://bbs.pfan.cn/post-304631.html].[/url][url=http://blog.sina.com.cn/fadianjizhu].[/url][url=http://fadianjizhu.blog.163.com/].[/url][/color]

我来回复

您尚未登录,请登录后再回复。点此登录或注册