button字体大小、颜色、字形设置

转自:http://blog.sina.com.cn/s/blog_70441c8e0100v8u3.html

大小,字形设置:

1. 只需要在InitDialog添加代码即可;

2. CFont定义的变量要定义为类成员变量,不然不能显示设置效果;

3. 代码:

//改变字体大小
 m_nfont.CreateFont(30,10,0,0,700,FALSE,FALSE,0,DEFAULT_CHARSET,DEFAULT_CHARSET,
             CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH | FF_SCRIPT,"隶书");

 GetDlgItem(IDC_BTN_COLOR)->SetFont(&m_nfont);

 

字体颜色设置:(背景和字体颜色)

WM_DRAWITEM消息处理函数:

void CTest_Dlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)

{

// TODO: Add your message handler code here and/or call default

if (nIDCtl==IDC_BTN_COLOR)         //checking for the button

{
  //改变按钮字体和背景颜色
  CDC dc;
  RECT rect;
  dc.Attach(lpDrawItemStruct->hDC);   // Get the Button DC to CDC   
  rect = lpDrawItemStruct->rcItem;     //Store the Button rect to our local rect.  
  dc.Draw3dRect(&rect,RGB(192,192,192),RGB(0,0,0));  //画按钮

  dc.FillSolidRect(&rect,RGB(100,125,100)); //设置按钮颜色

  UINT state=lpDrawItemStruct->itemState;   

  //画边框
  if((state & ODS_SELECTED))
  {
      dc.DrawEdge(&rect,EDGE_SUNKEN,BF_RECT);
  }
  else
  {
      dc.DrawEdge(&rect,EDGE_RAISED,BF_RECT);
  }

  dc.SetBkColor(RGB(100,125,100));   //Setting the Text Background color

  dc.SetTextColor(RGB(255,0,0));     //Setting the Text Color
  TCHAR buffer[MAX_PATH];           //To store the Caption of the button.
  ZeroMemory(buffer,MAX_PATH );     //Intializing the buffer to zero
  ::GetWindowText(lpDrawItemStruct->hwndItem,buffer,MAX_PATH); //Get the Caption of Button Window
  dc.DrawText(buffer,&rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE);//Redraw the Caption of Button Window
  dc.Detach(); // Detach the Button DC
       

 CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);

}


==================================================================================

如果是VS2008sp1以上,可使用CMFCButton,这样就简单很多。具体可看VS自带的NewControls例子。

笔者用的是VS2010,例子在D:\Program Files (x86)\Microsoft Visual Studio 10.0\Samples\2052\C++\MFC\Visual C++ 2008 Feature Pack\NewControls目录下。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值