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

本文以实例形式讲解了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透明按钮,感兴趣的读者可以自己测试一下。

时间: 2014-08-09

VC中Tab control控件的用法详细解析

1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish. 2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置ID为IDC_TABTEST 在More Styles里勾上Bottom. 调速尺寸使其布满整个对话框, 我这边Tab Control的尺寸最后为164X203. 在ClassWizard为其添加变量, 变量名为m_tab. 类型为CTabCtrl. 3. 在对话框的初始化函数OnInitDialog

VC++中HTControl控件类之CHTRichEdit富文本编辑控件实例

本文所述CHTRichEdit控件类继承自CRichEditCtrl,为了避免CRichEditCtrl的界面风格与CRichEditCtr的滚动条不相协调,因此在CHTRichEdit控件中去掉了CRichEditCtrl的默认滚动条,替换成自己绘制的滚动条,这样就不会破坏整体外观了.替换的滚动条并不需要与默认的滚动条同样的宽度,不受操作系统主题的影响,可以支持任意的宽度,而且在不需要滚动条时它会自动消失,使软件布局不会受到影响. 具体实现代码如下: #if !defined(__CHTRic

VC小技巧汇总之控件技巧

本文搜集汇总了VC小技巧的控件技巧,对于进行VC开发来说有一定的借鉴价值,具体如下: 1.如何隐藏和显示控件 用CWnd类的函数BOOL ShowWindow(int nCmdShow)可以隐藏或显示一个控件. 例1: CWnd *pWnd; pWnd = GetDlgItem( IDC_EDIT1 ); //获取控件指针,IDC_EDIT为控件ID号 pWnd->ShowWindow( SW_HIDE ); //隐藏控件 例2: CWnd *pWnd; pWnd = GetDlgItem( I

VC++的combobox控件用法汇总

