欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

VC++中HTControl的CHTButton按鈕控件類用法實例解析

 更新時間:2014年08月11日 09:45:26   投稿:shichen2014  
這篇文章主要介紹了VC++中HTControl的CHTButton按鈕控件類用法,對于大家進行VC++項目開發(fā)有一定的幫助作用,需要的朋友可以參考下

本文以實例形式講解了VC++中HTControl控件類的CHTButton按鈕控件類用法,相信對大家更好的理解VC++有一定的幫助。具體內(nèi)容如下:

一般了解VC++的朋友都知道,VC++ 按鈕控件CHTButton隸屬HTControl控件組,直接由WIN32 API實現(xiàn),你可以在SDK,MFC,wxWidget等環(huán)境下使用它。支持生成各種類型的按鈕,比如:普通按鈕,PNG透明按鈕,復(fù)選框按鈕,單選按鈕等。使用時請注意,窗體必須動態(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坐標(相對于父窗體)                   |
| y:    窗體位置y坐標(相對于父窗體)                   |
| iWidth: 窗體寬                             |
| iHeight: 窗體高                             |
| hParent: 父窗口句柄                           |
| hBtnId: 窗體ID                             |
| szLabel: 窗體標題                            |
| dwStyle: 按鈕行為標識                          |
|      BS_CHECKBOX :復(fù)選框按鈕                    |
|      BS_RADIOBUTTON :單選按鈕                    |
|      BS_NOTIFY:發(fā)送得到(BN_SETFOCUS)失去(BN_KILLFOCUS)焦點的通知  |
|      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坐標                             |
| y: 窗體位置y坐標                             |
| 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è)置字體(鼠標停留窗體上時)                   |
| 輸入?yún)?shù):                                |
| hFont: 字體                               |
| 輸出參數(shù):無                               |
| 返回值: 無                               |
| 說  明:如未設(shè)置則采用SetFont設(shè)置的字體                 |
****************************************************************************/
 void SetHoverFont(HFONT hFont);

/****************************************************************************
| 函數(shù)功能:設(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: 文字起始坐標,默認居中                       |
| bTextMove:按下時文字是否移動(向右下角移動一像素)             |
| 輸出參數(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è)置長按生效時間                        |
| 輸入?yún)?shù):                                |
| wLongPressTime : 長按生效時間(長按通知碼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è)置鼠標在按鈕之上時按鈕的位圖                 |
| 輸入?yún)?shù):                                |
| hBitmap: 位圖                              |
| 輸出參數(shù):無                               |
| 返回值: 無                               |
| 說  明:                                |
****************************************************************************/
 void SetHoverBitmap(HBITMAP hBitmap);

/****************************************************************************
| 函數(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è)置按鈕上的圖標的位圖                     |
| 輸入?yún)?shù):                                |
| hBitmap: 位圖                              |
| pIconRect:圖標占據(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ù):無                               |
| 返回值: 無                               |
| 說  明:當父窗體背景在變化并且此窗體本身也有透明度時(包括窗體使用的位圖 |
|      具有透明度或者窗體沒有背景位圖),需要調(diào)用此接口         |
****************************************************************************/
 void SetParentBgMemDC(HDC hParentBgMemDC, int x = 0, int y = 0);
 
/****************************************************************************
| 函數(shù)功能:設(shè)置父窗體使用的背景位圖                    |
| 輸入?yún)?shù):                                |
| hParentBgBitmap: 父窗體使用的背景位圖                  |
| x, y 位圖繪畫起始點坐標                          |
| 輸出參數(shù):無                               |
| 返回值: 無                               |
| 說  明:當父窗體背景使用靜態(tài)位圖并且此窗體本身也有透明度時(包括窗體使用 |
|      的位圖具有透明度或者窗體沒有背景位圖),需要調(diào)用此接口      |
****************************************************************************/
 void SetParentBgBitmap(HBITMAP hParentBgBitmap, int x = 0, int y = 0);
 
/****************************************************************************
| 函數(shù)功能:設(shè)置父窗體背景顏色                       |
| 輸入?yún)?shù):                                |
| CRParentBg: 父窗體背景顏色                        |
| 輸出參數(shù):無                               |
| 返回值: 無                               |
| 說  明:當父窗體背景使用固定顏色并且此窗體本身也有透明度時(包括窗體使用 |
|      的位圖具有透明度或者窗體沒有背景位圖),需要調(diào)用此接口      |
****************************************************************************/
 void SetParentBgColor(COLORREF CRParentBg = RGB(236, 233, 216));

