CBitButtonNL继承自CButton控件类,能实现鼠标热敏,显示3d文字,可根据按键的聚焦、按下、热态、失效等操作显示不同按键位图,达到动态效果。好东西要好好保存着,以备不时之需~

在工程中加入BitButtonNL.h和BitButtonNL.cpp文件,然后便可使用该类提供的函数进行操作。例如,在对话框类C***Dlg.cpp的OnInitDialog函数中可以添加如下代码:

CBitButtonNL m_btnSearch;    
CString strFontName 
= _T("宋体");

//set bitmap
 m_btnSearch.SetBitmaps(
                                          IDB_BITMAP_OTHER_NORMAL, 
                                          IDB_BITMAP_OTHER_DOWN, 
                                          IDB_BITMAP_OTHER_UP, 
                                          IDB_BITMAP_OTHER_NO);     
//按钮的四种位图
 m_btnSearch.SetForceColor(RGB(000), RGB(000), RGB(000));     //文字颜色
 m_btnSearch.SetSound(MAKEINTRESOURCE(IDR_WAVEMOVE), ::GetModuleHandle(NULL));     //聚焦声音
 m_btnSearch.SetSound(MAKEINTRESOURCE(IDR_WAVECLICK), ::GetModuleHandle(NULL), TRUE);    //按下声音
 m_btnSearch.SizeToContent();             //按钮自动适应第一个图片大小
 m_btnSearch.SetWindowText(TEXT("搜索"));         //改变按钮显示文字
 m_btnSearch.SetBtnCursor(IDC_CURSOR_HAND, FALSE);         //按钮鼠标类型
 m_btnSearch.SetTextAlign(NL_ALIGN_CENTER, FALSE);            //设置文字排列方式
 
//set font
 m_btnSearch
  .SetDrawText(TRUE, FALSE)            
//是否显示按钮文字
  .SetFont3D(FALSE, 32, FALSE)      //显示文字3d效果
  .SetText3DBKColor(RGB(959595))        //3d阴影颜色
  .SetFontBold(TRUE, FALSE)       //粗体
  .SetFontSize(10, FALSE)              //字体大小
  .SetFontName(strFontName)         //字体名称
  ;

其中:
(1)IDB_BITMAP_OTHER_NORMAL、IDB_BITMAP_OTHER_DOWN、IDB_BITMAP_OTHER_UP、IDB_BITMAP_OTHER_NO分别是按键默认、按下、热态、失效时的位图资源ID;
(2)IDR_WAVEMOVE和IDR_WAVECLICK是.wav音频资源ID;
(3)IDC_CURSOR_HAND是cursor资源ID。

源代码如下:
/Files/amazon/CBitButtonNL.rar