还是关于ATL属性的,希望这回有人回答
我的控件除了字体外,还有几个会影响界面的属性,但我发现我定义的属性和字体属性有些不一样。在ActiveX Control Test Container里测试倒是一样的,都是应用的时候才会变动界面,VB里也一切正常。但在VC的资源编辑器里,没有“应用”按钮,当我改变自定义属性后,界面只有在我用外部的方法让其更新后才会看到效果,但ATL自带的字体等属性却是在改变后立即生效,谁知道这是怎么回事????
得到答案后会加分的
问题点数:20、回复次数:8Top
1 楼vcbear(http://vcbear.mblogger.cn)回复于 2001-06-15 09:19:00 得分 20
me 也奇怪,我曾经试过改了属性后直接repaint,TMD告诉我指针非法,因为还没有创建实例。
但是vb和delphi一类的东西当你把控件从工具板上拖出来的是时候,已经隐性调用了
createobject一类的家伙,创建了一个实例(或者说模板一类的东西)。ATL自带的字体改变
大概也是这个意思,因为你从面板上拖出一个Button,系统(或者集成环境)就接管了该实例。
好久没有动ATL了。
等着听课先。Top
2 楼sxbyl(sxbyl)回复于 2001-06-15 10:22:00 得分 0
push~Top
3 楼vcbear(http://vcbear.mblogger.cn)回复于 2001-06-15 10:39:00 得分 0
我想不知道是不是这个意思:其实属性的读写都是通过Get,Set函数的,对属性写的同时也调
用了Set函数,如果你的界面属性产生变化,必须在Set函数里进行repaint.但是必须进行
足够的ASSERT或者指针判断,免得出现我上面提的指针非法。
由于是你自定义的属性,所以不能象font 这种系统属性一样的被集成环境处理。认了吧。:)
我随便说说。不一定对。
Top
4 楼sxbyl(sxbyl)回复于 2001-06-15 10:58:00 得分 0
开始我也是这么想的,再一看才知道不是。你可以试试,在那个Container里测试的时候,字体也是需要Apply才改动界面的,在这里我的自定义属性和自带属性表现是一样的,在VB里也是。只有VC集成环境里表现不一样。Top
5 楼vcbear(http://vcbear.mblogger.cn)回复于 2001-06-15 11:23:00 得分 0
呵呵,看来要问vc的集成环境开发者了,问他是不是没有处理自定义属性的更新事件。Top
6 楼sxbyl(sxbyl)回复于 2001-06-16 08:06:00 得分 0
还有没有人发表意见啊?Top
7 楼sxbyl(sxbyl)回复于 2001-06-18 08:25:00 得分 0
请关注Top
8 楼seesi(不是我想骗你,是我不知道怎么才能不骗!)回复于 2001-06-18 09:22:00 得分 0
我想也是啊。关注
Top




