VC属性列表的开发

最近开发一个软件时遇到属性编辑的问题,本来想用列表控件来代替,但是发现列表控件有很多缺陷,不是太好用。属性控件不支持编辑与下拉列表功能,这个控件已经内置了这二个功能,而且还提供CUSTOMDRAW,不过还不完善。 程序运行画面如图一:

图一

下面描述一下其主要方法: 

自己定义一个宏来构架列表序列:

BEGIN_CREATE_NODE
    BEGIN_YJITEM(0,YJ_FOLDER,YJ_DEFAULT,_T("文件"),YJEDIT,true,_T("文件"))
    BEGIN_YJITEM(1,YJ_FOLDER,YJ_DEFAULT,_T("新建"),YJEDIT,true,_T("文档"))
    BEGIN_YJITEM(1,YJ_ITEM,YJ_DEFAULT,_T("打开"),YJLISTBOX,true,_T("文档#程序#文本"))
    BEGIN_YJITEM(1,YJ_ITEM,YJ_DEFAULT,_T("退出"),YJLISTBOX,true,_T("文档#程序#文本"))
    BEGIN_YJITEM(0,YJ_FOLDER,YJ_DEFAULT,_T("编辑"),YJEDIT,true,_T("文件"))
    BEGIN_YJITEM(1,YJ_ITEM,YJ_DEFAULT,_T("撤销"),YJEDIT,true,_T("文件"))
    BEGIN_YJITEM(1,YJ_ITEM,YJ_DEFAULT,_T("粘贴"),YJEDIT,true,_T("文件"))
    BEGIN_YJITEM(1,YJ_ITEM,YJ_DEFAULT,_T("拷贝"),YJEDIT,true,_T("文件"))
    BEGIN_YJITEM(0,YJ_FOLDER,YJ_DEFAULT,_T("视图"),YJEDIT,true,_T("文件"))
    BEGIN_YJITEM(1,YJ_ITEM,YJ_DEFAULT,_T("撤销"),YJEDIT,true,_T("文件"))
    BEGIN_YJITEM(1,YJ_ITEM,YJ_DEFAULT,_T("粘贴"),YJEDIT,true,_T("文件"))
    BEGIN_YJITEM(1,YJ_ITEM,YJ_DEFAULT,_T("拷贝"),YJEDIT,true,_T("文件"))
END_CREATE_NODE   

其中列表字符串之间以"#"分开。编辑框是YJEDIT,列表框是YJLISTBOX,然后在程序里面调用宏,

CRATE_STRUCT(&m_propertyList)
m_propertyList.Invalidate();   

显示遍历属性列表:

For(int i=0;i< m_propertyList.GetSize();i++)
M_propertyList.m_List[i]->GetString();   

其中的每一条目对应一个YJPropertyItem对象的指针.具体请看代码。 

开发:windows xp+VS2003 代码见相关附件

时间: 2024-11-10 01:11:54

VC属性列表的开发的相关文章

iOS开发之数据存储之XML属性列表(plist)归档

1.概述 "归档"意思是持久化存储数据.plist文件是一种XML格式的文件,拓展名为plist.如果对象是NSString.NSDictionary.NSArray.NSData.NSNumber等类型,就可以使用writeToFile:atomically:方法直接将对象写到属性列表文件(plist文件)中.特别注意的是plist文件不能存储对象. IOS常用文件存储方式有: XML属性列表(plist)归档 Preference(偏好设置) NSKeyedArchiver归档(N

iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)

一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) 4.SQLite3(数据库,关系型数据库,不能直接存储对象,要编写一些数据库的语句,将对象拆开存储) 5.Core Data(对象型的数据库,把内部环节屏蔽) 二.应用沙盒 每个iOS应用都有⾃己的应⽤沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应⽤必须待在⾃己的沙盒里,其他应用不能访问该沙盒(提示:在IOS8中已经开放访问) 应⽤沙盒的文件系

VC++通用GIS功能开发解决方案2.0v介绍

综述 <VC++通用GIS功能开发解决方案>源代码是基于VC++6.0 MFC 类库,在Win2000平台上开 发的.界面部分用到了较低版本的 CJ60Lib 开放源码库,用户可自行替换高版本或其他界面 库,它不作为本方案的商业部分. <VC++通用GIS功能开发解决方案>源代码是迄今为止公开提供的最全面.最完善的开发 GIS产品的一套基础解决方案.它的界面十分友好和具人性化,它传承了"VC++界面一揽 子解决方案"最具经典的界面个性,并融合了该产品自身特有的亮

浅谈JavaScript事件的属性列表

  本文向大家简单介绍了javascript事件的属性列表,非常的详细,推荐给有相同需求的小伙伴们. HTML 4.0 的新特性之一是能够使 HTML 事件触发浏览器中的行为,比如当用户点击某个 HTML 元素时启动一段 JavaScript.下面是一个属性列表,可将之插入 HTML 标签以定义事件的行为. 属性 此事件发生在何时... onabort 图像的加载被中断. onblur 元素失去焦点. onchange 域的内容被改变. onclick 当用户点击某个对象时调用的事件句柄. on

数据存储之属性列表Plist

常用的数据存储有属性列表.偏好设置.归档.sqlite.coreData.上一博客了解了沙盒,现在了解下属性列表Plist. 通常通过NSArray.NSDictionary集合类的WriteToFile:atomically方法将他们存储到属性列表中.在属性列表能保存的数据类型如下 所以可以序列化的类有以下这些: NSArray.NSMutableArray.NSDictionary.NSMutableDictionary.NSData.NSMutableData.NSDate.NSStrin

浅谈JavaScript事件的属性列表_基础知识

HTML 4.0 的新特性之一是能够使 HTML 事件触发浏览器中的行为,比如当用户点击某个 HTML 元素时启动一段 JavaScript.下面是一个属性列表,可将之插入 HTML 标签以定义事件的行为.   属性 此事件发生在何时... onabort 图像的加载被中断. onblur 元素失去焦点. onchange 域的内容被改变. onclick 当用户点击某个对象时调用的事件句柄. ondblclick 当用户双击某个对象时调用的事件句柄. onerror 在加载文档或图像时发生错误

Cocos2D iOS之旅:如何写一个敲地鼠游戏(八):为动画建立属性列表

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作! 在之前的博文中,我们创建了游戏的基础 - 小可爱的地鼠从洞中呼之欲出.我们花了大量的时间思考关于如何组织素材以及坐标置位,以让我们的游戏在iphone,ipad以及高清屏上看

VC中使用ADO开发数据库应用程序简明教程_C 语言

本文实例讲述了VC中使用ADO开发数据库应用程序的方法.分享给大家供大家参考,具体如下: 一.ADO概述 ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口.ADO 使您能够编写应用程序以通过 OLE.DB 提供者访问和操作数据库服务器中的数据.ADO 最主要的优点是易于使用.速度快.内存支出少和磁盘遗迹小.ADO 在关键的应用方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量.高性能的接口.之所以

菜鸟级:CSS样式表参数属性列表大全

css|样式表 属性名称字体属性(Font)font-familyfont-stylefont-variantfont-weightfont-size 颜色和背景属性ColorBackground-colorBackground-imageBackground-repeatBackground-attachmentBackground-position 文本属性Word-spacingLetter-spacingText-decoration Vertical-align Text-transf