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(0, 0, 0), RGB(0, 0, 0), RGB(0, 0, 0)); //文字颜色
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, 3, 2, FALSE) //显示文字3d效果
.SetText3DBKColor(RGB(95, 95, 95)) //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