MFC学习之 在按钮上加图标与文字共同显示

先给大家推荐两个ICON,PNG图标库网站:http://sc.chinaz.com/tubiao/RuanJianTuBiao.html(图片多,相当时尚,进去之后你会吃惊,这些就是你想要的)   http://www.easyicon.cn/ (特点:图片多!好多!相当多!)

要设计一个漂亮的按钮,要么搞成位图按钮,要么加ico图片,但是那样文字就没法显示了,除非把文字先写到图片上。

1.a. 先说位图按钮(bmp图片的)(简单的说)

Onpaint里加:

HBITMAP hBitmap;                          

hBitmap = (HBITMAP)::LoadImage(   
NULL,   
".\\images\\text_01.bmp",               // 图片相对路径
IMAGE_BITMAP,                              // 图片格式  
0,0,   
LR_LOADFROMFILE|LR_CREATEDIBSECTION); 

然后:((CButton *)GetDlgItem(IDC_BUTTON_TEXT_01))->SetBitmap(hBitmap);   //随便加哪里,Init 里也行

b.如果用CBitmapButton 就只需在 .h文件中加 CBitmapButton m_soundBtn;

属性设置为Owner Draw,顺便设置一下Modal Frame 为 true 好看一些

然后在OnInitDialog() 中加:m_btnUp.LoadBitmaps(IDB_BUTTON_UP_R, IDB_BUTTON_UP_S, IDB_BUTTON_UP_F, NULL); //后面的三个参数也可以是图片,分别表示按下,获得焦点,按钮不可用

然后,做了8个方向按钮,效果是这样滴:按下 、 跟获得焦点 是另外的图。

c.
  1. 打开BITMAP按钮的属性页,在Style中选中Bitmap。   
  2. 对话框类的头文件中定义成员变量CButton   m_IconBtn;
  3.创建位图资源:位图资源:IDB_BITMAPBUTTON   
  4.在初始化中加入如下代码:     
  //对应于位图按钮   
  …   
  HBITMAP hBmp=::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAPBUTTON));
  m_BmpBtn.SetBitmap(hBmp);   

2.再来一个ico图标的:(居中,但是掩盖了文字)

先在.h里声明:HICON m_hicn1(不在头文件里声明就要加就要在最后加m_hicn1.Detach();

   m_hicn1=AfxGetApp()->LoadIcon(IDI_ICON1);
   m_button_text_01.SetIcon(m_hicn1);

3. 关于自绘位图按钮:http://www.codeproject.com/KB/buttons/XButtonXP.aspx
                                    http://www.codeproject.com/KB/buttons/FooButton.aspx

4.最后是加bmp图片,并且与文字同时显示。

首先要用到codejock Xtreme ToolkitPro 关于它的使用,参照:http://blog.csdn.net/abidepan/article/details/7893632

下载:http://download.csdn.net/detail/abidepan/4538677

准备工作做好之后,开始重载button

如button_01 之前关联控件变量m_button_01,代码是这样的:CButton m_realPlayPageBtn;

我们要做的就是把CButton 改成 CXTPButton。

然后在Dlg::OnInitDialog()里: m_realPlayPageBtn.SetBitmap(0, IDB_REALPALY);;  //加bmp图片

其他的button类似以上代码。 做好的样子是这样的:

 


5.当然还有其他方法,不太会,以后慢慢学~

树控件加图标:http://blog.csdn.net/abidepan/article/details/7922417

标题栏加图标:http://blog.csdn.net/abidepan/article/details/7922402

6、今天做了个静音的按钮,是在 4  的基础上做的,记录一下。效果是这样的。

                    

在 上面 4 的基础上,在头文件中加:

afx_msg void OnBnClickedButtonSound();

bool click;   //定个标记

然后  ON_BN_CLICKED(IDC_BUTTON_SOUND, &CFuncPannelDlg::OnBnClickedButtonSound)

再然后 :

void CFuncPannelDlg::OnBnClickedButtonSound()
{
// TODO: 在此添加控件通知处理程序代码
if (click)
{
m_soundBtn.SetBitmap(0, IDB_SILENCE);   //就是上面的第二张图
click = false;
}
else
{
m_soundBtn.SetBitmap(0, IDB_SOUND);   // 上面的第一张图 
click = true;
} 
}


 




  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值