WinMain函数
Windows应用程序的唯一程序入口。
函数原型
int WINAPI WinMain
{
HINSTANCE hInstancem
HINSTANCE hPreInstance,
LPSTR lpCmdLine,
int nCmdShow
}
WINAPI定义如下
#define WINAPI _stdcall
_stdcall是一个函数调用约定,除此之外,还有__cdecl,fastcall,thiscall,naked call等函数调用约定。
_stdcall调用约定又称Pascal调用约定,也是Pascal语言的调用约定。它使用的方式为:
int __stdcall sum(int a,int b);
__stdcall:函数的多个参数由调用者按从右到左的顺序压入堆栈,被调用函数获得参数的序列是从左到右的的;清理堆栈的工作由被调用函数负责。
在Visual C++中,常用宏WINAPI或CALLBACK来表示__stdcall调用约定。
更详细的说明可以查看
__cdecl(也可写成_cdecl)调用约定又称C调用约定,是C函数默认的调用约定,也是C++全局函数的默认调用约定,通常省略。
如
int sum(int a,int b);
int __cdecl sum(int a,int b);
__cdecl:函数的多个参数由调用者按从右向左的顺序压入堆栈,被调函数获得参数的序列是从左到右的;清理堆栈的工作由调用者负责
。
更详细的说明可以查看
/en-us/cpp/cpp/cdecl?view=vs-
WinMain函数的各参数说明
hInstance
应用程序当前运行的实例的句柄,该句柄由Windows系统生成。
hPrevInstance
当前实例的前一个实例的句柄,在Win32环境下,该参数总是NULL,不再起作用
lpCmdLine
一个以空终止的字符串,代表传递给程序的命令行参数。
nCmdShow
指定窗口的显示状态
常用值如下
nCmdShow = 0;不显示
nCmdShow = 1;正常显示(默认)
nCmdShow = 2;最小化显示
nCmdShow = 3;最大化显示
使用代码创建Windows程序的步骤
1、设计一个Windows类
2、在Windows系统中注册Windows类
3、用该Windows类创建一个窗口
4、创建一个消息循环
5、创建一个窗口过程函数WndProc
一、设计Windows类
在创建一个窗口前,必须对窗口进行设计,指定窗口的属性。系统已经定义了WNDCLASS结构用于描述待创建窗口的参数。