当前位置: 首页 > news >正文

CViewState::InitializeColumns函数分析之_hdsaColumnStates的结构

CViewState::InitializeColumns函数分析之_hdsaColumnStates的结构


    // Set up saved column state only if the saved state
    // contains information other than "nothing".

    if (_hdsaColumnStates)
    {
        UINT cStates = DSA_GetItemCount(_hdsaColumnStates);
        if (cStates > 0)
        {
            // 99/02/05 vtan: If there is a saved column state then
            // clear all the column "on" states to "off" and only
            // display what columns are specified. Start at 1 so
            // that name is always on.        把35项的选中标志置OFF

            for (iReal = 1; iReal < GetColumnCount(); iReal++)
            {
                COL_INFO* pci = (COL_INFO*)DSA_GetItemPtr(_hdsaColumns, iReal);
                pci->csFlags &= ~SHCOLSTATE_ONBYDEFAULT;
            }
            //把_hdsaColumnStates的结构对应数组置ON,这里是0,1,2,3,6项的选中标志置ON
            for (UINT i = 0; i < cStates; i++)
            {
                DWORD dw;
                DSA_GetItem(_hdsaColumnStates, i, &dw);
                SetColumnState(dw, SHCOLSTATE_ONBYDEFAULT, SHCOLSTATE_ONBYDEFAULT);
            }
        }
    }

    return S_OK;
}


结果:


1: kd> dt comctl32!_DSA 000d6ba0
   +0x000 cItem            : 0n5
   +0x004 aItem            : 0x000f0210 Void
   +0x008 cItemAlloc       : 0n5
   +0x00c cbItem           : 0n4
   +0x010 cItemGrow        : 0n5
   +0x014 magic            : 0x4153
1: kd> dt 0x000f0210+0x4*0
Symbol not found at address 000f0210.
1: kd> dd 0x000f0210+0x4*0
000f0210  00000000 00000001 00000002 00000003
000f0220  00000006 00000000 00110a50 00094400
000f0230  00050004 000a01bd 801f0014 2559a1f0
000f0240  11d421d7 c000afbd f0b9604f 00000000
000f0250  00040029 000901b1 501f0014 20d04fe0
000f0260  10693aea 0008d8a2 9d30302b 432f0019
000f0270  00005c3a 00000000 00000000 00000000
000f0280  00000000 31006a00 00000000 00000000

1: kd>  dt shell32!COL_INFO 0x1209c0 +0xb0*7
   +0x000 szName           : [80] 0x53
   +0x0a0 cChars           : 0xa
   +0x0a4 fmt              : 0
   +0x0a8 csFlags          : 0x81
   +0x0ac tsFlags          : 0
1: kd>  dt shell32!COL_INFO 0x1209c0 +0xb0*6
   +0x000 szName           : [80] 0x41
   +0x0a0 cChars           : 0xa
   +0x0a4 fmt              : 0
   +0x0a8 csFlags          : 0x11
   +0x0ac tsFlags          : 0
1: kd>  dt shell32!COL_INFO 0x1209c0 +0xb0*5
   +0x000 szName           : [80] 0x44
   +0x0a0 cChars           : 0x14
   +0x0a4 fmt              : 0
   +0x0a8 csFlags          : 0x83
   +0x0ac tsFlags          : 0
1: kd>  dt shell32!COL_INFO 0x1209c0 +0xb0*4
   +0x000 szName           : [80] 0x44
   +0x0a0 cChars           : 0x14
   +0x0a4 fmt              : 0
   +0x0a8 csFlags          : 3
   +0x0ac tsFlags          : 0
1: kd>  dt shell32!COL_INFO 0x1209c0 +0xb0*3
   +0x000 szName           : [80] 0x44
   +0x0a0 cChars           : 0x14
   +0x0a4 fmt              : 0
   +0x0a8 csFlags          : 0x13
   +0x0ac tsFlags          : 0
1: kd>  dt shell32!COL_INFO 0x1209c0 +0xb0*2
   +0x000 szName           : [80] 0x54
   +0x0a0 cChars           : 0x14
   +0x0a4 fmt              : 0
   +0x0a8 csFlags          : 0x11
   +0x0ac tsFlags          : 0
1: kd>  dt shell32!COL_INFO 0x1209c0 +0xb0*1
   +0x000 szName           : [80] 0x53
   +0x0a0 cChars           : 0x10
   +0x0a4 fmt              : 1
   +0x0a8 csFlags          : 0x12
   +0x0ac tsFlags          : 0
1: kd>  dt shell32!COL_INFO 0x1209c0 +0xb0*0
   +0x000 szName           : [80] 0x4e
   +0x0a0 cChars           : 0x1e
   +0x0a4 fmt              : 0
   +0x0a8 csFlags          : 0x11
   +0x0ac tsFlags          : 0

