Windows编程

引言

在进行PC程序开发的时候,我大多数首选的是Qt,但是Windows编程也很重要。下面就介绍下Windows编程的主要概念

Windows编程的主要概念

句柄

一个句柄值是指使用的一个唯一的整数值,即一个4字节(64位程序中位8字节)长度的数值,来便是应用程序中的不同对象和同类对象中的不同实例。MFC中没建立一个窗口,这个窗口就会有一个窗口句柄来唯一标识它。
但是句柄不是一个指针。

句柄和指针之间的区别

  • 首先,指针指向系统中物理内存的地址,而句柄是windows在内存中维护的一个对象内存物理地址列表的整数索引,句柄是一种指向指针的指针。

使用句柄的原因

  • 在windows系统中的内存管理一般会将当前处于空闲状态的对象的内存释放掉,当需要访问的时候再重新提交分配物理内存,从而导致对象的物理地址是变化的,这样就不允许系统直接通过指针来访问(物理地址不断变化)的对象。

句柄的功能

  • 句柄是一种指向指针的指针。由于windows是一种以虚拟内存为基础的操作系统,其内存管理器经常会在内存中来回的移动对象,以此来满足各种应用程序对内存的需求。而对象的移动意味着对象内存地址的变化,正是因为如此,如果直接使用指针,在内存地址被改变后,系统将不知道到哪里去再调用这个对象。
  • windows系统为了解决这个问题,系统专门为各种应用程序腾出了一定的内存地址(句柄)专门用来记录这些变化的地址(这些内存地址就是指向指针的指针),这些内存地址本身是一直不变化的。windows内存管理器在移动某些对象之后,他会将这些对象新的内存地址传给句柄,告诉他移动后对象去了哪里。

句柄(稳定的)---->记载着对象在内存中的地址---->对象在内存中的地址(不稳定的)---->记载着实际对象的地址。

在这里插入图片描述

图中实线表示初始化的情况,虚线表示在内存管理器处理之后的情况

事件与消息

事件(Event)是用户操作应用程序产生的动作或者Windows系统自身所长生的动作。
消息(Message)就是告诉应用某i个事件触发了。

消息队列与消息循环

当一个事件发生时,Windows会为应用程序发送一条消息,并在该应用程序的消息队列中增加一条消息。该消息队列只是一个保存可应用程序所接收到的消息的优先队列。
应用程序在一个消息循环中不断的检查消息队列,当收到一条消息时,便将其分派给接收该消息的特定窗口的过程。

回调函数

回调函数就是一个通过函数指针调用的函数。
如果把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们便说这既是回调函数。
回调函数不是由该函数的实现方法直接调用,而是在特定的条件或事件发生时,由另一方调用,用于对该事件或条件进行响应。

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Windows编程是指在Windows操作系统上进行软件开的过程。它涵盖了各种应用程序的开发,包括桌面应用程序、游戏、设备驱动程序等。下面是Windows编程的些重要概念和技术: 1. Windows API:Windows API(Application Programming Interface)是一组函数和数据结构,用于与Windows操作系统进行交互。开发者可以使用Windows API来创建窗口、处理用户输入、绘制图形等。 2. 编程语言:Windows编程可以使用多种编程语言进行,如C++、C#、VB.NET等。其中,C++是最常用的语言之一,因为它提供了对Windows API的直接访问。 3. 窗口和消息循环:在Windows编程中,窗口是用户界面的基本元素。开发者可以使用Windows API创建和管理窗口,并通过消息循环处理用户输入和系统事件。 4. 图形界面库:为了简化Windows编程,许多图形界面库被开发出来,如MFC(Microsoft Foundation Classes)、WinForms、WPF(Windows Presentation Foundation)等。这些库提供了更高级的抽象和封装,使开发者能够更快速地创建用户界面。 5. 数据持久化:在Windows编程中,通常需要将数据保存到文件或数据库中。开发者可以使用各种数据库技术(如SQL Server、MySQL)或文件操作API(如Windows API的文件操作函数)来实现数据持久化。 6. 多线程编程:为了提高程序的性能和响应能力,Windows编程中常常使用多线程。开发者可以使用线程相关的API来创建和管理线程,并实现并发执行的功能。 7. 调试和测试:在Windows编程中,调试和测试是非常重要的环节。开发者可以使用各种调试工具(如Visual Studio)来定位和修复程序中的错误,并使用单元测试和集成测试来验证程序的正确性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值