首页 > 系统相关 >windows消息机制--1基本概念解释

windows消息机制--1基本概念解释

时间:2024-04-08 23:34:59浏览次数:16  
标签:窗口 函数 windows 句柄 应用程序 -- Windows 消息 基本概念

基本概念解释

我们在编写标准C程序的时候,经常会调用各种库函数来辅助完成某些功能:初学者使用得最多的C库函数就是printf了,这些库函数是由你所使用的编译器厂商提供的。在Windows平台下,也有类似的函数可供调用:不同的是,这些函数是由Windows操作系统本身提供的。

1) SDK和API

SDK: 软件开发工具包(Software Development Kit),一般都是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。

API函数: Windows操作系统提供给应用程序编程的接口(Application Programming Interface)。

Windows应用程序API函数是通过C语言实现的,所有主要的 Windows 函数都在 Windows.h 头文件中进行了声明。Windows 操作系统提供了 1000 多种 API函数。

2) 窗口和句柄

窗口是 Windows 应用程序中一个非常重要的元素,一个 Windows 应用程序至少要有一个窗口,称为主窗口。

窗口是屏幕上的一块矩形区域,是 Windows 应用程序与用户进行交互的接口。利用窗口可以接收用户的输入、以及显示输出。

一个应用程序窗口通常都包含标题栏、菜单栏、系统菜单、最小化框、最大化框、 可调边框,有的还有滚动条。如下图:

窗口可以分为客户区和非客户区, 如上图。 客户区是窗口的一部分, 应用程序通常在客户区中显示文字或者绘制图形。

标题栏、 菜单栏、 系统菜单、 最小化框和最大化框、 可调边框统称为窗口的非客户区, 它们由 Windows 系统来管理, 而应用程序则主要管理客户区的外观及操作。

窗口可以有一个父窗口, 有父窗口的窗口称为子窗口。除了上图所示类型的窗口外, 对话框和消息框也是一种窗口。 在对话框上通常还包含许多子窗口, 这些子窗口的形式有按钮、 单选按钮、 复选框、 组框、 文本编辑框等。

在 Windows 应用程序中, 窗口是通过窗口句柄( HWND) 来标识的。 我们要对某个窗口进行操作, 首先就要得到这个窗口的句柄。

句柄( HANDLE) 是 Windows 程序中一个重要的概念, 使用也非常频繁。 在 Windows 程序中, 有各种各样的资源( 窗口、 图标、光标,画刷等), 系统在创建这些资源时会为它们分配内存, 并返回标识这些资源的标识号, 即句柄。 在后面的内容中我们还会看到图标句柄( HICON)、 光标句柄( HCURSOR) 和画刷句柄( HBRUSH)。

3) 消息与消息队列

Windows 程序设计是一种完全不同于传统的 DOS 方式的程序设计方法。它是一种事件驱动方式的程序设计模式,主要是基于消息的。

每一个 Windows 应用程序开始执行后, 系统都会为该程序创建一个消息队列, 这个消息队列用来存放该程序创建的窗口的消息。

例如,当用户在窗口中画图的时候,按下鼠标左键,此时,操作系统会感知到这一事件,于是将这个事件包装成一个消息,投递到应用程序的消息队列中,等待应用程序的处理。

然后应用程序通过一个消息循环不断地从消息队列中取出消息,并进行响应。

在这个处理过程中,操作系统也会给应用程序“ 发送消息”。所谓“ 发送消息”,实际上是操作系统调用程序中一个专门负责处理消息的函数,这个函数称为窗口过程。

4) WinMain函数

当Windows操作系统启动一个程序时,它调用的就是该程序的WinMain函数( 实际是由插入到可执行文件中的启动代码调用的)。 WinMain是Windows程序的入口点函数,与DOS程序的入口点函数main的作用相同,当WinMain 函数结束或返回时,Windows应用程序结束。

标签:窗口,函数,windows,句柄,应用程序,--,Windows,消息,基本概念
From: https://blog.csdn.net/ffffffeiyu/article/details/137345110

相关文章

  • 毕业设计:基于卷积神经网络的条形码识别系统 深度学习 人工智能 计算机视觉
    目录 前言设计思路一、课题背景与意义二、算法理论原理2.1卷积神经网络2.2目标检测三、检测的实现3.1数据集3.2实验环境3.3模型训练最后 前言    ......
  • 毕业设计:基于机器学习的违规占道经营识别系统 人工智能
    目录前言设计思路一、课题背景与意义二、算法理论原理2.1卷积神经网络2.2目标检测算法三、检测的实现3.1数据集3.2实验环境搭建3.3实验及结果分析最后前言    ......
  • 17. InnoDB-spaceID.PageNumber/压缩表
    表空间内部组织结构表空间内部由多个段对象(Segment)组成每个段(Segment)由区(Extent)组成每个区(Extent)由页(Page)组成每个页(Page)里面保存数据(或者叫记录Row)段对用户来说是透明的段也是一个逻辑概念目前为止在information_schema中无法找到段的概念重点需要理解......
  • 热更新框架3-能够理解框架的设计思想
    热更新框架是一种用于在运行时更新应用程序代码的工具。它的设计思想主要是为了解决应用程序更新的问题,使得开发者可以在不停止或重新启动应用程序的情况下,实时地更新代码和资源。热更新框架的设计思想通常包括以下几个方面:动态加载:热更新框架通过动态加载机制,将新的代码和......
  • GitHub提交PR
    一、以"茴香豆"开源项目为例1、github地址https://github.com/InternLM/HuixiangDou/tree/main2、点击Fork项目,将该项目的仓库复制到你自己的GitHub账号下3、在你自己的GitHub账号下,找到刚刚”Fork”的项目仓库,点击”Code”按钮,复制仓库的URL4、在本地终端打开一个文件......
  • Java基础知识总结(44)
    (1)Arrays工具类Java提供了Arrays工具类,里面包含了一些方法,可以直接操作数组。1、intbinarySearch(long[]a,longkey):使用二分查找法查询key元素值在数组a中出现的索引,如果a数组不包含key元素,则返回负数,调用此方法时要求数组中的元素已经按升序排列。先排序再......
  • JVM
    一、JVM是什么JavaVirtualMaachineJava程序的运行环境(Java二进制字节码的运行环境)。优点:一次编写,到处运行自动内存管理,垃圾回收机制二、JVM的组成什么是程序计数器?线程私有的(线程安全),内部保存的字节码的行号。用于记录正在执行的字节码的地址。案例:publiccla......
  • osg 标准视图、前视图、侧视图、顶视图切换
      #include<osg/Node>#include<osg/Geode>#include<osg/ShapeDrawable>#include<osgViewer/Viewer>#include<osgGA/GUIEventHandler>//自定义的视图切换事件处理器classViewSwitchHandler:publicosgGA::GUIEventHandler{public:V......
  • Java基础知识总结(45)
    (3)类和对象      类是面向对象的重要内容,可以把类当做一种自定义类型,可以使用类来定义变量,这种类型的变量统称为引用类型变量。(4)定义类      类是对一批对象的抽象,可以把类理解成某个群体,对象则是具体的存在。      [修饰符]class类名{   ......
  • Web 前端
    web标准:构成:语言说明结构HTML页面元素和内容表现CSS网页元素的外观和位置等页面样式(颜色,大小)行为JavaScript网页模型的定义与页面交互注释:ctrl + / 文本格式化标签介绍:场景:需要让文字加粗,下划线,倾斜,删除线等效果b加粗strong加粗u下划线ins下划线i倾斜em倾斜......