2021-03-10 WINDOWS应用程序概述

本文详细介绍了Windows应用程序的工作原理,重点阐述了基于消息的程序设计模式。讲解了消息结构、消息类型、消息队列、消息循环以及程序入口WinMain函数。同时,提到了窗口类的定义、注册和创建过程,为后续的Windows应用程序开发奠定了基础。
摘要由CSDN通过智能技术生成

WINDOWS应用程序概述

WINDOWS应用程序与以往的DOS程序不同,它是以消息为基础,以事件为驱动的应用程序。应用程序在运行时,会不断地等待操作系统发送给自身消息(利用一个While 循环),然后依据不同的消息进行相应的处理。
消息实际上是一种消息机构,其中包含窗口句柄,消息标识和一些辅助信息。
接收并处理信息的主角是窗口。每一个窗口都有一个负责处理消息的函数,通常称之为窗口函数或回调函数
当窗口获得一个消息时,窗口函数会判断消息的类型,并确定如何处理消息。因此,开发人员需要负责设计窗口函数以实现其预定的功能。
这里所说的窗口并不单指对话框。按钮,编辑框,组合框等控件也可以称为窗口。
1:消息
WINDOWS应用程序是基于消息的程序设计模式。例如,当用户在窗口上移动鼠标时,操作系统会首先发现该事件,然后将事件封装成一个消息,发送到消息队列中,应用程序从消息队列中取出消息,并将其回转给操作系统,由操作系统调用窗口函数对消息进行处理。
1.1消息结构
WINDOWS为了记录消息信息,给定了一个消息结构MSG。
typedef struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG;

      参数说明:
       hwnd:该成员实际上是一个窗口句柄,表示消息所属窗口。通过它,操作系统可以将消息分派到正确的窗口中。
       message:该成员表示消息标识符,确定具体是那个消息。
       wParam:该成员表示消息的附加信息。其含义依赖于具体的消息。以WM_MOSEMOVE消息为例,wParam表示的是被用户按下的虚拟键。
       lParam: 该成员表示消息的附加信息。其含义依赖于具体的消息。以WM_MOSEMOVE消息为例, lParam的低字节表示鼠标的横坐标位置, lParam的高字节表示鼠标的纵坐标位置。
       time:该成员表示消息被放入消息队列中的时间。
       pt:该成员表示消息被放入消息队列时的鼠标位置(以屏幕坐标表示)。

在WINDOWS程序中,句柄是一个非常重要的概念,它起到标识对象的作用。系统的内核对象(进程,线程,事件等),GDI对象(窗口,图标,光标等)都包含一个句柄。当系统创建内核对象或GDI对象时,会

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值