1: kd> db 0x1209c0 +0xb0*0
001209c0  4e 00 61 00 6d 00 65 00-00 00 00 00 00 00 00 00  N.a.m.e.........

1: kd> db 0x1209c0 +0xb0*1
00120a70  53 00 69 00 7a 00 65 00-00 00 00 00 00 00 00 00  S.i.z.e.........

1: kd> db 0x1209c0 +0xb0*2
00120b20  54 00 79 00 70 00 65 00-00 00 00 00 00 00 00 00  T.y.p.e.........

1: kd> db 0x1209c0 +0xb0*3
00120bd0  44 00 61 00 74 00 65 00-20 00 4d 00 6f 00 64 00  D.a.t.e. .M.o.d.
00120be0  69 00 66 00 69 00 65 00-64 00 00 00 00 00 00 00  i.f.i.e.d.......

1: kd> db 0x1209c0 +0xb0*4
00120c80  44 00 61 00 74 00 65 00-20 00 43 00 72 00 65 00  D.a.t.e. .C.r.e.
00120c90  61 00 74 00 65 00 64 00-00 00 00 00 00 00 00 00  a.t.e.d.........

1: kd> db 0x1209c0 +0xb0*5
00120d30  44 00 61 00 74 00 65 00-20 00 41 00 63 00 63 00  D.a.t.e. .A.c.c.
00120d40  65 00 73 00 73 00 65 00-64 00 00 00 00 00 00 00  e.s.s.e.d.......

1: kd> db 0x1209c0 +0xb0*6
00120de0  41 00 74 00 74 00 72 00-69 00 62 00 75 00 74 00  A.t.t.r.i.b.u.t.
00120df0  65 00 73 00 00 00 00 00-00 00 00 00 00 00 00 00  e.s.............

相关文章:

CViewState::InitializeColumns函数分析之_hdsaColumnStates的结构

CViewState::InitializeColumns函数分析之_hdsaColumnStates的结构 // Set up saved column state only if the saved state // contains information other than "nothing". if (_hdsaColumnStates) { UINT cStates DSA_GetItemCount(_hdsaColumnS…...

WPF-数据转换器

