首页 > 编程 > C++ > 正文

VC++中HTControl的CHTButton按钮控件类用法实例解析

2020-01-26 15:25:32
字体:
来源:转载
供稿:网友

本文以实例形式讲解了VC++中HTControl控件类的CHTButton按钮控件类用法,相信对大家更好的理解VC++有一定的帮助。具体内容如下:

一般了解VC++的朋友都知道,VC++ 按钮控件CHTButton隶属HTControl控件组,直接由WIN32 API实现,你可以在SDK,MFC,wxWidget等环境下使用它。支持生成各种类型的按钮,比如:普通按钮,PNG透明按钮,复选框按钮,单选按钮等。使用时请注意,窗体必须动态创建,代码段如下:

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();/****************************************************************************| 函数功能:创建按钮                            || 输入参数:                                || x:    窗体位置x坐标(相对于父窗体)                   || y:    窗体位置y坐标(相对于父窗体)                   || iWidth: 窗体宽                             || iHeight: 窗体高                             || hParent: 父窗口句柄                           || hBtnId: 窗体ID                             || szLabel: 窗体标题                            || dwStyle: 按钮行为标识                          ||      BS_CHECKBOX :复选框按钮                    ||      BS_RADIOBUTTON :单选按钮                    ||      BS_NOTIFY:发送得到(BN_SETFOCUS)失去(BN_KILLFOCUS)焦点的通知  ||      BS_NOTIFY << 2: 发送按下通知(BN_KILLFOCUS + 2)         || 输出参数:无                               || 返回值: 成功:窗口句柄 失败: NULL                   || 说明:                                  |****************************************************************************/ HWND Create(int x, int y, int iWidth, int iHeight, HWND hParent, int iBtnId,      TCHAR* szLabel = NULL, DWORD dwStyle = NULL);/****************************************************************************| 函数功能:改变窗口位置大小                        || 输入参数:                                || iWidth: 窗体宽 -1表示宽不变                      || iHeight: 窗体高 -1表示高不变                      || x: 窗体位置x坐标                             || y: 窗体位置y坐标                             || bRepaint: 改变后是否重绘窗口                       || 输出参数:无                               || 返回值: 无                               || 说  明:如果改变了窗口大小,在MoveWindow之前需要重新设置各种位图    |****************************************************************************/ void MoveWindow(int x, int y, int iWidth = -1, int iHeight = -1, BOOL bRepaint = TRUE);/****************************************************************************| 函数功能:设置提示窗口类指针                       || 输入参数:                                || pclTip: 提示窗口类指针                          || 输出参数:无                               || 返回值: 无                               || 说  明:                                |****************************************************************************/ void SetToolTip(CHTTip* pclTip);/****************************************************************************| 函数功能:设置提示窗口的文本                       || 输入参数:                                || szTipText: 提示文本                           || 输出参数:无                               || 返回值: 无                               || 说  明:                                |****************************************************************************/ void SetTipText(TCHAR* szTipText);/****************************************************************************| 函数功能:获取窗口的句柄                         || 输入参数:无                               || 输出参数:无                               || 返回值: 窗体句柄                            || 说  明:                                |****************************************************************************/ HWND GetHandle();/****************************************************************************| 函数功能:获取父窗口的句柄                        || 输入参数:无                               || 输出参数:无                               || 返回值: 父窗体句柄                           || 说  明:                                |****************************************************************************/ HWND GetParent();/****************************************************************************| 函数功能:设置字体                            || 输入参数:                                || hFont: 字体                               || 输出参数:无                               || 返回值: 无                               || 说  明:                                |****************************************************************************/ void SetFont(HFONT hFont);/****************************************************************************| 函数功能:设置文字的颜色                         || 输入参数:                                || CRText: 颜色值                              || 输出参数:无                               || 返回值: 无                               || 说  明:                                |****************************************************************************/ void SetBtnTextColor(COLORREF CRText);/****************************************************************************| 函数功能:设置字体(鼠标停留窗体上时)                   || 输入参数:                                || hFont: 字体                               || 输出参数:无                               || 返回值: 无                               || 说  明:如未设置则采用SetFont设置的字体                 |****************************************************************************/ void SetHoverFont(HFONT hFont);/****************************************************************************| 函数功能:设置文字的颜色(鼠标停留窗体上时)                || 输入参数:                                || CRText: 颜色值                              || 输出参数:无                               || 返回值: 无                               || 说  明:如未设置则采用SetBtnTextColor设置的颜色             |****************************************************************************/ void SetHoverBtnTextColor(COLORREF CRText);/****************************************************************************| 函数功能:使窗口无效并绘制窗口                      || 输入参数:无                               || 输出参数:无                               || 返回值: 无                               || 说  明:                                |****************************************************************************/ void Disable();/****************************************************************************| 函数功能:使窗口有效并按常态绘制窗口                   || 输入参数:无                               || 输出参数:无                               || 返回值: 无                               || 说  明:                                |****************************************************************************/ void Enable();/****************************************************************************| 函数功能:设置按钮显示的文本                       || 输入参数:                                || szLabel: 按钮的文本                           || point: 文字起始坐标,默认居中                       || bTextMove:按下时文字是否移动(向右下角移动一像素)             || 输出参数:无                               || 返回值: 无                               || 说  明:                                |****************************************************************************/ void SetLabel(TCHAR* szLabel, POINT* point = NULL, BOOL bTextMove = TRUE);/****************************************************************************| 函数功能:获取按钮上的文本                        || 输入参数:                                || szLabel: 按钮的文本                           || 输出参数:无                               || 返回值: 文本指针                            || 说  明:                                |****************************************************************************/ TCHAR* GetLabel();/****************************************************************************| 函数功能:获取按钮状态                          || 输入参数:无                               || 输出参数:无                               || 返回值: 按钮状态 0:常态 1:按下 2:长按 3:无效            || 说  明:                                |****************************************************************************/ int GetState();/****************************************************************************| 函数功能:设置长按生效时间                        || 输入参数:                                || wLongPressTime : 长按生效时间(长按通知码BN_KILLFOCUS + 3)         | |         0表示不打开长按功能                   || 输出参数:无                               || 返回值: 无                               || 说  明:                                |****************************************************************************/ void SetLongPressTime(WORD wLongPressTime);/****************************************************************************| 函数功能:设置复选和单选按钮的状态                    || 输入参数:                                || bCheck: FALSE(BST_UNCHECKED)或者TRUE(BST_CHECKED)            || 输出参数:无                               || 返回值: 无                               || 说  明:                                |****************************************************************************/ void SetCheck(BOOL bCheck);/****************************************************************************| 函数功能:获取复选和单选按钮的状态                    || 输入参数:无                               || 输出参数:无                               || 返回值: FALSE(BST_UNCHECKED)或者TRUE(BST_CHECKED)            || 说  明:                                |****************************************************************************/ BOOL GetCheck();/****************************************************************************| 函数功能:设置按钮常态的位图                       || 输入参数:                                || hBitmap: 位图                              || iNormalLeftLen: 位图左侧不可拉伸部分的长度                || iNormalRightLen: 位图右侧不可拉伸部分的长度                || 输出参数:无                               || 返回值: 无                               || 说  明:                                |****************************************************************************/ void SetNormalBitmap(HBITMAP hBitmap, int iNormalLeftLen = 0, int iNormalRightLen = 0);/****************************************************************************| 函数功能:设置按钮按下的位图                       || 输入参数:                                || hBitmap: 位图                              || 输出参数:无                               || 返回值: 无                               || 说  明:                                |****************************************************************************/ void SetLBtnDownBitmap(HBITMAP hBitmap);/****************************************************************************| 函数功能:设置鼠标在按钮之上时按钮的位图                 || 输入参数:                                || hBitmap: 位图                              || 输出参数:无                               || 返回值: 无                               || 说  明:                                |****************************************************************************/ void SetHoverBitmap(HBITMAP hBitmap);/****************************************************************************| 函数功能:设置按钮无效时的位图                      || 输入参数:                                || hBitmap: 位图                              || 输出参数:无                               || 返回值: 无                               || 说  明:                                |****************************************************************************/ void SetDisableBitmap(HBITMAP hBitmap); void SetAllBitmap(HBITMAP hBitmapNormal, HBITMAP hBitmapLBtnDown, HBITMAP hBitmapHover,        int iNormalLeftLen = 0, int iNormalRightLen = 0);/****************************************************************************| 函数功能:设置按钮上的图标的位图                     || 输入参数:                                || hBitmap: 位图                              || pIconRect:图标占据的矩形                         || 输出参数:无                               || 返回值: 无                               || 说  明:                                |****************************************************************************/ void SetIcon(HBITMAP hBitmap, RECT* pIconRect);/****************************************************************************| 函数功能:设置窗体的不透明度                       || 输入参数:                                || iTransparency: 不透明度的百分比                     || 输出参数:无                               || 返回值: 无                               || 说  明:                                |****************************************************************************/ void SetTransparency(int iTransparency); /****************************************************************************| 函数功能:设置父窗体背景内存画布                     || 输入参数:                                || hParentBgMemDC: 父窗体背景内存画布                    || 输出参数:无                               || 返回值: 无                               || 说  明:当父窗体背景在变化并且此窗体本身也有透明度时(包括窗体使用的位图 ||      具有透明度或者窗体没有背景位图),需要调用此接口         |****************************************************************************/ void SetParentBgMemDC(HDC hParentBgMemDC, int x = 0, int y = 0); /****************************************************************************| 函数功能:设置父窗体使用的背景位图                    || 输入参数:                                || hParentBgBitmap: 父窗体使用的背景位图                  || x, y 位图绘画起始点坐标                          || 输出参数:无                               || 返回值: 无                               || 说  明:当父窗体背景使用静态位图并且此窗体本身也有透明度时(包括窗体使用 ||      的位图具有透明度或者窗体没有背景位图),需要调用此接口      |****************************************************************************/ void SetParentBgBitmap(HBITMAP hParentBgBitmap, int x = 0, int y = 0); /****************************************************************************| 函数功能:设置父窗体背景颜色                       || 输入参数:                                || CRParentBg: 父窗体背景颜色                        || 输出参数:无                               || 返回值: 无                               || 说  明:当父窗体背景使用固定颜色并且此窗体本身也有透明度时(包括窗体使用 ||      的位图具有透明度或者窗体没有背景位图),需要调用此接口      |****************************************************************************/ void SetParentBgColor(COLORREF CRParentBg = RGB(236, 233, 216));/****************************************************************************| 函数功能:把窗口绘制到目标设备内容                    || 输入参数:                                || hdcDest: 目标设备内容                          || x, y: 绘画起始坐标                            || 输出参数:无                               || 返回值: 无                               || 说  明:                                |****************************************************************************/ void DrawWindow(HDC hdcDest, int x = 0, int y = 0); CMyButton* GetCMyButton();private: CMyButton* m_pclBtn;};#endif //!__CHTBUTTON_H__

此类支持窗体以任意透明度显示,操作很简单,使用下面接口即可实现:

void SetTransparency(int iTransparency);

CHTButton类同时也实现了PNG透明按钮,感兴趣的读者可以自己测试一下。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表