如何在Listctrl 中接收Headerctrl 的通知消息

2024-01-31 02:18

本文主要是介绍如何在Listctrl 中接收Headerctrl 的通知消息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境: winxp, vc6

 

新建一个dialog工程, 在对话框资源中加入一个listctrl,

 

从CListCtrl 继承一个类CMyListCtrl,

 

要在CMyListCtrl处理HDN_ITEMCHANGED,可用ClassWizard 添加一个消息处理函数:

 

BEGIN_MESSAGE_MAP(CMyList, CListCtrl)
 //{{AFX_MSG_MAP(CMyList)
 ON_NOTIFY_REFLECT(HDN_ITEMCHANGED, OnItemChanged)

 //}}AFX_MSG_MAP
END_MESSAGE_MAP()

 

接下来必须手动作如下更改:

BEGIN_MESSAGE_MAP(CMyList, CListCtrl)
 //{{AFX_MSG_MAP(CMyList)
 ON_NOTIFY(HDN_ITEMCHANGEDW,0, OnItemChanged)

 //}}AFX_MSG_MAP
END_MESSAGE_MAP()

 

即把反射消息改为通知消息,并且HDN_ITEMCHANGED要加上W,这样就可以接收HDN_ITEMCHANGED

 

补充说明:

HDN_TRACK消息跟windows 的 "Show window contents while dragging" 有关,如msdn阐述:

 

INFO: HDN_TRACK Notifications and Full Window Drag Style

ID: Q183258

 

If you are using Windows 95 with Microsoft Plus! or Windows NT 4.0, the user can enable full dragging of windows. You can do this in the Microsoft Plus! Property page in the "Display" control panel property sheet. If the "Show window contents while dragging" check box is selected, multiple HDN_ITEMCHANGING notifications will be sent and the HDN_TRACK notification message will not be sent. If the check box is not selected, the opposite will happen--multiple HDN_ITEMCHANGING notifications will not be sent and the HDN_TRACK notification message will be sent.

You can set and retrieve the full window drag feature programmatically by using the SystemParametersInfo function with the SPI_SETFULLDRAGWINDOW to set it and the SPI_GETDRAGFULLWINDOWS options to retrieve it.

The following code shows how to check to see if full window dragging is enabled and, if so, remove the HDS_FULLDRAG style from the list view control's header control.

 

可在CMyListCtrl的PreSubclassWindow作如下处理:

 

ModifyStyle(HDS_FULLDRAG,0);

 

去掉HDS_FULLDRAG,就可以接收HDN_TRACK消息,ok

这篇关于如何在Listctrl 中接收Headerctrl 的通知消息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/662269

相关文章

C++ RabbitMq消息队列组件详解

《C++RabbitMq消息队列组件详解》:本文主要介绍C++RabbitMq消息队列组件的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. RabbitMq介绍2. 安装RabbitMQ3. 安装 RabbitMQ 的 C++客户端库4. A

如何关闭Mac的Safari通知? 3招教你关闭Safari浏览器网站通知的技巧

《如何关闭Mac的Safari通知?3招教你关闭Safari浏览器网站通知的技巧》当我们在使用Mac电脑专注做一件事情的时候,总是会被一些消息推送通知所打扰,这时候,我们就希望关闭这些烦人的Mac通... Safari 浏览器的「通知」功能本意是为了方便用户及时获取最新资讯,但很容易被一些网站滥用,导致我们

SpringCloud整合MQ实现消息总线服务方式

《SpringCloud整合MQ实现消息总线服务方式》:本文主要介绍SpringCloud整合MQ实现消息总线服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、背景介绍二、方案实践三、升级版总结一、背景介绍每当修改配置文件内容,如果需要客户端也同步更新,

Java 的 Condition 接口与等待通知机制详解

《Java的Condition接口与等待通知机制详解》在Java并发编程里,实现线程间的协作与同步是极为关键的任务,本文将深入探究Condition接口及其背后的等待通知机制,感兴趣的朋友一起看... 目录一、引言二、Condition 接口概述2.1 基本概念2.2 与 Object 类等待通知方法的区别

嵌入式Linux驱动中的异步通知机制详解

《嵌入式Linux驱动中的异步通知机制详解》:本文主要介绍嵌入式Linux驱动中的异步通知机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、异步通知的核心概念1. 什么是异步通知2. 异步通知的关键组件二、异步通知的实现原理三、代码示例分析1. 设备结构

一文带你搞懂Redis Stream的6种消息处理模式

《一文带你搞懂RedisStream的6种消息处理模式》Redis5.0版本引入的Stream数据类型,为Redis生态带来了强大而灵活的消息队列功能,本文将为大家详细介绍RedisStream的6... 目录1. 简单消费模式(Simple Consumption)基本概念核心命令实现示例使用场景优缺点2

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优