当前位置: 首页 > 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.............

http://www.lryc.cn/news/538470.html

相关文章:

  • WPF-数据转换器
  • 09 解决方案 - 开源机器人+具身智能+AI
  • 2025 BabitMF 第一期开源有奖活动正式开启 !
  • 项目管理十大领域是哪些
  • 期权帮|股指期货的有效止盈止损策略?
  • PCL 基于视椎体裁剪点云
  • @Mapper(componentModel = MappingConstants.ComponentModel.SPRING)
  • LabVIEW 中的 3dgraph.llb 库
  • 【PHP】php+mysql 活动信息管理系统(源码+论文+数据库+数据库文件)【独一无二】
  • qt QOpenGLTexture详解
  • 【时间复杂度和空间复杂度】
  • 王炸 用AI+飞书 分解 一键生成 项目计划表模版
  • VisionMaster4.4 python脚本 图像处理 转换函数 爱之初体验
  • 线程池的使用 + MD5加密 + 枚举类
  • [qt5学习笔记]Application Example示例程序源码解析
  • 【在时光的棋局中修行——论股市投资的诗意哲学】
  • IB网络错误检查工具ibqueryerrors
  • 「vue3-element-admin」Vue3 + TypeScript 项目整合 Animate.css 动画效果实战指南
  • 论文阅读 DOES END-TO-END AUTONOMOUS DRIVING REALLY NEED PERCEPTION TASKS?
  • 25年黑龙江省考报名流程详细教程
  • 基于SpringBoot的小区运动中心预约管理系统
  • 部署postgresql_exporter监控pgsql
  • Mac本地部署deepseek
  • huggingface+下载deepseek8b lamda+本地部署 笔记
  • 中上211硕对嵌入式AI感兴趣,如何有效规划学习路径?
  • Jedis 客户端 用于java连接redis服务
  • 车载诊断数据库 --- 通用性诊断数据库ODX
  • docker 基础命令使用(ubuntu)
  • IDEA集成DeepSeek
  • Unity 接入Luabn记录图解