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

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

具体实现代码如下:

#if !defined(__CHTRichEdit_H__)
#define __CHTRichEdit_H__
#include "CHTScrollButton.h"
#include "CHTVertScrollBar.h"
#include "CHTHorzScrollBar.h"
class AFX_CLASS_EXPORT CHTRichEdit : public CRichEditCtrl
{
 DECLARE_DYNAMIC(CHTRichEdit)
public:
 CHTRichEdit();
 virtual ~CHTRichEdit();
protected:
 DECLARE_MESSAGE_MAP()
public:
/****************************************************************************
| 函数功能:创建滚动条的按钮                        |
| 输入参数:                                |
| iWidth:  按钮宽                             |
| iHeight: 按钮高                             |
| hBitmapUpNormal: 向上按钮常态位图                    |
| hBitmapUpHover: 向上按钮鼠标停留位图                   |
| hBitmapUpDown: 向上按钮鼠标按下位图                   |
| hBitmapDownNormal: 向下按钮常态位图                   |
| hBitmapDownHover: 向下按钮鼠标停留位图                  |
| hBitmapDownDown: 向下按钮鼠标按下位图                  |
| hBitmapLeftNormal: 向左按钮常态位图                   |
| hBitmapLeftHover: 向左按钮鼠标停留位图                  |
| hBitmapLeftDown: 向左按钮鼠标按下位图                  |
| hBitmapRightNormal: 向右按钮常态位图                  |
| hBitmapRightHover: 向右按钮鼠标停留位图                 |
| hBitmapRightDown: 向右按钮鼠标按下位图                  |
| 输出参数:无                               |
| 返回值: 无                               |
| 说明:                                  |
****************************************************************************/
void CreateButton(int iWidth, int iHeight, HBITMAP hBitmapUpNormal, HBITMAP hBitmapUpHover, HBITMAP hBitmapUpDown,
 HBITMAP hBitmapDownNormal, HBITMAP hBitmapDownHover, HBITMAP hBitmapDownDown,
 HBITMAP hBitmapLeftNormal, HBITMAP hBitmapLeftHover, HBITMAP hBitmapLeftDown,
 HBITMAP hBitmapRightNormal, HBITMAP hBitmapRightHover, HBITMAP hBitmapRightDown);
/****************************************************************************
| 函数功能:创建滚动条                           |
| 输入参数:                                |
| iWidth:  滚动条宽度                           |
| hBmpVBg: 垂直滚动条背景位图                       |
| hBmpVThumb: 垂直滚动条滑块位图                      |
| hBmpVHoverThumb:垂直滚动条鼠标在滑块上的位图               |
| hBmpVPressThumb: 垂直滚动条鼠标按下滑块的位图               |
| hBmpHBg: 水平滚动条背景位图                       |
| hBmpHThumb: 水平滚动条滑块位图                      |
| hBmpHHoverThumb:水平滚动条鼠标在滑块上的位图               |
| hBmpHPressThumb: 水平滚动条鼠标按下滑块的位图               |
| iBgTopLen:滚动条背景位图顶端和左端不可拉伸部分长度            |
| iBgBottomLen:滚动条背景位图底端和右端不可拉伸部分长度          |
| iThumbTopLen:滑块背景位图顶端和左端不可拉伸部分长度           |
| iThumbBottomLen:滑块背景位图底端和右端不可拉伸部分长度          |
| 输出参数:无                               |
| 返回值: 无                               |
| 说明:                                  |
****************************************************************************/
void CreateScrollBar(int iWidth, HBITMAP hBmpVBg, HBITMAP hBmpVThumb, HBITMAP hBmpVHoverThumb, HBITMAP hBmpVPressThumb,
 HBITMAP hBmpHBg, HBITMAP hBmpHThumb, HBITMAP hBmpHHoverThumb, HBITMAP hBmpHPressThumb,
 int iBgTopLen = 0, int iBgBottomLen = 0, int iThumbTopLen = 0, int iThumbBottomLen = 0);
 //以下是重载的原接口,可以查阅MSDN
 virtual BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
 virtual BOOL CreateEx(DWORD dwExStyle, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
 void MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE);
 void MoveWindow(LPCRECT lpRect, BOOL bRepaint = TRUE);
 BOOL SetWindowPos(HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT uFlags);
private:
 afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
 afx_msg void OnPaint();
 afx_msg void OnEnChange();
 afx_msg void OnNcPaint();
 afx_msg BOOL OnNcActivate(BOOL bActive);
 afx_msg BOOL OnEraseBkgnd(CDC* pDC);
 afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
 afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
 afx_msg void OnEnHscroll();
 afx_msg void OnEnVscroll();
 afx_msg void OnCaptureChanged(CWnd *pWnd);
 afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
 afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
 afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
 afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
 afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
 afx_msg void OnTimer(UINT_PTR nIDEvent);
 afx_msg LRESULT OnNcHitTest(CPoint point);
 afx_msg void OnEnRequestresize(NMHDR *pNMHDR, LRESULT *pResult);
 afx_msg void OnSize(UINT nType, int cx, int cy);
 void SetScrollState();
 void UpdateScrollBar();
public:
 CHTScrollButton m_HTButtonUp;
 CHTVertScrollBar m_HTVScrollBar;
 CHTScrollButton m_HTButtonDown;
 CHTScrollButton m_HTButtonLeft;
 CHTHorzScrollBar m_HTHScrollBar;
 CHTScrollButton m_HTButtonRight;
private:
 int m_iBtnHeight;
 int m_iBtnWidth;
 BOOL m_bVScrollBarFlag;
 BOOL m_bHScrollBarFlag;
 int m_iWidth;
 int m_iHeight;
 int m_iX;
 int m_iY;
 BOOL m_bScrollFlag;
 BOOL m_bMoveFlag;
 int m_iScrollBarWidth;
 int m_iScrollBarHeight;
 BOOL m_bFlag;
 int m_iCountV;
 int m_iCountH;
};
#endif //!__CHTRichEdit_H__

