窗口和消息

窗口和消息的概念几乎是Windows程序设计最基础而且重要的两个概念。

桌面上最明显的窗口就是应用程序窗口。另一类的窗口是对话框。装饰对话框表面的还有格式各样的按钮,列表框或者文本框,其中每个小的可视对象都是一个窗口。更确切的说,这些都是“子窗口”或“控件窗口”或“子窗口控件”。子窗口建立时选择一个父窗口附着在上面。这样一层一层的进行分类。

更进一步,其实我们的Windows桌面页是一个窗口。窗口可以有它的子窗口,或者兄弟窗口。(Windows窗口的存储形式其实是用二叉树实现,桌面的就是根节点,节点的左子树是他的子窗口。桌面的右子树定义了它的兄弟窗口。)

作为对象,窗口会在屏幕上看到这些窗口,并通过鼠标和键盘直接与它们进行交互,而程序员的观点和用户观点及其相似。窗口以“消息”的形式接收窗口的输入,窗口也用消息与其它窗口通信。

消息就是窗口之间通信的方式。Windows最大的特点就是它可以给窗口发送消息。它也可以调用程序里的函数(回调函数)。这就是Windows编程和Dos编程最大的区别。Windows帮助程序员实现了很多的功能。

Windows就像一个认真负责的秘书提醒你的程序完成自己的工作,当程序建立的时候,它给程序发送WM_CREATE消息。就好像在通知程序,窗口正在创建,需要做什么赶快实现。当窗口大小被改变的时候它发送给程序WM_SIZE,通知程序窗口的大小已经被改变了,需要做什么?当你需要做什么时,只需要在这时处理,然后返回。如果不需要做什么的时候只需要返回return DefWindowProc(hWnd, iMsg, wParam, lParam);来调用缺省的函数就可。

这里就是Windows编程的需要做的一个重要的思维转变,以往的DOS方式下应用程序作为主体调用系统,而现在是由系统作为主体调用应用程序。其实它比和以往的DOS下应用程序编程更为简单。真正生成的程序和DOS区别也不大:

以往的DOS程序:                                         现在的Windows程序

void main()                                                    

{………                                                         

//程序建立初始化:                                        //程序建立初始化相应WM_CREATE

…………                                                        ……….

//程序结束清除:                                            //程序结束 相应WM_DESTROY消息

………….                                                       //

}

可以看出现在的Windows编程和传统的DOS最大的区别就是一种思路上的转变,从我控制所有的事情,变为Windows控制主要的流程,我只需要在需要的地方加上我的数据。这也是微软设计Windows编程的一种理念。

消息队列与进队消息和不进队消息:

每个窗口过程都有自己的消息队列,Windows把消息放入消息队列,而程序取出消息并执行。消息队列能对消息进行一定的缓冲和整理。

Windows给窗口发送消息,Windows程序有时依次等待消息,有时直接从程序外面接收消息。它们分别被称为“进队的消息”和“不进队的消息”,大部分情况下不进队的消息是通过调用特定的Windows函数产生的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值