使用CBitmapButton类创建位图按钮

 

   

     在网上查了很多资料,大都语焉不详,今天自己做了个位图按钮做测试,特将网上的资料整理如下:

 

 

 

    CBitmapButton是一个MFC内置的按钮类,提供图片按钮的功能,并且支持在不同状态下显示不同图片。其使用方法比较简单,比CButton更美观,比其它的第三方Button类更简洁,因此,制作位图按钮时经常需要用到它。

  

 

方法一:

1、在资源编辑的时候选中按钮的 Owner draw 属性,不需要选择 Bitmap 属性.
       按钮右键-->Styles-->Owner draw


 2、在程序中定义一个CBitmapButton成员变量。
        注意:不能使用ClassWizard为按钮映射一个CButton变量,然后改为CBitmapButton,
        这么做并不能将按钮直接映射为 CBitmapButton类的对象,反而会出现初始化错误

3、使用CBitmapButton::LoadBitmaps装载各种状态的图片,
     使用CBitmapButton::SubclassDlgItem关联到想要的按钮,
     使用CBitmapButton::SizeToContent函数使按钮适合图片大小。
     注意Loadbitmaps一定要在关联到按钮之前进行!

 

 首先,选中按钮的owner Draw属性,在资源中加载两副*.bmp格式的位图,
  然后在对话框类中加入:


CBitmapButton m_btnX1; //定义变量,必须放在函数外面才能正常实现 BOOL CXXXXXXX::OnInitDialog() { CDialog::OnInitDialog(); 8m_btnX1.LoadBitmaps(IDB_XXXX_UP,IDB_XXXX_DOWN); //这里是两副位图,鼠标按下和弹起, // 也可以只加一个ID资源; m_btnX1.SubclassDlgItem(IDC_DASEN_X1,this); m_btnX1.SizeToContent(); }   

 

 

  

   此方法与下面方法二的主要区别在于:

  方法一不需要对位图及按钮的命名做关联要求

  而方法二则需要对位图与按钮直接做命名关联

 

 

方法二:

 

 

CBitmapButton的简易攻略如下:

 

1.在MFC Dialog工程中,在一个Dialog中添加一个按钮,设置ID为IDC_BUTTON_TEST, Caption为BUTTON_TEST,并且把Style中的Owner Draw属性选上。(注意Caption命名和ID命名的关系)

 

2.添加按钮的图片到资源中

 

 

 

 

假设图片为以下几个:

test_up.bmp  正常状态时的按钮图片

test_down.bmp 鼠标按下时的按钮图片

test_focused.bmp 鼠标点击过后的按钮图片

test_disable.bmp 按钮失效后的图片

则分别设置其ID为:(注意,一定要左右都带双引号)

"BUTTON_TESTU"

"BUTTON_TESTD"

"BUTTON_TESTF"

"BUTTON_TESTS"

 

 

 

3. 在程序中定义一个CBitmapButton成员变量。
        注意:不能使用ClassWizard为按钮映射一个CButton变量,然后改为CBitmapButton,
        这么做并不能将按钮直接映射为 CBitmapButton类的对象,反而会出现初始化错误

 

4. 在OnInitDialog()函数中,将位图与具体按钮关联,注意关联的具体按钮的ID与Caption 及位图资源ID必须符合第1、2条的规范。

 

 

m_Button.AutoLoad(IDC_BUTTON_TEST,this);

 

注意,使用此方法,不必用LoadBitmap()加载资源,因为编译器自动根据命名规范,将位图资源与具体按钮关联起来了。

 

 

  CBitmapButton m_Button;//必须放在函数外面才能正常实现 BOOL CXXXXXXX::OnInitDialog() { CDialog::OnInitDialog(); m_Button.AutoLoad(IDC_BUTTON_TEST,this);//ID为IDC_BUTTON_TEST的按钮的Caption为:BUTTON_TEST}

 

 

 

 

参考资料:

 

http://blog.sina.com.cn/s/blog_44e571d70100080o.html

http://blog.163.com/yanghua9981@126/blog/static/262925712007623105417327/

http://www.itqun.net/content-detail/123911.html

http://www.cnblogs.com/qqingmu/archive/2007/09/06/884840.html

 

http://topic.csdn.net/t/20021107/14/1156670.html

http://blog.csdn.net/hityct1/archive/2009/02/03/3859286.aspx

http://blog.sina.com.cn/s/blog_4d90492b01000f2h.html

 

 

如果此文对您有所帮助,还望点击一下以下网站:


    360导航

    2345导航        

   古典小说网,本人的网站

你可能感兴趣的:(测试,mfc,dialog,button,编译器)