Windows上编程的入口点函数

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPSTR lpCmdLine,int nCmdShow)

函数的返回值是int类型,APIENTRY是函数的调用约定,

Windef.h中定义

#define CALLBACK    __stdcall
#define WINAPI      __stdcall
#define WINAPIV     __cdecl
#define APIENTRY    WINAPI

APIENTRY最终被定义为__stdcall,通常的Win32_API函数调用都使用_stdcall的的调用约定_stdcall调用约定:

1.参数都是按值传递,调用函数时,参数按重右向左的顺序压入栈中。

2.被调用的函数负责栈的清理工作,它从栈中弹出自己的参数

3.编译器生成的函数,函数名前增加一个下划线'_',函数名后追加'@' 和栈中参数列表的字节数。

WinMain()有四个参数

hInstance,当前应用程序的实例句柄,唯一标识了该程序,很多与程序有关的函数调用都要使用这个参数。

hPrevInstance,应用程序的前一个实例句柄,Windows的早期版本一个程序多次运行时,便会有多个实例,他们共享代码和只读内存,当程序运行时,

后面在启动时hPreInstance不等于NULL,后面示例的启动就可以做些简化,直接使用该程序内存中存在的数据。32位Windows中,不再使用这种机制,

和PrevInstance总是NULL。

lpCmdLine,应用程序的命令行参数,与c语言中的main的命令行参数的差别是它不包含可执行文件的名字.ANS应用程序可以用lpCmdLine访问命令行参数,

Unicode程序必须用GetCommandLineW得到命令行的Unicode字符串。

nCmdShow,控制怎么样是窗口,一般是SW_SHOWNORMAL.

WinMain函数主要是初始化应用程序,显示窗口,进入获取和调度消息循环。消息循环控制了应用程序剩下部分的执行。消息循环再收到WM_QUIT 消息时才会终止,

应用程序退出WinMain返回值为WM_QUIT的wParam参数,如果WM_QUIT是调用PostQuitMessage发送的,返回值是PostQuitMessage的参数nExitCode.

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值