使用int WINAPI WinMain的时候编译时总是提示缺少main函数啊,怎么回事?
作者&投稿:幸旺 (若有异议请与网页底部的电邮联系)
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,是一种调用约定,参数是从右向左传递入栈的
善江丹参: 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)