在VC++程序设计中,combobox控件是再普通不过的窗体元素控件了,而对于新手来说,掌握combobox 的各种用法显得尤其重要,本文就来总结一些实用的combobox控件用法,供大家参考. 一.添加/删除Combo Box内容: 1. 一般是在ComboBox控件属性的Data标签里添加,一行表示ComboBox下拉列表中的一行,换行用ctrl+回车. 2. 在程序初始化时动态添加,如:控件内容初始化: CString strTemp; ((CComboBox*)GetDlgItem(ID

Vc++ 控件List Control用法总结

1.新建对话框MFC,在对话框上放一个ListCtrl ID:IDC_PATH View:Report 2.为ListCtrl添加变量 右击->添加变量m_wndPath 3.找到OnInitDialog()函数添加如下代码: // TODO: 在此添加额外的初始化代码 m_wndPath.DeleteAllItems();//清空 m_wndPath.InsertColumn(0,_T("项目"));//添加列 m_wndPath.InsertColumn(1,_T("

ASP.NET MVC引入JQUERY JQRTE控件

主要步骤如下: 1,在asp.net mvc项目中引入jqrte类库,声明辅助类用于存储服务器端上载文件的信息 复制代码 代码如下: public class ViewDataUploadFilesResult { public string message { get; set; } //public int Length { get; set; } public string imagepath { get; set; } public string error { get; set; }

.net mvc页面UI之Jquery博客日历控件实现代码

一.效果图 二.页面文件 页面上需要添加<div id="cal"></div>标记. 三.JS代码 复制代码 代码如下: // JavaScript 日历 $(document).ready(function () { //当前时间 $now = new Date();                      //当前的时间 $nowYear = $now.getFullYear();          //当前的年 $nowMonth = $now.get

VC++ 自定义控件的建立及使用方法

一.VC++定义自定义控件与delphi,VB有些差异. delphi,vb在 file-new-other中建立.vc++在工具栏中就有自定义控件,但必须加入控件类型. 许多书籍都在类向导中建立.我这里介绍的是手动建立,其结果是一样的. 二.建立过自定义控件类型: 2.1.把工具栏上的自定义控件放入对话框中    2.2.建立Mycontrol.h, Mycontrol.cpp文件    2.3.Mycontrol.h中的定义是 #ifndef __MYCTROLTRL_H__ #define

c#调用vc写的ocx控件示例

在c#中怎样调用VC写的OCX控件,主要有两个关键环节 两个关键环节:导入ocx控件,创建实例. 1 注册ocx: 复制代码 代码如下: regsvr32.exe alasunsmscon.ocx 2 在CMD窗口中执行: 复制代码 代码如下: AxImp.exe alasunsmscon.ocx 生成两个文件:alasun.dll,Axalasun.dll 3 在项目中引用Axalasun.dll 4 调用 复制代码 代码如下: Axalasun.Axalasunsms sms = new A

基于C#调用OCX控件的常用方法(推荐)

小伙伴们在使用ICP提供的各种能力进行集成开发时常常会遇到一些技术上的困扰,例如ICP中很多接口是通过OCX控件的方式提供的,如何调用这些接口,就成了一个不大不小的问题,毕竟开发指南上可没这些内容啊~别着急,今天我就给大家介绍一下C#中调用OCX接口的常用方法.^_^y 开发环境:win7企业版,vs2010 控件:以voice.ocx为例 一.Winform工程中调用OCX控件 1.使用regsvr32控制台命令注册控件: 1.1 打开控制台,进入控件存放路径 1.2 输入控制台命令:regs

JS实现OCX控件的事件响应示例

JS支持OCX控件的事件(event),当OCX控件定义的事件发生时,JS可以捕获该事件并对事件进行相应的处理. 个人理解,其实就是事件的响应由谁来完成,OCX控件自身肯定是可以实现的,JS提供的这种机制使JS也可以完成OCX控件事件的响应. 简单举例如下: 首先在OCX控件中添加自定义事件(预定义事件同理,如鼠标点击等,没亲自试,感觉原理应该是一样的), 事件应该是属于窗口的,所以在Ctrl类上单击右键,Add->Add Event,如下图: 在打开的对话框中输入事件名称,例如OnChange

易语言ocx控件制作条形码功能

关键易语言调用OCX控件功能 1.打开易语言,点工具 点OCX组件 2.这里我以安装一个条形码控件为例,点注册组件,然后选择ocx 文件, 然后点确定 3.确定后,ocx控件安装成功,在列表出现OCX控件图标选择他,然后点下一步 4.点保存,会跳出一个保存的目录 随便保存到一个目录即可,确定后会询问你是否在易语言程序里生成一个库文件,点是即可!这时候易语言会自动关闭,正常的,然后在打开易语言! 5.然后点工具 点支持库配置 打钩刚才安装的ActiveBarcode 点确定  这这一步已经安装成功

jquery实现pager控件示例

js: 复制代码 代码如下: $.fn.extend({ JPager: function (cfg, pageIndex, pageSize) {    if (cfg && pageIndex > 0 && pageSize>0) {        var token = "#" + this.attr("id");        this.empty();        var pageFirst = functio

JS调用Android、Ios原生控件

在上一篇博客(详解JS与APP原生控件交互)中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时,提高代码质量,实现两者在网页端代码的统一. 首先我们先看一下Ios调用JS的方法实现: //无参调用 function SwiftCallJs1(){} //有参调用 function SwiftCallJs2(name, message){} 紧接着我们看一下And

Android实现日历控件示例代码

做的是一个酒店的项目,可以选择入住和离开的日期.声明为了省事在网上找的资料,自己修改的逻辑,希望对需要的朋友有帮助.喜欢的给个好评.谢谢啦!祝生活愉快! 先上图 第一步,搭建布局xml <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_w

angularjs实现的前端分页控件示例

前言:之前写个一个jQuery的分页显示插件,存在许多的bug,现在由于业务需要,学习的一点AngularJS,重新用angularjs实现了这个分页插件 实现效果图: (效果图是加上了bootstrap的css文件) 用法: angular-pagination.js代码: /** * angularjs分页控件 * Created by CHEN on 2016/11/1. */ angular.module('myModule', []).directive('myPagination',

android自定义倒计时控件示例

自定义TextView控件TimeTextView代码: 复制代码 代码如下: import android.content.Context;import android.content.res.TypedArray;import android.graphics.Paint;import android.text.Html;import android.util.AttributeSet;import android.widget.TextView; import com.new0315.R;