代码备有一定的注释,希望本例所述能够对大家有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索vc++
, 控件类
, HTControl
, CHTRichEdit
富文本编辑
richedit控件、richedit、mfc richedit、delphi richedit、duilib richedit,以便于您获取更多的相关知识。

时间: 2024-10-03 20:57:21

VC++中HTControl控件类之CHTRichEdit富文本编辑控件实例_C 语言的相关文章

C++之CNoTrackObject类和new delete操作符的重载实例_C 语言

本文实例讲述了C++中CNoTrackObject类和new delete操作符的重载,分享给大家供大家参考.具体如下: 头信息: 复制代码 代码如下: class CNoTrackObject{  public: //在此出过错,没有加public 默认为类的私有变量,MyThreadData继承这个类后也无法访问成员变量      void* operator new(size_t nSize);      void operator delete(void*);      virtual

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

本文以实例形式讲解了VC++中HTControl控件类的CHTButton按钮控件类用法,相信对大家更好的理解VC++有一定的帮助.具体内容如下: 一般了解VC++的朋友都知道,VC++ 按钮控件CHTButton隶属HTControl控件组,直接由WIN32 API实现,你可以在SDK,MFC,wxWidget等环境下使用它.支持生成各种类型的按钮,比如:普通按钮,PNG透明按钮,复选框按钮,单选按钮等.使用时请注意,窗体必须动态创建,代码段如下: m_HTBtnClose.Create(75

VC++中HTControl控制类使用之CHTDlgBase对话框基类实例_C 语言

本文所述为VC++界面编程的一个MFC例子,基于HTControl控件类的CHTDlgBase对话框基类主文件代码.该程序可完成动态创建框架窗体,窗体外观(客户区与非客户区),调整窗体大小,无效子窗口的控制等功能. 具体实现代码如下: /**************************************************************************** | Copyright (c) 2012, | ******************************

Cocos2d-x UI开发之CCControlColourPicker控件类使用实例_C 语言

CCControlColourPicker实现颜色拾取器的功能.关于控件使用时的一些配置,请参见文章:UI开发之控件类-CCControlButton.下边来看源代码. bool HelloWorld::init() { bool bRet = false; do { CC_BREAK_IF(! CCLayer::init()); //设置一个显示字符串的label CCLabelTTF * title = CCLabelTTF::create("#128128128","A

VC++中HTControl控件类的CHTSlider控制杆控件类简介_C 语言

本文所述的是HTControl控件中的一个控制杆控件类文件代码,此类是完全独立的,没有任何基类.直接由WIN32 API实现.你可以在SDK,MFC,wxWidget等等方式下使用它.控制中包括一个垂直的控制杆控件,使用方式和水平的完全相同.窗体必须动态创建,具体代码段如下: m_HTSliderR.Create(130, 500, 400, 14, m_hWnd, iChildId++, 0, 9, 14); m_HTSliderR.SetBgPic(_T(".\\pic\\SliderBg.

Cocos2d-x UI开发之CCControlSwitch控件类使用实例_C 语言

CCControlSwitch是开关按钮,关于控件使用时的一些配置,请参见文章:UI开发之控件类-CCControlButton.以下的演示中出现的key和value代表什么意思,知道的人说一声. bool HelloWorld::init() { bool bRet = false; do { CC_BREAK_IF(! CCLayer::init()); //参数就不说了,看一下你的资源文件就明白了 CCControlSwitch * controlSwitch = CCControlSwi

Cocos2d-x UI开发之CCControlSlider控件类使用实例_C 语言

关于控件使用时的一些配置,请参见文章:UI开发之控件类-CCControlButton.这里只写出源代码,里边的注释对控件的用法有详细的介绍. bool HelloWorld::init() { bool bRet = false; do { CC_BREAK_IF(! CCLayer::init()); //设置一个显示字符串的label CCLabelTTF * title = CCLabelTTF::create("slider value = 0.00","Arial

Cocos2d-x UI开发之CCControlButton控件类实例_C 语言

在应用的开发中,无论是Android操作系统还是iOS操作系统,其开发框架都提供了控件,包括按键.拖动滑块等,这样提高了开发效率.对于游戏的开发,UI的开发同样需要控件来提高开发效率.对Cocos2D-x来说,从2.0版本开始提供了很多控件类来帮助我们更好地开发UI. 在HelloWorld.h中加入如下俩句代码 //需要包含如下的头文件和命名空间的申明 #include "cocos-ext.h" using namespace cocos2d::extension; 同时加入but

Cocos2d-x UI开发之CCControlPotentiometer控件类使用实例_C 语言

 CCControlPotentiometer是电位计按钮,和CCControlSlider的用法很相似.关于控件使用时的一些配置,请参见文章:UI开发之控件类-CCControlButton. bool HelloWorld::init() { bool bRet = false; do { CC_BREAK_IF(!CCLayer::init()); //CCControlPotentiometer参数是底座,进度条,控制按钮图片资源 CCControlPotentiometer * pot