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