/****************************************************************************
| 函數(shù)功能:把窗口繪制到目標設(shè)備內(nèi)容                    |
| 輸入?yún)?shù):                                |
| hdcDest: 目標設(shè)備內(nèi)容                          |
| x, y: 繪畫起始坐標                            |
| 輸出參數(shù):無                               |
| 返回值: 無                               |
| 說  明:                                |
****************************************************************************/
 void DrawWindow(HDC hdcDest, int x = 0, int y = 0);

 CMyButton* GetCMyButton();

private:
 CMyButton* m_pclBtn;
};
#endif //!__CHTBUTTON_H__

此類支持窗體以任意透明度顯示,操作很簡單,使用下面接口即可實現(xiàn):

void SetTransparency(int iTransparency);

CHTButton類同時也實現(xiàn)了PNG透明按鈕,感興趣的讀者可以自己測試一下。

相關(guān)文章

  • VS2010 C++ 配置優(yōu)化方案

    VS2010 C++ 配置優(yōu)化方案

    使用VS2010的時候,發(fā)現(xiàn)了不少問題,而本文則是介紹使用中需要的問題,已經(jīng)解決方案。
    2014-10-10
  • win10中的dlib庫安裝過程

    win10中的dlib庫安裝過程

    這篇文章主要介紹了win10中dlib庫的安裝過程,本文通過實例圖文介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • C++中的extern “C”用法詳解

    C++中的extern “C”用法詳解

    這篇文章主要介紹了C++中的extern “C”用法詳解,簡單來說,extern “C”是C++聲明或定義C語言符號的方法,是為了與C兼容,需要的朋友可以參考下
    2015-03-03
  • win10+VS2017+Cuda10.0環(huán)境配置詳解

    win10+VS2017+Cuda10.0環(huán)境配置詳解

    這篇文章主要介紹了win10+VS2017+Cuda10.0環(huán)境配置詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • C語言菜鳥基礎(chǔ)教程之a(chǎn)++與++a

    C語言菜鳥基礎(chǔ)教程之a(chǎn)++與++a

    很多同學(xué)在學(xué)習(xí)c語言的時候是不是會碰到a++和++a都有甚么作用啊。今天我們就來探討下
    2017-10-10
  • C語言實現(xiàn)enum枚舉

    C語言實現(xiàn)enum枚舉

    在實際編程中,有些數(shù)據(jù)的取值往往是有限的,只能是非常少量的整數(shù),并且最好為每個值都取一個名字,以方便在后續(xù)代碼中使用,比如一個星期只有七天,一年只有十二個月,一個班每周有六門課程等。 以每周七天為例,我們可以使用#define命令來給每天指定一個名字
    2021-06-06
  • C++面試八股文之如何實現(xiàn)strncpy函數(shù)

    C++面試八股文之如何實現(xiàn)strncpy函數(shù)

    strncpy函數(shù),主要用做字符串復(fù)制,將于字符從一個位置復(fù)制到另一個位置,那么如何實現(xiàn)一個strncpy函數(shù),下面小編就來和大家簡單講講吧
    2023-07-07
  • C++實現(xiàn)插入排序?qū)φ麛?shù)數(shù)組排序

    C++實現(xiàn)插入排序?qū)φ麛?shù)數(shù)組排序

    這篇文章主要為大家詳細介紹了C++實現(xiàn)插入排序?qū)φ麛?shù)數(shù)組排序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C/C++細數(shù)宏與函數(shù)有那些區(qū)別

    C/C++細數(shù)宏與函數(shù)有那些區(qū)別

    在C程序中,可以用宏代碼提高執(zhí)行效率。宏代碼本身不是函數(shù),但使用起來象函數(shù)。預(yù)處理器用復(fù)制宏代碼的方式代替函數(shù)調(diào)用,省去了參數(shù)壓棧、生成匯編語言的CALL調(diào)用、返回參數(shù)、執(zhí)行return等過程,從而提高了速度
    2022-10-10
  • Qt自繪實現(xiàn)蘋果按鈕滑動效果的示例代碼

    Qt自繪實現(xiàn)蘋果按鈕滑動效果的示例代碼

    這篇文章主要介紹了Qt自繪實現(xiàn)蘋果按鈕滑動效果的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11

最新評論