int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, //当前程序的实例句柄,是外部传递进来的,这个参数就代表当前程序进程
_In_opt_ HINSTANCE hPrevInstance, //上一个,启动我的进程是谁
_In_ LPTSTR lpCmdLine, //进程和外部进行通信
_In_ int nCmdShow) //窗口是如何显示的,是WinMain里特有的
1.HISTANCE:可以像操作HANDEL一样来操作HISTANCE,HISTANCE在R0层也是一个内核对象,代表的是一个进程。
2.为什么一个程序自己的进程句柄需要由外部传递进来了。。。。。。因为程序自己是不能把自己创建成进程的,进程是由操作系统去创建的,操作系统创建的进程是在R0层,而程序运行的是在R3层,所以进程的ID是需要由外部来进行传递的。
3.注意:WinMain和Main函数的区别:WinMain是由Windows提供的。而Main函数是C语言的语法,如果想在main函数中使用Windows的函数特性,可以在Main函数里面使用一个GetIstance()来进行交互。 Main函数中就没有HISTANCE吗?,在C语言诞生的年代,还没有Windows系统,更加没有HINSTANCE这个Windows提供的进程句柄了。但是,这些东西在R0层里没有区别,所有的程序,都是操作系统来生成进程的。反正就是在Windows下面编程使用WinMain()就对了。。。。。。。。。。。~~!!!!!
注册窗口
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);//碰到cbSize必须要填充,不填充就会调用