一、单值转换器 1.不传参数 转换器 当Value值大于100时返回红色 public class DataConverter : IValueConverter{/// <summary>/// 表示从源到目标数据转换/// </summary>/// <param name"value">数据源的值</param>/// <param name&q…...

09 解决方案 - 开源机器人+具身智能+AI

开源机器人、具身智能(Embodied Intelligence)以及AI技术的结合,可以为机器人领域带来全新的解决方案。以下是这一结合的可能方向和具体方案: 1. 开源机器人平台 开源机器人平台为开发者提供了灵活的基础架构,可以在此基础上结合具身智能和AI技术。以下是一些常用的开源机…...

2025 BabitMF 第一期开源有奖活动正式开启 !

为了促进开源社区的交流与成长&#xff0c;字节跳动开源的多媒体处理框架 BabitMF &#xff08;GitHub - BabitMF/bmf: Cross-platform, customizable multimedia/video processing framework. With strong GPU acceleration, heterogeneous design, multi-language support, e…...

项目管理十大领域是哪些

项目管理的十大领域包括&#xff1a;整合管理、范围管理、时间管理、成本管理、质量管理、人力资源管理、沟通管理、风险管理、采购管理、干系人管理。这些领域构成了一个完整的项目管理框架&#xff0c;每个领域都扮演着至关重要的角色&#xff0c;帮助项目经理有效管理项目的…...

期权帮|股指期货的有效止盈止损策略?

锦鲤三三每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 股指期货的有效止盈止损策略? 一、股指期货止盈策略 &#xff08;1&#xff09;固定比例止盈&#xff1a;设定盈利百分比目标&#xff0c;达则止盈。优点&#xff1a;简单&am…...

PCL 基于视椎体裁剪点云

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 基于视椎体裁剪点云,是指根据给定的视锥体(Frustum)参数,剔除视锥体外的点,只保留视锥体内的点。这在三维渲染、点云分割和场景分析中非常有用。如下图所示: 二、实现代码 // 标准文件 #include <iostrea…...

@Mapper(componentModel = MappingConstants.ComponentModel.SPRING)

Mapper(componentModel MappingConstants.ComponentModel.SPRING) 是 **MapStruct** 框架中的一个注解&#xff0c;用于生成基于 Spring 的映射器&#xff08;Mapper&#xff09;实现类。MapStruct 是一个代码生成器&#xff0c;用于简化 Java Bean 之间的映射&#xff08;如 …...

LabVIEW 中的 3dgraph.llb 库

3dgraph.llb 库位于 C:\Program Files (x86)\National Instruments\LabVIEW 2019\vi.lib\Platform 目录下&#xff0c;是 LabVIEW 系统中用于 3D 图形相关操作的重要库。它为 LabVIEW 用户提供了丰富的功能&#xff0c;能在应用程序中创建、显示和交互各种 3D 图形&#xff0c;…...

【PHP】php+mysql 活动信息管理系统(源码+论文+数据库+数据库文件)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、测试技术。 【PHP】php 活动信息管理系统&#xff08;源码论文…...

qt QOpenGLTexture详解

1. 概述 QOpenGLTexture 是 Qt5 提供的一个类&#xff0c;用于表示和管理 OpenGL 纹理。它封装了 OpenGL 纹理的创建、分配存储、绑定和设置像素数据等操作&#xff0c;简化了 OpenGL 纹理的使用。 2. 重要函数 构造函数&#xff1a; QOpenGLTexture(const QImage &image,…...

【时间复杂度和空间复杂度】

常见的时间复杂度 计算方法1、确定输入规模&#xff1a; 输入规模通常用 n 表示&#xff0c;例如数组长度、链表长度等。2、分析算法的执行步骤&#xff1a; 计算每个操作的执行次数。 确定操作的执行次数与输入规模的关系。3、忽略常数和低阶项&#xff1a; 在大O表示法中&am…...

王炸 用AI+飞书 分解 一键生成 项目计划表模版

效果图&#xff1a; 各字段设置&#xff1a; 以下是一个使用 AI&#xff08;DeepSeeker&#xff09; 飞书多维表格分解项目待办模板的示例&#xff0c;你可以根据实际情况进行调整和优化&#xff1a; 列表中需要选择对象&#xff0c;且选择输出结果&#xff08;记得控制字符长度…...

VisionMaster4.4 python脚本 图像处理 转换函数 爱之初体验

最近有接触过一丢丢VM4.3的模块开发. 一直有把python图像处理部分模块移植进来的打算 不过时间不够没来得及折腾.偶尔发现4.4支持py脚本 于是拿来折腾.一下午. 发现4.4支持python脚本,好开心. 首先安装VM4.4 注意一定要是4.4 打开后拖了一个模块. 但是发现import numpy imp…...

线程池的使用 + MD5加密 + 枚举类

文章目录 1、线程池的使用2、MD5算法的使用3、多用枚举类 整理下近期干活儿遇到的一些坑。 1、线程池的使用 不合理点1&#xff1a;jstack线程转储发现&#xff0c;有几万个线程&#xff0c;查看代码发现&#xff0c;线程池放在方法内部或者循环体中创建&#xff0c;尽管方法…...

[qt5学习笔记]Application Example示例程序源码解析

开发环境问题 vs2022下直接打开ui、ts文件失败 解决办法如下图&#xff0c; 设置designer独立运行。估计是嵌入运行存在些许bug。 同理&#xff0c;ts编辑工具linguist也存在这个问题。 qrc rc的编辑嵌入编辑都正常&#xff0c;但分离式更稳定可靠。 qt creator编译失败 原…...

【在时光的棋局中修行——论股市投资的诗意哲学】

在时光的棋局中修行——论股市投资的诗意哲学 引子&#xff1a;数字之海与星辰之约 在经纬交织的K线图里&#xff0c;我常看见银河倾泻的轨迹。那些跳动的数字如同繁星坠落&#xff0c;在午夜时分编织着财富的密码。炒股之道&#xff0c;是理性与诗意的交响&#xff0c;是数据…...

IB网络错误检查工具ibqueryerrors

ibqueryerrors 是一个用于查询 InfiniBand 网络中错误统计信息的工具。它可以帮助网络管理员识别和诊断网络问题&#xff0c;如丢包、重传和其他通信错误。这个工具通常是 InfiniBand 管理软件包的一部分&#xff0c;例如 OpenSM&#xff08;Open Subnet Manager&#xff09;。…...

「vue3-element-admin」Vue3 + TypeScript 项目整合 Animate.css 动画效果实战指南

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 欢迎点赞 &#x1f44d; 收藏 ⭐评论 …...

论文阅读 DOES END-TO-END AUTONOMOUS DRIVING REALLY NEED PERCEPTION TASKS?

端到端的强势来袭&#xff0c;好久了~~~ 简单翻译&#xff1a;端到端真的需要感知任务嘛&#xff1f; code https://github.com/PeidongLi/SSR. https://arxiv.org/pdf/2409.18341 1. 摘要 端到端自动驾驶&#xff08;E2EAD&#xff09;方法通常依赖于监督式感知任务来提取显…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...