《強(qiáng)大按鈕類CBttonST實(shí)例演示詳解(附源碼)》由會(huì)員分享,可在線閱讀,更多相關(guān)《強(qiáng)大按鈕類CBttonST實(shí)例演示詳解(附源碼)(15頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、強(qiáng)大按鈕類CBttonST實(shí)例演示詳解(附源碼)
CButtonST類實(shí)例演示和介紹(附源碼)
作者:
日期:
這里給大家介紹強(qiáng)大的按鈕類CButtonST,可以使您的程序錦上添花。
CButtonST類主要包括BtnST.h、BtnST.cpp、BCMenu.h?口BCMenu.cpp四個(gè)文件。先將上述4個(gè)文件復(fù)制到自己的工程,然后在VC+稈發(fā)環(huán)境中打開(kāi)該工程,選擇【Project\AddtoProject\Files…】,會(huì)彈出向工程插入文件的對(duì)話框,然后在工程所在目錄選擇上述4個(gè)文件,點(diǎn)擊【OK按鈕,添加4個(gè)文件到當(dāng)前工程,在SdtAfx.h文件中添加合適的include
2、語(yǔ)句,如#include"BtnST.h"。在接下來(lái)的文章中,我將根據(jù)演示程序向大家介紹CButtonST的各種常用方法。
以下是CButtonST類制作的演示界面(附有源碼):
效果一:在按鈕上加入Icon,使Icon和文字同時(shí)顯示
假設(shè)按鈕ID為IDC_BUTTON1
1 .添加成員變量
CButtonSTm_btn;
2 .添加Icon資源,設(shè)其ID設(shè)為IDI_ICON1
3 .在OnInitDialog函數(shù)中初始化按鈕
m_btn.SubclassDlgItem(IDC_BUTTON1,this);
mbtn.SetIcon(IDIICON1);
m_bt
3、n.SetFlat(FALSE);
注意:為達(dá)到最好效果,請(qǐng)根據(jù)Icon的大小調(diào)整按鈕的大小。
實(shí)例:演示程序中的Standar按鈕。
Q效果二:顯示平面按鈕
只需要在效果一的基礎(chǔ)上把m_btn.SetFlat(FALSE);語(yǔ)句去掉。
0效果三:使按鈕上的圖標(biāo)可變
假設(shè)按鈕ID為IDC_BUTTON1
1 .添加成員變量
CButtonSTm_btn;
2 .添加兩個(gè)Icon資源,ID設(shè)為IDI_ICON1和IDI_ICON2IDI_ICON1是普通狀態(tài)的圖標(biāo),IDI_ICON2是按下時(shí)的圖標(biāo)
3 .在OnInitDialog函數(shù)中初始化按鈕
m_btn.Subclas
4、sDlgItem(IDC_BUTTON1,this);
m_btn.SetIcon(IDI_ICON2,IDI_ICON1);
實(shí)例:演示程序中的Halloween按鈕。
0效果四:設(shè)置按鈕在不同狀態(tài)下的底色和文字顏色
假設(shè)按鈕ID為IDC_BUTTON1
1 .添加成員變量
CButtonSTm_btn;
2 .添加Icon資源,設(shè)其ID設(shè)為IDI_ICON1
3 .在OnInitDialog函數(shù)中初始化按鈕
m_btn.SubclassDlgItem(IDC_BUTTON1,this);
m_btn.SetIcon(IDI_ICON1);
m_btn.SetC010r
5、(CButtonST二BTNST_COLOR_BK_OUT,RGB(208,208,208));
m_btn.SetC010r(CButtonST二BTNST_COLOR_BK_FOCUS,RGB(208,208,208));
m_btn.OffsetC010r(CButtonST二BTNST_COLOR_BK_IN,30);
提示:SetColor函數(shù)和OffsetC010r函數(shù)的第一個(gè)參數(shù)表示按鈕的各個(gè)狀態(tài),前景色就是文字的顏色,它們的取值表示:
BTNST_COLOR_BK_IN//鼠標(biāo)放在按鈕內(nèi)時(shí)的背景色BTNST_COLOR_FG_IN,//鼠標(biāo)放在按鈕內(nèi)時(shí)的前景色BTNST
6、COLORBKOUT,//普通狀態(tài)時(shí)的背景色
5
BTNST_COLOR_FG_OUT,//普通狀態(tài)時(shí)的前景色BTNST_COLOR_BK_FOCUS按鈕被按下后的背景色BTNST_COLOR_FG_FOCUS按鈕被按下后的前景色
實(shí)例:演示程序中的48X48icon按鈕、Zip按鈕等。。效果五:設(shè)置圖標(biāo)和文字的位置
假設(shè)按鈕ID為IDC_BUTTON1
1 .添加成員變量
CButtonSTm_btn;
2 .添加Icon資源,ID設(shè)為IDI_ICON1
3 .在OnInitDialog函數(shù)中初始化按鈕m_btn.SubclassDlgItem(IDC_BUTTON1
7、,this);
m_btn.SetIcon(IDI_ICON1);
m_btn.SetAlign(CButtonST::ST_ALIGN_VERT);
提示:SetAlign函數(shù)的第一個(gè)參數(shù)表示位置信息,缺省情況下,文字在圖標(biāo)右邊
ST_ALIGN_HORIZ/文字在右ST_ALIGN_VERT//文字在下ST_ALIGN_HORIZ_RIGHT/fc字在左
實(shí)例:演示程序中的Search按鈕。
°效果六:根據(jù)Icon的形狀設(shè)置按鈕的形狀
假設(shè)按鈕ID為IDC_BUTTON1
1 .添加成員變量
CButtonSTm_btn;
2 .添加Icon資源,設(shè)其ID設(shè)為IDI_I
8、CON1
3 .在OnInitDialog函數(shù)中初始化按鈕
m_btn.SubclassDlgItem(IDC_BUTTON1,this);
m_btn.SetIcon(IDI_ICON1);
m_btn.DrawBorder(FALSE);
m_btn.SetColor(CButtonST二BTNST_COLOR_BK_OUT,RGB(208,208,208));
m_btn.SetColor(CButtonST二BTNST_COLOR_BK_IN,RGB(208,208,208));
m_btn.SetColor(CButtonST二BTNST_COLOR_BK_FOCUS
9、,RGB(208,208,208));
注意:為達(dá)到最好效果,請(qǐng)根據(jù)Icon的大小調(diào)整按鈕的大小。
并根據(jù)實(shí)際情況設(shè)置背景顏色。請(qǐng)事先將按鈕的文字去掉。
3效果七:添加Tooltips
假設(shè)按鈕ID為IDC_BUTTON1
1 .添加成員變量
CButtonSTm_btn;
2 .添加Icon資源,設(shè)其ID設(shè)為IDI_ICON1
3 .在OnInitDialog函數(shù)中初始化按鈕
m_btn.SubclassDlgItem(IDC_BUTTON1,this);
m_btn.SetIcon(IDI_ICON1);
m_btn.SetTooltipText(_T("Thisis
10、atooltip.\r\nMultiline!"));
效果一:改變鼠標(biāo)進(jìn)入按鈕時(shí)的形狀(超鏈接效果)
假設(shè)按鈕ID為IDC_BUTTON1
1 .添加成員變量
CButtonSTm_btn;
2 .添加Icon資源,設(shè)其ID設(shè)為IDI_ICON1
3 .在OnInitDialog函數(shù)中初始化按鈕
m_btn.SubclassDlgItem(IDC_BUTTON1,this);
m_btn.SetIcon(IDI_ICON1);
m_btn.OffsetColor(CButtonST二BTNST_COLOR_BK_IN,30);
m_btn.SetURL("");
m_
11、btn.SetTooltipText("");
m_btn.SetBtnCursor(IDC_CURSOR1);
0效果二:菜單按鈕
假設(shè)按鈕ID為IDC_BUTTON1
1 .添加成員變量
CButtonSTm_btn;
2 .添加Icon資源,設(shè)其ID設(shè)為IDI_ICON1
3 .添加MenuID設(shè)為IDR_MENU
4 .在OnInitDialog函數(shù)中初始化按鈕
m_btn.SubclassDlgItem(IDC_BUTTON1,this);
m_btn.SetIcon(IDI_ICON1);
m_btn.OffsetColor(CButtonST二BTNST_C
12、OLOR_BK_IN,30);
m_btn.SetMenu(IDR_MENU,m_hWnd);
注意:菜單的效果類似與右鍵菜單,所有在設(shè)置菜單選項(xiàng)時(shí)只設(shè)置一列就夠了C另外菜單的寬度與菜單的文字長(zhǎng)度有關(guān),可以用空格占位的辦法以達(dá)到最佳效果。
在菜單中引入位圖的方法
1 .添加ToolBar,依次使用Menu<單項(xiàng)ID作為ToolBar按鈕的ID。
2 .ToolBar上的按鈕圖標(biāo)將顯示在相應(yīng)的菜單項(xiàng)中。
將上面代碼中的m_btn.SetMenu(IDR_MENU,m_hWnd);
改為m_btn.SetMenu(IDR_MENU,m_hWnd,TRUE,IDR_TOOLBAR);
13、
IDR_TOOLBAR相應(yīng)ToolBar的ID。
0效果三:位圖按鈕
假設(shè)按鈕ID為IDC_BUTTON1
1 .添加成員變量
CButtonSTm_btn;
2 .添加位圖資源,ID設(shè)為IDB_BITMAP1
3 .在OnInitDialog函數(shù)中初始化按鈕
m_btn.SubclassDlgItem(IDC_BUTTON1,this);
m_btn.SetBitmaps(IDB_BITMAP1,RGB(0,0,0));
m_btn.OffsetColor(CButtonST二BTNST_COLOR_BK_IN,30);
提示:上面的SetBitmaps函數(shù)會(huì)將圖片
14、中顏色值為RGB(0,0,0)的點(diǎn)設(shè)為透明
。效果四:按鈕焦點(diǎn)
假設(shè)按鈕ID為IDC_BUTTON1
1 .添加成員變量
CButtonSTm_btn;
2 .添加Icon資源,設(shè)其ID設(shè)為IDI_ICON1
3 .在OnInitDialog函數(shù)中初始化按鈕
m_btn.SubclassDlgItem(IDC_BUTTON1,this);
m_btn.SetIcon(IDI_ICON1);
m_btn.SetAlign(CButtonST::ST_ALIGN_VERT);
m_btn.DrawFlatFocus(TRUE);
。效果五:CheckBox按鈕
假設(shè)按鈕ID
15、為IDC_BUTTON1
1 .添加成員變量
CButtonSTm_btn;
2 .添加Icon資源,ID設(shè)為IDI_ICON1和IDI_ICON2
3 .在OnInitDialog函數(shù)中初始化按鈕
m_btn.SubclassDlgItem(IDC_CHECK1,this);
m_btn.SetIcon(IDI_ICON1,IDI_ICON2);
mbtn.OffsetColor(CButtonST二BTNSTCOLORBKIN,30);
提示:
IDI_ICON1為選中時(shí)候顯示的圖標(biāo)
IDI_ICON2為為選中時(shí)候的圖標(biāo)
。效果六:透明按鈕
假設(shè)按鈕ID為IDC_
16、BUTTON1
1 .添加成員變量
CButtonSTm_btn;
2 .添加Icon資源,ID設(shè)為IDI_ICON1
3 .在OnInitDialog函數(shù)中初始化按鈕
m_btn.SubclassDlgItem(IDC_BUTTON1,this);
m_btn.SetIcon(IDI_ICON1);
m_btn.DrawTransparent(TRUE);
°效果七:特殊的PictureBox
利用CButtonST的特殊顯示風(fēng)格,完全可以把它當(dāng)作一個(gè)PictureBox控件使用這時(shí)一般會(huì)把按鈕的屬性設(shè)置為disable。
實(shí)例:演示程序的About頁(yè)中使用了CButto
17、nST來(lái)代替PictureBox。
一、CWinXPButtonS錢
CWinXPButtonS錢是一個(gè)CButtonST的派生類。它的特點(diǎn)是使用了WindowsXP中的圓角、黑色邊框的風(fēng)格。它包括WinXPButtonST.h和WinXPButtonST.cpp兩個(gè)文件,而由于它是從CButtonST派生而來(lái)的,所以在引用它時(shí),也要一并引入CButtonST的文件。
使用:
1 .引入文件,添加文件
2 .導(dǎo)入文件后,在SdtAfx.h文件中添加
#include"WinXPButtonST.h"
3 .添加成員變量
CWinXPButtonSTm_btn2;
4 .假設(shè)
18、按鈕ID為IDC_BUTTON
添加Icon資源,ID設(shè)為IDI_ICON1
5 .在OnInitDialog函數(shù)中初始化按鈕m_btn2.SubclassDlgItem(IDC_BUTTON,this);
m_btn2.SetIcon(IDI_ICON1);m_btn2.SetRounded(TRUE);
注意:但是它存在一個(gè)不足的地方,就是按鈕的圓角是畫出來(lái)的,按鈕的形狀仍然是原來(lái)的矩形。所以如果在有背景色的窗口中使用該按鈕的話就會(huì)顯得相當(dāng)?shù)K眼。
如圖所示,在黑色的背景色中顯示出難看的尖角:
解決的辦法是通過(guò)SetColor函數(shù)使得按鈕的底色與窗口的底色一致。
。二
19、、CShadeButtonST類
CShadeButtonST類是CButtonST的另一個(gè)派生類。它的特點(diǎn)是支持更為多樣化的背景,通過(guò)SetShade函數(shù)可以為按鈕設(shè)置9種不通的背景效果。它包括四個(gè)文件,它們分別是CeXDib.h、CeXDib.cpp、ShadeButtonST.h和ShadeButtonST.cpp。在引用它時(shí),同樣要一并引入CButtonST的文件。
使用:
1 .引入文件,添加文件
2 .導(dǎo)入文件后,在SdtAfx.h文件中添加
#include"ShadeButtonST.h"
3 .添加成員變量
CShadeButtonSTm_btn3;
4 .假
20、設(shè)按鈕ID為IDC_BUTTON3
添加Icon資源,ID設(shè)為IDI_ICON1
5 .在OnInitDialog函數(shù)中初始化按鈕
m_btn3.SubclassDlgItem(IDC_BUTTON3,this);
m_btn3.SetIcon(IDI_ICON1);
m_btn3.SetShade(CShadeButtonST二SHS_METAL);
下面給出各種背景效果和對(duì)應(yīng)的參數(shù)值。
15
CShadeButtonST
SHS METAL
SHS NOISE
SHS VSHADE
shS.hardbuiuiPSHS_VBUMPISHS_HSHADE
SHSSOFTBUMPSHSHBUMPISHSDIAGSHADE?■
附件名:CButtonST_Source.zip
附件描述:
附件大小48.1KB
下載次數(shù):62
附件名:CButtonST_demo.zip
附件描述:
附件大小276.0KB
下載次數(shù):50
大家可到www.sunxin.org網(wǎng)站,點(diǎn)擊進(jìn)入論壇,輸入BtnST搜索,即可下載附件代碼