使用int WINAPI WinMain的时候编译时总是提示缺少main函数啊,怎么回事?

作者&投稿:幸旺 (若有异议请与网页底部的电邮联系)
请教一个windowsAPI的问题.int WINAPI WinMain .中间这个 WINAPI是怎么回事?~

WINAPI 表示WindowsAPI函数调用约定,在SDK中定义
#define WINAPI __stdcall
也就是说定义了WINAPI 的函数采用__stdcall调用约定。

WinMain是Windows应用程序的入口函数,其中LPSTR nCmdLine是传递给程序的命令参数,你可以使用GetCommandLine函数来使用它;int nCmdShow参数是窗口的显示方式,运行该程序时调用CreateProcess函数向CreateProess函数传递的相应的值。

main函数是程序的入口,一般编程环境是自动给你配好的,

你定义
int WINAPI WinMain时,系统就是调用main函数处理的。

但有些古老的编译环境(比如c的一般编译环境工具)不提供的,所以需要先自己定义一个main函数,与其他函数定义是一样的。

WINAPI 表示WindowsAPI函数调用约定,在SDK中定义 #define WINAPI __stdcall 也就是说定义了WINAPI 的函数采用__stdcall调用约定。

没区别
windef.h里面:
#define
apientry
winapi
所以两者是等同的
都是__stdcall,是一种调用约定,参数是从右向左传递入栈的


清远市13975369757: 使用int WINAPI WinMain的时候编译时总是提示缺少main函数啊,怎么回事? -
善江丹参: main函数是程序的入口,一般编程环境是自动给你配好的,你定义 int WINAPI WinMain时,系统就是调用main函数处理的.但有些古老的编译环境(比如c的一般编译环境工具)不提供的,所以需要先自己定义一个main函数,与其他函数定义是一样的.

清远市13975369757: int winapi winmain这个winapi是干什么的? -
善江丹参: 如果你是用VC++的话它们是一样的 原形是这样的: int WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow );

清远市13975369757: int WINAPI WinMain;这个图形界面函数,我想在别的函数里面调用,或者说,在别的函数里面触发这个界面. -
善江丹参: 这个不是图形界面函数, 这是SDK项目的入口函数; 比如控制台中的入口函数是main()函数一样; 你也可以这样弄, 定义一个函数func(); 它的函数体跟WinMain一模一样, 然后在WinMain中调用func函数; 在其他函数里调用func函数

清远市13975369757: int WINAPI WinMain() -
善江丹参: 是不是C代码啊,C++应该是可以的,C语言的声明必须放在所有实现代码的上面,这是C和C++的区别之一,任何变量都是这样.

清远市13975369757: int WINAPI WinMain()是什么意思呀
善江丹参: WinMain是Windows应用程序的入口函数,其中LPSTR nCmdLine是传递给程序的命令参数,你可以使用GetCommandLine函数来使用它;int nCmdShow参数是窗口的显示方式,运行该程序时调用CreateProcess函数向CreateProess函数传递的相应的值.

清远市13975369757: int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
善江丹参: 双击QQ快捷方式, 会启动一个qq程序, 假设给它个编号9527;再双击QQ快捷方式, 又启动了一个新的qq, 假设编号9528;对于9528来说, hInstance=9528, hPrevInstance=9527;不过, msdn说hPrevInstance的这个判断没效果, ...

清远市13975369757: VC++ PostMessage 的使用 -
善江丹参: #include int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){ HWND hwnd ; hwnd = FindWindow(NULL,"计算器")...

清远市13975369757: int APIENTRY WinMain与int WINAPI WinMain区别 -
善江丹参: 没区别 windef.h里面: #define APIENTRY WINAPI 所以两者是等同的 都是__stdcall,是一种调用约定,参数是从右向左传递入栈的

清远市13975369757: int winapi winmain()是什么意思?不什么不是int winmain() -
善江丹参: #define WINAPI __stdcall 具体来说,他们是关于堆栈的一些说明,首先是函数参数压栈顺序,其次是压入堆栈的内容由谁来清除,调用者还是函数自己?stdcall的调用约定意味着:1)参数从右向左压入堆栈;2)函数自身修改堆栈;3)函数名自动加前导的下划线,后面紧跟一个@符号,其后紧跟着参数的尺寸.不是VC特殊的语法

清远市13975369757: int WINAPI WinMain(....)里面的四个参数分别是什么含义,前两个参数的类型是什 -
善江丹参: 详细介绍请看 http://baike.baidu.com/view/1002349.html 函数名是 WinMain WINAPI 是宏定义,这是为了解决平台和语言差异,使用正确的函数调用方式( __stdcall 、__cdecl和__pascal)

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网