2.4 常见消息

WM_DESTROY

产生时间:

  • WM_DESTROY 消息通常由操作系统发送,当应用程序的窗口即将被销毁时的消息

附带信息:

  • wParam:为0
  • IParam:为0

一般用法:

  • WM_DESTROY 消息表示该窗口将要被销毁,此时应用程序需要执行一些清理工作,如释放窗口资源、保存数据等。

消息处理过程:

  • 当应用程序接收到 WM_DESTROY 消息时,通常需要执行以下步骤:

1.释放窗口占用的资源,如内存、GDI 对象等。
2.保存应用程序的状态数据,例如用户设置、文档等。
3.取消定时器、关闭网络连接等。
4.发送 WM_QUIT 消息,通知消息循环程序退出。

WM_SYSCOMMAND

产生时间:

  • 当点击窗口的最大化、最小化、关闭等。

附带信息:

  • wParam:具体点击的位置,例如点击关闭就产生SC_CLOSE等
  • IParam:鼠标光标的位置。
    LOWORD(IParam) 水平位置
    HIWORD(IParam) 垂直位置

一般用法:

  • WM_SYSCOMMAND 消息用于通知应用程序执行一些系统级别的命令,如最小化窗口、最大化窗口、关闭窗口等。

消息处理过程:

  • 当应用程序接收到 WM_SYSCOMMAND 消息时,通常需要根据 wParam 参数的值执行相应的系统命令处理逻辑,例如:

如果 wParam 为 SC_CLOSE,则需要关闭应用程序窗口。
如果 wParam 为 SC_MAXIMIZE,则需要最大化应用程序窗口。
如果 wParam 为 SC_MINIMIZE,则需要最小化应用程序窗口。

在这里插入图片描述
当WM_SYSCOMMAND消息被处理完以后,break跳出循环,DefWindowProc函数开始做默认处理,它也会在内部处理一遍WM_SYSCOMMAND,产生WM_DESTROY消息,将销毁窗口,,然后PostQuitMessage(0)发送了WM_QUIT消息程序退出了

在这里插入图片描述这里当WM_SYSCOMMAND消息被处理时直接return 0,表示已经完全处理了这个消息,系统不会再对它进行其他的默认处理,导致了不会执行DefWindowProc,DefWindowProc处理WM_SYSCOMMAND消息的默认行为是产生 WM_DESTROY 消息来关闭窗口,当返回 0 时,系统就不会再执行这个默认的关闭窗口操作,也就无法关闭程序的窗口。

简单来说,就是加了return 0,表示这个消息已经处理完了,DefWindowProc函数就不会执行了,也就没有进行默认的产生WM_DESTROY消息来关闭窗口操作。
在这里插入图片描述

这里再讲下IParam,也就是鼠标光标的位置,鼠标的位置肯定有水平和垂直两个坐标,那么这一个参数怎么接收两个坐标呢?
我们看下lParam的类型:
在这里插入图片描述
共四字节,高两字节表示垂直坐标,低两字节表示水平坐标,这样就实现了一个参数表示两个坐标

那如何拿到这两个坐标呢?

 	LOWORD(IParam);		//水平位置
 	HIWORD(IParam);		//垂直位置

LOWORD 和 HIWORD 是用于从一个 DWORD 类型的数值中提取低位字(low word)和高位字(high word)的两个宏函数,LOWORD 从一个 DWORD 类型的数值中提取低位字(低16位),HIWORD 从一个 DWORD 类型的数值中提取高位字(高16位)。

例如:

DWORD dwValue = 0x12345678;
WORD wLowWord = LOWORD(dwValue); // wLowWord 的值为 0x5678
WORD wHighWord = HIWORD(dwValue); // wHighWord 的值为 0x1234

WM_CREATE

  • 产生时间:
    在窗口创建成功但还未显示时。

  • 附带信息:
    wParam:为0。
    IParam:为CREATESTRUCT类型的指针。
    通过这个指针可以获取CreatWindowEx中的全部12个参数的信息。

  • 一般用法:
    常用于初始化窗口的参数、资源等等,包括创建子窗口等。
    在这里插入图片描述
    这里IParam说的可以获取CreatWindowEx中的全部12个参数的信息,我们来验证一下
    我们这里就直接获取最后一个,先将第12个参数这个附加参数给个值
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

之前说还可以创建子窗口
在这里插入图片描述

WM_SIZE

  • 产生时间:
    在窗口的大小发生变化后。

  • 附带信息:
    wParam:窗口大小变化的原因
    IParam:窗口变化后的大小
    LOWORD(IParam); //变化后的宽度
    HIWORD(IParam); //变化后的高度

  • 一般用法:
    常用于窗口大小变化后,调整窗口内各个部分的布局。

我们添加一个DOS窗口来直观的看一下变化
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这里是因为窗口从无到有也算一次窗口变化,所以这里OnSize被调用,将变化后的宽和高打印到了我们创建的DOS窗口中
在这里插入图片描述
在这里插入图片描述

WM_QUIT

  • 产生时间:
    由程序员发送。WM_QUIT 消息是 Windows 中一个非常重要的窗口消息,它表示应用程序应该退出

  • 附带信息:
    wParam:PostQuitMessage函数传递的参数。
    IParam:0。
    LOWORD(IParam); //变化后的宽度
    HIWORD(IParam); //变化后的高度

  • 一般用法:
    用于结束消息循环,当GetMessage收到这个消息后,会返回FALSE,结束while处理,退出消息循环。

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Kafka是一个分布式流处理平台,常被用作高吞吐量的分布式消息系统。关于Kafka的常见面试题有以下几个方面: 1. Kafka的读写分离: 自Kafka 2.4版本开始,Kafka提供了有限度的读写分离功能。也就是说,Follower副本可以对外提供读服务。这样可以减轻Leader副本的负载,提高系统的可伸缩性和容错性。 2. Kafka数据一致性原理: Kafka使用分布式复制机制来保证数据的一致性和可靠性。Kafka采用了多副本的方式来存储数据,每个分区都有一个Leader副本和若干个Follower副本。Kafka使用基于日志的复制方式,将消息以日志的形式持久化到磁盘上,并将复制的操作作为一次原子操作。通过Leader副本将消息复制到其他Follower副本,确保所有副本的数据一致性。 3. Kafka消息的幂等性: 幂等性是指对于同一条消息的多次处理操作,应该保证最终结果与一次处理操作相同。对于消息队列来说,重复消息的问题常常存在。为了保证消息的幂等性,Kafka建议在业务层进行数据的一致性幂等校验。即在业务逻辑中,判断接收到的消息是否已经处理过,如果已经处理过,则忽略该消息,避免重复处理。 综上所述,Kafka的常见面试题主要涉及到读写分离、数据一致性原理和消息的幂等性。这些问题都是Kafka分布式消息系统的核心概念,对于理解和应用Kafka系统非常重要。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java被问过的面试题-初中级-记录1](https://blog.csdn.net/m0_56169170/article/details/129498345)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Kafka 面试题(2022)](https://blog.csdn.net/weixin_53597801/article/details/126897297)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦里捡到一只猫丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值