梦中江湖

世间一切皆为江湖,世间一切皆不为江湖。曾经年少,觉得一切皆是那么美好,世间事物一切皆可为我所有,天下之大皆我可往。有一种江湖的情结,豪情满胸。可是时间的流逝,年龄的增长,心中的江湖已经不在,现在江湖泛滥,唯有小酌入梦后,才能在梦中再见我的江湖!再见我的青春!

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  12 随笔 :: 0 文章 :: 15 评论 :: 0 Trackbacks

CBitmapButton的使用
       CBitmapButton作为MFC的控件类,并不为很多人所使用,因为现在网上遍布着从CButton派生的各种各样的按钮类,其中最为著名的就是CButtonST类了。但是最近在CSDN上看到几个问题都是使用CBitmapButton类,但是由于使用错误、不当而造成程序崩溃或者错误的。所以总结一下CBitmapButton类的使用,希望能帮助一些初学者。
       可以参考MSDN自带的例子“CTRLTEST”学习CBitmapButton的用法。个人总结如下: 
1、在资源编辑的时候选中按钮的Owner  draw即可,不需要选择Bitmap属性! 
2、在程序中定义一个CBitmapButton成员变量。不能使用ClassWizard为按钮映射一个CButton变量,然后改为CBitmapButton,这么做并不能将按钮直接映射为CBitmapButton类的对象,反而会出现初始化错误。 
3-1、使用CBitmapButton::LoadBitmaps装载各种状态的图片,使用SubclassDlgItem关联到想要的按钮,使用CBitmapButton::SizeToContent函数使按钮适合图片大小。。注意Loadbitmaps一定要在关联到按钮之前进行! 
3-2、或者是使用CBitmapButton::AutoLoad函数关联到想要的按钮。需要注意:
A、之前不能使用CBitmapButton::LoadBitmaps装载各种状态的图片,否则会出错。
B、AutoLoad函数完成的关联和改变按钮大小的CBitmapButton::SizeToContent函数的功能。
C、CBitmapButton::AutoLoad使用的位图是默认资源ID的,即它会自动装载相关资源位图。位图的资源ID格式为:"按钮Caption+U"、"按钮Caption+D"、"按钮Caption+F"、"按钮Caption+X",分别代表Up、Down、Focus、Disable状态。如资源编辑时,希望关联的按钮的Caption为Test,那么其默认装载的位图资源的ID为:"TestU"/"TestD"/"TestF"/"TestX",注意分号""也是其ID的一部分。 


posted on 2005-06-20 09:08 梦中江湖 阅读(1242) 评论(3)  编辑 收藏 引用

评论

# re: CBitmapButton的使用 2006-02-16 18:12 fox
我用了 Owner draw 后,原来的,不收“双击”事件,现在却收了,也就是BN_CLICKED 在鼠标点快的时候,第二下不见了,变成了BN_DOUBLECLICKED
可是,这个并不是我想要的,而且,图像的显示也变的不正确了  回复  更多评论
  

# re: CBitmapButton的使用 2006-02-16 18:12 fox
我用了 Owner draw 后,原来的,不收“双击”事件,现在却收了,也就是BN_CLICKED 在鼠标点快的时候,第二下不见了,变成了BN_DOUBLECLICKED
可是,这个并不是我想要的,而且,图像的显示也变的不正确了  回复  更多评论
  

# re: CBitmapButton的使用 2006-10-30 22:40 vmfc
不用管吧 或者删除这个函数 和函数名称?(注意备份)  回复  更多评论
  

只有注册用户登录后才能发表评论。