如控件a有属性b、c,属性b还有属性ID、NO等(语法:a.b.ID,a.b.NO,a.c.ID,a.c.NO依此类推),在VC中如何定义呢?如何使用Class Wizard定义呢?
谢谢高手们的关注啊!
30 个解决方案
#1
吸引眼球,不好意思~
#2
哎,CSDN解决问题的速度大不如从前了
#3
你把属性a定义成结构不行吗?
#4
链表,十字链表
#5
我说的是控件属性的接口定义,不是类的定义或结构的定义,在VC中定义控件的属性我使用
CLASS WIZARD,这个工具无法定义控件的多层属性。
希望高手门的建议能详细一点,谢谢
CLASS WIZARD,这个工具无法定义控件的多层属性。
希望高手门的建议能详细一点,谢谢
#6
有这必要吗
#7
没这必要
#8
当然有这必要了,这些属性是分类定义的,所以分类定义控件属性,因而要定义多层属性
#9
属性里包含属性?这是什么概念,控件有属性修饰不错,属性也有属性修饰,那被修饰的属性算什么?也算对象吗?属性分类可以,分层就不懂了?
#10
先创建一个包含2级属性的class
菜单Insert | New Class
Class Type = MFC Class
Name = 自己定义
Base class = CCmdTarget //必需
Automation 选 Createable by type ID
然后在ClassWizard里 的Automation页 ,Class name选择这个class,定义二级属性
第三步:同上方法,给你的控件增加一个LPDISPATCH类型的属性
最后:在你的控件初始化代码里,为这个属性创建那个二级属性类
最最后:如果你的控件是给VB调用,并且希望这个属性的类型不用LPDISPATH(在VB里是Object),希望直接是那个二级class(这样在VB里可以自动出属性列表),就要手工改工程中的ODL文件。在library定义里面的最上方,紧跟着importlib下面,加入一行:
dispinterface 二级属性class的interface name;
然后找到控件属性的地方,把IDispatch* 改成二级属性class的interface *
good luck
菜单Insert | New Class
Class Type = MFC Class
Name = 自己定义
Base class = CCmdTarget //必需
Automation 选 Createable by type ID
然后在ClassWizard里 的Automation页 ,Class name选择这个class,定义二级属性
第三步:同上方法,给你的控件增加一个LPDISPATCH类型的属性
最后:在你的控件初始化代码里,为这个属性创建那个二级属性类
最最后:如果你的控件是给VB调用,并且希望这个属性的类型不用LPDISPATH(在VB里是Object),希望直接是那个二级class(这样在VB里可以自动出属性列表),就要手工改工程中的ODL文件。在library定义里面的最上方,紧跟着importlib下面,加入一行:
dispinterface 二级属性class的interface name;
然后找到控件属性的地方,把IDispatch* 改成二级属性class的interface *
good luck
#11
光回答也不给分
没意思
没意思
#12
嘿嘿,不好意思,比较晚看到,等我验证以后,一定给分,一定一定,呵呵,谢谢关心拉
#13
欢迎大家继续发言啊
#14
不用CLASSWIZAD,手工写这些代码不就得了
#15
你这种分类不是增加易用性,而是使用后就在也没有在用了。
#16
我的属性分类下:一个file(patient,CT_image,study......)。
Patient(name,birth,addr,phone。。。。。);
CT_image(ID,date,size,num....);
study(one,two,three........);
..........
假如不做成二级属性的话,会很混乱的,而且不同类型的file,它们之间的定义会交叉,互相覆盖,比如file2(patient,MR_image,study),图像层(CT,MR)不一样
Patient(name,birth,addr,phone。。。。。);
CT_image(ID,date,size,num....);
study(one,two,three........);
..........
假如不做成二级属性的话,会很混乱的,而且不同类型的file,它们之间的定义会交叉,互相覆盖,比如file2(patient,MR_image,study),图像层(CT,MR)不一样
#17
TO taolei,哎,真是悲哀,越做越觉得自己是个笨蛋了。
我做到:然后在ClassWizard里 的Automation页 ,Class name选择这个class,定义二级属性。
这步,已经无从下手了,救救我吧,怎么叫定义二级属性啊?还有什么叫给这个属性创建二级属性类啊?越看越糊涂了,555555~~~~~
我做到:然后在ClassWizard里 的Automation页 ,Class name选择这个class,定义二级属性。
这步,已经无从下手了,救救我吧,怎么叫定义二级属性啊?还有什么叫给这个属性创建二级属性类啊?越看越糊涂了,555555~~~~~
#18
mail敬上:baconlli@citiz.net。
有代码的话,麻烦送送,谢谢谢谢,不胜感激
有代码的话,麻烦送送,谢谢谢谢,不胜感激
#19
简单明了的把问题说明白就是:我要定义自己的控件属性,像通用控件 button1.font.bold 这样的两级属性表,有办法吗?求代码吗,谢谢(baconlli@citiz.net)
#20
在VC中有button1.font.bold 这种写法吗?
#21
那是在VB中调用控件时的情况.
#22
搞笑。
#23
不错
#24
例:
字体属性:
下级属性:色彩.
字体大小.
粗细.
字体(宋体).
其它属性.
看VCL有关字体属性定义的源代码试试看.
字体属性:
下级属性:色彩.
字体大小.
粗细.
字体(宋体).
其它属性.
看VCL有关字体属性定义的源代码试试看.
#25
没人能详细一点吗?
#26
定义二级属性是说给那个二级属性的class增加automation属性,如果这个都不会的话,先不要想什么二级属性了,先把基本的控件写熟练了。
#27
to taolei:
在classwizard里面给控件添加属性、事件、方法我都知道啊。只是你给我的建议字面意思让我有点模糊,看了好久才弄懂,嘿嘿
在classwizard里面给控件添加属性、事件、方法我都知道啊。只是你给我的建议字面意思让我有点模糊,看了好久才弄懂,嘿嘿
#28
老兄是VB出家的吧
#29
呵呵,没错啊
#30
我也是。哈哈。
#1
吸引眼球,不好意思~
#2
哎,CSDN解决问题的速度大不如从前了
#3
你把属性a定义成结构不行吗?
#4
链表,十字链表
#5
我说的是控件属性的接口定义,不是类的定义或结构的定义,在VC中定义控件的属性我使用
CLASS WIZARD,这个工具无法定义控件的多层属性。
希望高手门的建议能详细一点,谢谢
CLASS WIZARD,这个工具无法定义控件的多层属性。
希望高手门的建议能详细一点,谢谢
#6
有这必要吗
#7
没这必要
#8
当然有这必要了,这些属性是分类定义的,所以分类定义控件属性,因而要定义多层属性
#9
属性里包含属性?这是什么概念,控件有属性修饰不错,属性也有属性修饰,那被修饰的属性算什么?也算对象吗?属性分类可以,分层就不懂了?
#10
先创建一个包含2级属性的class
菜单Insert | New Class
Class Type = MFC Class
Name = 自己定义
Base class = CCmdTarget //必需
Automation 选 Createable by type ID
然后在ClassWizard里 的Automation页 ,Class name选择这个class,定义二级属性
第三步:同上方法,给你的控件增加一个LPDISPATCH类型的属性
最后:在你的控件初始化代码里,为这个属性创建那个二级属性类
最最后:如果你的控件是给VB调用,并且希望这个属性的类型不用LPDISPATH(在VB里是Object),希望直接是那个二级class(这样在VB里可以自动出属性列表),就要手工改工程中的ODL文件。在library定义里面的最上方,紧跟着importlib下面,加入一行:
dispinterface 二级属性class的interface name;
然后找到控件属性的地方,把IDispatch* 改成二级属性class的interface *
good luck
菜单Insert | New Class
Class Type = MFC Class
Name = 自己定义
Base class = CCmdTarget //必需
Automation 选 Createable by type ID
然后在ClassWizard里 的Automation页 ,Class name选择这个class,定义二级属性
第三步:同上方法,给你的控件增加一个LPDISPATCH类型的属性
最后:在你的控件初始化代码里,为这个属性创建那个二级属性类
最最后:如果你的控件是给VB调用,并且希望这个属性的类型不用LPDISPATH(在VB里是Object),希望直接是那个二级class(这样在VB里可以自动出属性列表),就要手工改工程中的ODL文件。在library定义里面的最上方,紧跟着importlib下面,加入一行:
dispinterface 二级属性class的interface name;
然后找到控件属性的地方,把IDispatch* 改成二级属性class的interface *
good luck
#11
光回答也不给分
没意思
没意思
#12
嘿嘿,不好意思,比较晚看到,等我验证以后,一定给分,一定一定,呵呵,谢谢关心拉
#13
欢迎大家继续发言啊
#14
不用CLASSWIZAD,手工写这些代码不就得了
#15
你这种分类不是增加易用性,而是使用后就在也没有在用了。
#16
我的属性分类下:一个file(patient,CT_image,study......)。
Patient(name,birth,addr,phone。。。。。);
CT_image(ID,date,size,num....);
study(one,two,three........);
..........
假如不做成二级属性的话,会很混乱的,而且不同类型的file,它们之间的定义会交叉,互相覆盖,比如file2(patient,MR_image,study),图像层(CT,MR)不一样
Patient(name,birth,addr,phone。。。。。);
CT_image(ID,date,size,num....);
study(one,two,three........);
..........
假如不做成二级属性的话,会很混乱的,而且不同类型的file,它们之间的定义会交叉,互相覆盖,比如file2(patient,MR_image,study),图像层(CT,MR)不一样
#17
TO taolei,哎,真是悲哀,越做越觉得自己是个笨蛋了。
我做到:然后在ClassWizard里 的Automation页 ,Class name选择这个class,定义二级属性。
这步,已经无从下手了,救救我吧,怎么叫定义二级属性啊?还有什么叫给这个属性创建二级属性类啊?越看越糊涂了,555555~~~~~
我做到:然后在ClassWizard里 的Automation页 ,Class name选择这个class,定义二级属性。
这步,已经无从下手了,救救我吧,怎么叫定义二级属性啊?还有什么叫给这个属性创建二级属性类啊?越看越糊涂了,555555~~~~~
#18
mail敬上:baconlli@citiz.net。
有代码的话,麻烦送送,谢谢谢谢,不胜感激
有代码的话,麻烦送送,谢谢谢谢,不胜感激
#19
简单明了的把问题说明白就是:我要定义自己的控件属性,像通用控件 button1.font.bold 这样的两级属性表,有办法吗?求代码吗,谢谢(baconlli@citiz.net)
#20
在VC中有button1.font.bold 这种写法吗?
#21
那是在VB中调用控件时的情况.
#22
搞笑。
#23
不错
#24
例:
字体属性:
下级属性:色彩.
字体大小.
粗细.
字体(宋体).
其它属性.
看VCL有关字体属性定义的源代码试试看.
字体属性:
下级属性:色彩.
字体大小.
粗细.
字体(宋体).
其它属性.
看VCL有关字体属性定义的源代码试试看.
#25
没人能详细一点吗?
#26
定义二级属性是说给那个二级属性的class增加automation属性,如果这个都不会的话,先不要想什么二级属性了,先把基本的控件写熟练了。
#27
to taolei:
在classwizard里面给控件添加属性、事件、方法我都知道啊。只是你给我的建议字面意思让我有点模糊,看了好久才弄懂,嘿嘿
在classwizard里面给控件添加属性、事件、方法我都知道啊。只是你给我的建议字面意思让我有点模糊,看了好久才弄懂,嘿嘿
#28
老兄是VB出家的吧
#29
呵呵,没错啊
#30
我也是。哈哈。