WinMain()

1、WinMain()函数
    首先,必须要声明一个WinMain()函数(为了简明起见,这里先不讨论_tWinMain这个宏,也不考虑Unicode的问题),它的原型在Windows.h中定义:

int WINAPI WinMain(HINSTANCE hInstance, //程序当前实例的句柄,以后随时可以用GetModuleHandle(0)来获得 

                                HINSTANCE hPrevInstance,   //这个参数在Win32环境下总是0,已经废弃不用了   

                                char * lpCmdLine, //指向以/0结尾的命令行,不包括EXE本身的文件名,

                                                              //以后随时可以用GetCommandLine()来获取完整的命令行   

                                int nCmdShow      //指明应该以什么方式显示主窗口

);

声明,并且实现这个函数,让Linker程序可以找到它,让编程语言的运行时刻库在完成一些必要的初始化工作后,能够正确地调用它。所以,认为它就是程序的入口点,也是一种简单的“抽象法则”。

在这个入口点函数中,需要按顺序做下面几件事(如果是基于事先设计并存放在资源里的对话框的程序,稍有不同,以后再说):

 
  (1)用RegisterClassEx函数登记一个独一无二的Class


  (2)用CreateWindowEx函数创建一个主窗口


  (3)进入一个”消息循环“,直到收到WM_QUIT消息


  (4)从WinMain函数返回
 
    基本上所有的流程都如出一辙,所以完全可以设计出一个“Template模式”出来重用,让以后的程序直接从某个抽象基类继承,实现基类所需的虚方法就可以了.

2、窗口消息回调函数

    简单地说,回调(Callback)函数就是一个按规定原型实现的一个函数,让别人来调用。比如说,每个窗口都有一个窗口类(用

RegisterClassEx登记的Class,或者系统缺省已实现的Class),每个窗口类有一个回调函数,当窗口收到WIndows消息的时候,就会去调用这个回调函数,而这个回调函数的代码是程序员自己写的,用来根据实际情况处理不同的窗口消息。

 

3、登记窗口类
    在创建主窗口之前,一定要先用RegisterClassEx这个API函数登记一个类,类名必须是独一无二的,所以一般都用GUID字串来做类名。

 

4、创建主窗口
    (略,直接看完整代码)

 

5、消息循环
    消息循环很简单,仅当GetMessage这个API函数返回FALSE时,才退出循环。而GetMessage()仅当处理到消息队列中的WM_QUIT消息时才会返回FALSE。

 

下面代码生成了一个title为Demo的窗口。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值