VC++中HTControl的CHTButton按鈕控件類用法實(shí)例解析
本文以實(shí)例形式講解了VC++中HTControl控件類的CHTButton按鈕控件類用法,相信對大家更好的理解VC++有一定的幫助。具體內(nèi)容如下:
一般了解VC++的朋友都知道,VC++ 按鈕控件CHTButton隸屬HTControl控件組,直接由WIN32 API實(shí)現(xiàn),你可以在SDK,MFC,wxWidget等環(huán)境下使用它。支持生成各種類型的按鈕,比如:普通按鈕,PNG透明按鈕,復(fù)選框按鈕,單選按鈕等。使用時(shí)請注意,窗體必須動態(tài)創(chuàng)建,代碼段如下:
m_HTBtnClose.Create(758, 0, 39, 20, m_hWnd, iChildId++); m_HTBtnClose.SetAllBitmap(m_hBmpBtnCloseNormal, m_hBmpBtnCloseDown,m_hBmpBtnCloseHover); m_HTBtnClose.SetParentBgMemDC(m_hdcMemBuf);
CHTButton.h控件核心代碼及注釋說明如下:
/*****************************************************************
| Copyright (c) 2012,
******************************************************************/
#if !defined(__CHTBUTTON_H__)
#define __CHTBUTTON_H__
#include "CHTTip.h"
class CMyButton;
class AFX_CLASS_EXPORT CHTButton
{
public:
CHTButton();
~CHTButton();
/****************************************************************************
| 函數(shù)功能:創(chuàng)建按鈕 |
| 輸入?yún)?shù): |
| x: 窗體位置x坐標(biāo)(相對于父窗體) |
| y: 窗體位置y坐標(biāo)(相對于父窗體) |
| iWidth: 窗體寬 |
| iHeight: 窗體高 |
| hParent: 父窗口句柄 |
| hBtnId: 窗體ID |
| szLabel: 窗體標(biāo)題 |
| dwStyle: 按鈕行為標(biāo)識 |
| BS_CHECKBOX :復(fù)選框按鈕 |
| BS_RADIOBUTTON :單選按鈕 |
| BS_NOTIFY:發(fā)送得到(BN_SETFOCUS)失去(BN_KILLFOCUS)焦點(diǎn)的通知 |
| BS_NOTIFY << 2: 發(fā)送按下通知(BN_KILLFOCUS + 2) |
| 輸出參數(shù):無 |
| 返回值: 成功:窗口句柄 失敗: NULL |
| 說明: |
****************************************************************************/
HWND Create(int x, int y, int iWidth, int iHeight, HWND hParent, int iBtnId,
TCHAR* szLabel = NULL, DWORD dwStyle = NULL);
/****************************************************************************
| 函數(shù)功能:改變窗口位置大小 |
| 輸入?yún)?shù): |
| iWidth: 窗體寬 -1表示寬不變 |
| iHeight: 窗體高 -1表示高不變 |
| x: 窗體位置x坐標(biāo) |
| y: 窗體位置y坐標(biāo) |
| bRepaint: 改變后是否重繪窗口 |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明:如果改變了窗口大小,在MoveWindow之前需要重新設(shè)置各種位圖 |
****************************************************************************/
void MoveWindow(int x, int y, int iWidth = -1, int iHeight = -1, BOOL bRepaint = TRUE);
/****************************************************************************
| 函數(shù)功能:設(shè)置提示窗口類指針 |
| 輸入?yún)?shù): |
| pclTip: 提示窗口類指針 |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明: |
****************************************************************************/
void SetToolTip(CHTTip* pclTip);
/****************************************************************************
| 函數(shù)功能:設(shè)置提示窗口的文本 |
| 輸入?yún)?shù): |
| szTipText: 提示文本 |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明: |
****************************************************************************/
void SetTipText(TCHAR* szTipText);
/****************************************************************************
| 函數(shù)功能:獲取窗口的句柄 |
| 輸入?yún)?shù):無 |
| 輸出參數(shù):無 |
| 返回值: 窗體句柄 |
| 說 明: |
****************************************************************************/
HWND GetHandle();
/****************************************************************************
| 函數(shù)功能:獲取父窗口的句柄 |
| 輸入?yún)?shù):無 |
| 輸出參數(shù):無 |
| 返回值: 父窗體句柄 |
| 說 明: |
****************************************************************************/
HWND GetParent();
/****************************************************************************
| 函數(shù)功能:設(shè)置字體 |
| 輸入?yún)?shù): |
| hFont: 字體 |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明: |
****************************************************************************/
void SetFont(HFONT hFont);
/****************************************************************************
| 函數(shù)功能:設(shè)置文字的顏色 |
| 輸入?yún)?shù): |
| CRText: 顏色值 |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明: |
****************************************************************************/
void SetBtnTextColor(COLORREF CRText);
/****************************************************************************
| 函數(shù)功能:設(shè)置字體(鼠標(biāo)停留窗體上時(shí)) |
| 輸入?yún)?shù): |
| hFont: 字體 |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明:如未設(shè)置則采用SetFont設(shè)置的字體 |
****************************************************************************/
void SetHoverFont(HFONT hFont);
/****************************************************************************
| 函數(shù)功能:設(shè)置文字的顏色(鼠標(biāo)停留窗體上時(shí)) |
| 輸入?yún)?shù): |
| CRText: 顏色值 |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明:如未設(shè)置則采用SetBtnTextColor設(shè)置的顏色 |
****************************************************************************/
void SetHoverBtnTextColor(COLORREF CRText);
/****************************************************************************
| 函數(shù)功能:使窗口無效并繪制窗口 |
| 輸入?yún)?shù):無 |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明: |
****************************************************************************/
void Disable();
/****************************************************************************
| 函數(shù)功能:使窗口有效并按常態(tài)繪制窗口 |
| 輸入?yún)?shù):無 |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明: |
****************************************************************************/
void Enable();
/****************************************************************************
| 函數(shù)功能:設(shè)置按鈕顯示的文本 |
| 輸入?yún)?shù): |
| szLabel: 按鈕的文本 |
| point: 文字起始坐標(biāo),默認(rèn)居中 |
| bTextMove:按下時(shí)文字是否移動(向右下角移動一像素) |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明: |
****************************************************************************/
void SetLabel(TCHAR* szLabel, POINT* point = NULL, BOOL bTextMove = TRUE);
/****************************************************************************
| 函數(shù)功能:獲取按鈕上的文本 |
| 輸入?yún)?shù): |
| szLabel: 按鈕的文本 |
| 輸出參數(shù):無 |
| 返回值: 文本指針 |
| 說 明: |
****************************************************************************/
TCHAR* GetLabel();
/****************************************************************************
| 函數(shù)功能:獲取按鈕狀態(tài) |
| 輸入?yún)?shù):無 |
| 輸出參數(shù):無 |
| 返回值: 按鈕狀態(tài) 0:常態(tài) 1:按下 2:長按 3:無效 |
| 說 明: |
****************************************************************************/
int GetState();
/****************************************************************************
| 函數(shù)功能:設(shè)置長按生效時(shí)間 |
| 輸入?yún)?shù): |
| wLongPressTime : 長按生效時(shí)間(長按通知碼BN_KILLFOCUS + 3) |
| 0表示不打開長按功能 |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明: |
****************************************************************************/
void SetLongPressTime(WORD wLongPressTime);
/****************************************************************************
| 函數(shù)功能:設(shè)置復(fù)選和單選按鈕的狀態(tài) |
| 輸入?yún)?shù): |
| bCheck: FALSE(BST_UNCHECKED)或者TRUE(BST_CHECKED) |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明: |
****************************************************************************/
void SetCheck(BOOL bCheck);
/****************************************************************************
| 函數(shù)功能:獲取復(fù)選和單選按鈕的狀態(tài) |
| 輸入?yún)?shù):無 |
| 輸出參數(shù):無 |
| 返回值: FALSE(BST_UNCHECKED)或者TRUE(BST_CHECKED) |
| 說 明: |
****************************************************************************/
BOOL GetCheck();
/****************************************************************************
| 函數(shù)功能:設(shè)置按鈕常態(tài)的位圖 |
| 輸入?yún)?shù): |
| hBitmap: 位圖 |
| iNormalLeftLen: 位圖左側(cè)不可拉伸部分的長度 |
| iNormalRightLen: 位圖右側(cè)不可拉伸部分的長度 |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明: |
****************************************************************************/
void SetNormalBitmap(HBITMAP hBitmap, int iNormalLeftLen = 0, int iNormalRightLen = 0);
/****************************************************************************
| 函數(shù)功能:設(shè)置按鈕按下的位圖 |
| 輸入?yún)?shù): |
| hBitmap: 位圖 |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明: |
****************************************************************************/
void SetLBtnDownBitmap(HBITMAP hBitmap);
/****************************************************************************
| 函數(shù)功能:設(shè)置鼠標(biāo)在按鈕之上時(shí)按鈕的位圖 |
| 輸入?yún)?shù): |
| hBitmap: 位圖 |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明: |
****************************************************************************/
void SetHoverBitmap(HBITMAP hBitmap);
/****************************************************************************
| 函數(shù)功能:設(shè)置按鈕無效時(shí)的位圖 |
| 輸入?yún)?shù): |
| hBitmap: 位圖 |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明: |
****************************************************************************/
void SetDisableBitmap(HBITMAP hBitmap);
void SetAllBitmap(HBITMAP hBitmapNormal, HBITMAP hBitmapLBtnDown, HBITMAP hBitmapHover,
int iNormalLeftLen = 0, int iNormalRightLen = 0);
/****************************************************************************
| 函數(shù)功能:設(shè)置按鈕上的圖標(biāo)的位圖 |
| 輸入?yún)?shù): |
| hBitmap: 位圖 |
| pIconRect:圖標(biāo)占據(jù)的矩形 |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明: |
****************************************************************************/
void SetIcon(HBITMAP hBitmap, RECT* pIconRect);
/****************************************************************************
| 函數(shù)功能:設(shè)置窗體的不透明度 |
| 輸入?yún)?shù): |
| iTransparency: 不透明度的百分比 |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明: |
****************************************************************************/
void SetTransparency(int iTransparency);
/****************************************************************************
| 函數(shù)功能:設(shè)置父窗體背景內(nèi)存畫布 |
| 輸入?yún)?shù): |
| hParentBgMemDC: 父窗體背景內(nèi)存畫布 |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明:當(dāng)父窗體背景在變化并且此窗體本身也有透明度時(shí)(包括窗體使用的位圖 |
| 具有透明度或者窗體沒有背景位圖),需要調(diào)用此接口 |
****************************************************************************/
void SetParentBgMemDC(HDC hParentBgMemDC, int x = 0, int y = 0);
/****************************************************************************
| 函數(shù)功能:設(shè)置父窗體使用的背景位圖 |
| 輸入?yún)?shù): |
| hParentBgBitmap: 父窗體使用的背景位圖 |
| x, y 位圖繪畫起始點(diǎn)坐標(biāo) |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明:當(dāng)父窗體背景使用靜態(tài)位圖并且此窗體本身也有透明度時(shí)(包括窗體使用 |
| 的位圖具有透明度或者窗體沒有背景位圖),需要調(diào)用此接口 |
****************************************************************************/
void SetParentBgBitmap(HBITMAP hParentBgBitmap, int x = 0, int y = 0);
/****************************************************************************
| 函數(shù)功能:設(shè)置父窗體背景顏色 |
| 輸入?yún)?shù): |
| CRParentBg: 父窗體背景顏色 |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明:當(dāng)父窗體背景使用固定顏色并且此窗體本身也有透明度時(shí)(包括窗體使用 |
| 的位圖具有透明度或者窗體沒有背景位圖),需要調(diào)用此接口 |
****************************************************************************/
void SetParentBgColor(COLORREF CRParentBg = RGB(236, 233, 216));
/****************************************************************************
| 函數(shù)功能:把窗口繪制到目標(biāo)設(shè)備內(nèi)容 |
| 輸入?yún)?shù): |
| hdcDest: 目標(biāo)設(shè)備內(nèi)容 |
| x, y: 繪畫起始坐標(biāo) |
| 輸出參數(shù):無 |
| 返回值: 無 |
| 說 明: |
****************************************************************************/
void DrawWindow(HDC hdcDest, int x = 0, int y = 0);
CMyButton* GetCMyButton();
private:
CMyButton* m_pclBtn;
};
#endif //!__CHTBUTTON_H__
此類支持窗體以任意透明度顯示,操作很簡單,使用下面接口即可實(shí)現(xiàn):
void SetTransparency(int iTransparency);
CHTButton類同時(shí)也實(shí)現(xiàn)了PNG透明按鈕,感興趣的讀者可以自己測試一下。
上一篇:VC++實(shí)現(xiàn)通過API來查看程序錯誤信息的方法
欄 目:C語言
本文標(biāo)題:VC++中HTControl的CHTButton按鈕控件類用法實(shí)例解析
本文地址:http://www.jygsgssxh.com/a1/Cyuyan/3523.html
您可能感興趣的文章
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對數(shù)怎么表達(dá)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 01-10深入理解C++中常見的關(guān)鍵字含義
- 01-10深入Main函數(shù)中的參數(shù)argc,argv的使用詳解
- 01-10APUE筆記之:進(jìn)程環(huán)境詳解
- 01-10c++中inline的用法分析
- 01-10如何尋找數(shù)組中的第二大數(shù)
- 01-10C++大數(shù)模板(推薦)


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求


