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

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

具体实现代码如下:

/****************************************************************************
| Copyright (c) 2012,                            |
****************************************************************************/
#if !defined(__CHTDlgBase1_H__)
#define __CHTDlgBase1_H__
class AFX_CLASS_EXPORT CHTDlgBase1 : public CDialog
{
 DECLARE_DYNAMIC(CHTDlgBase1)
public:
/****************************************************************************
| 函数功能:创建模态对话框                         |
| 输入参数:                                |
| szName: 窗体标题                             |
| dwStyle:窗体属性                             |
| dwExStyle:窗体扩展属性                          |
| pMainWnd:如果此窗体是主窗体,传递&m_pMainWnd               |
| 输出参数:无                               |
| 返回值: 非0表示创建成功,0表示失败                   |
| 说  明:                                |
****************************************************************************/
INT_PTR CreateModalDlg(char* szName, DWORD dwStyle, DWORD dwExStyle = NULL, CWnd** pMainWnd = NULL);
/****************************************************************************
| 函数功能:创建非模态对话框                        |
| 输入参数:                                |
| szName: 窗体标题                             |
| dwStyle:窗体属性                             |
| dwExStyle:窗体扩展属性                          |
| pMainWnd:如果此窗体是主窗体,传递&m_pMainWnd               |
| 输出参数:无                               |
| 返回值: 非0表示创建成功,0表示失败                   |
| 说  明:                                |
****************************************************************************/
INT_PTR CreateModallessDlg(char* szName, DWORD dwStyle, DWORD dwExStyle = NULL, CWnd** pMainWnd = NULL);
/****************************************************************************
| 函数功能:使窗体矩形区域无效                       |
| 输入参数:                                |
| lpRect: 无效矩形, NULL表示整个窗体区域无效                |
| bInvalidateChildren: 在lpRect区域上的子窗体是否也无效           |
| 输出参数:无                               |
| 返回值: 无                               |
| 说  明:                                |
****************************************************************************/
void InvalidateRect(LPCRECT lpRect, BOOL bInvalidateChildren = FALSE);
public:
 //窗体宽,窗体大小改变后值更新
 int m_iWindowWidth;
 //窗体高,窗体大小改变后值更新
 int m_iWindowHeight;
 //窗体客户区宽,窗体大小改变后值更新
 int m_iClientWidth;
 //窗体客户区高,窗体大小改变后值更新
 int m_iClientHeight;
 int m_iMinWindowWidth;
 int m_iMinWindowHeight;
 //窗体宽度最大值,默认为0,表示铺满屏幕
 int m_iMaxWindowWidth;
 //窗体高度最大值,默认为0,表示铺满屏幕
 int m_iMaxWindowHeight;
 //TRUE:模态对话框 FALSE:非模态对话框, 不可对其直接赋值
 BOOL m_bModal;
 //TRUE:在窗体上按下鼠标移动,窗体跟随移动 FALSE:窗体不跟随移动,可以在派生类中直接赋值
 BOOL m_bLBtnMoveWindow;
 //不可对其直接赋值
 BOOL m_bShowWindowFlag111;
public:
 CHTDlgBase1();
 virtual ~CHTDlgBase1();
 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
 afx_msg BOOL OnEraseBkgnd(CDC* pDC);
 afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);
 afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
 afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
 afx_msg LRESULT OnNcHitTest(CPoint point);
 afx_msg void OnClose();
 afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
 afx_msg void OnActivateApp(BOOL bActive, DWORD dwThreadID);
 afx_msg void OnDestroy();
 afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
 afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
 afx_msg void OnNcPaint();
 afx_msg BOOL OnNcActivate(BOOL bActive);
 afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
 afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpCreateStruct);
 afx_msg void OnNcDestroy();
 afx_msg void OnNcLButtonDblClk(UINT nHitTest, CPoint point);
 afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
 afx_msg void OnNcLButtonUp(UINT nHitTest, CPoint point);
 afx_msg void OnSize(UINT nType, int cx, int cy);
 DECLARE_MESSAGE_MAP()
protected:
 virtual void OnOK();
 virtual void OnCancel();
 HICON m_hIcon;
private:
 CWnd** m_ppMainWnd;
};
#endif //!__CHTDlgBase1_H__

该实例代码在VC++项目开发中有一定的借鉴价值,希望能给大家的项目开发带来一定的帮助。

(0)

相关推荐

  • C++ 类访问控制的条件总结

    C++ 类访问控制的条件总结 最近在使用C++创建类的时候,忽然发现自己对于类访问控制 public,protected,private 的作用没有理解透彻,后来就查了些资料,这里以作记录. 访问控制 C++类的重要属性就是封装和继承.因此,最关键的问题就是权限 的问题,public,protected,private 控制的就是访问权限. public protected private 类成员是否可以访问 Yes Yes Yes 友元函数是否可以访问 Yes Yes Yes 子类是否可以访问

  • C++编程中私有和保护以及公有的类成员访问控制

    private 语法 private: [member-list] private base-class 备注 当位于类成员列表之前时,private 关键字指定这些成员仅可从成员函数和该类的友元中进行访问.这适用于声明到下一个访问指示符或类的末尾的所有成员. 当位于基类的名称之前时,private 关键字指定基类的公共成员和受保护成员为派生类的私有成员. 类中成员的默认访问是私有的.结构或联合中成员的默认访问是公共的. 基类的默认访问对于类是私有的,而对于结构是公共的. 联合不能具有基类. 例

  • VC++中HTControl控件类的CHTSlider控制杆控件类简介

    本文所述的是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.

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

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

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

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

  • 详解C++中基类与派生类的转换以及虚基类

    C++基类与派生类的转换 在公用继承.私有继承和保护继承中,只有公用继承能较好地保留基类的特征,它保留了除构造函数和析构函数以外的基类所有成员,基类的公用或保护成员的访问权限在派生类中全部都按原样保留下来了,在派生类外可以调用基类的公用成员函数访问基类的私有成员.因此,公用派生类具有基类的全部功能,所有基类能够实现的功能, 公用派生类都能实现.而非公用派生类(私有或保护派生类)不能实现基类的全部功能(例如在派生类外不能调用基类的公用成员函数访问基类的私有成员).因此,只有公用派生类才是基类真正的

  • c#中判断类是否继承于泛型基类

    在c#中,有时候我们会编写类似这样的代码: public class a<T> { //具体类的实现 } public class b : a<string>{} 如果b继承a的类型不确定,这个时候我们是无法通过baseType来直接判断b是否继承于a的. 如果我们写如下代码: typeof(b).baseType == typeof(a) 返回值是false. 因为typeof(b).baseType返回的类型是a`1[System.String],而typeof(a<&g

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

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

  • Asp.net 弹出对话框基类(输出alet警告框)

    using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.T

  • 深入解析C++编程中基类与基类的继承的相关知识

    基类 继承过程将创建一个新的派生类,它由基类的成员加上派生类添加的任何新成员组成.在多重继承中,可以构建一个继承关系图,其中相同的基类是多个派生类的一部分.下图显示了此类关系图. 单个基类的多个实例 在该图中,显示了 CollectibleString 和 CollectibleSortable 的组件的图形化表示形式.但是,基类 Collectible 位于通过 CollectibleSortableString 路径和 CollectibleString 路径的 CollectibleSor

  • 详谈C++中虚基类在派生类中的内存布局

    今天重温C++的知识,当看到虚基类这点的时候,那时候也没有太过追究,就是知道虚基类是消除了类继承之间的二义性问题而已,可是很是好奇,它是怎么消除的,内存布局是怎么分配的呢?于是就深入研究了一下,具体的原理如下所示: 在C++中,obj是一个类的对象,p是指向obj的指针,该类里面有个数据成员mem,请问obj.mem和p->mem在实现和效率上有什么不同. 答案是:只有一种情况下才有重大差异,该情况必须满足以下3个条件: (1).obj 是一个虚拟继承的派生类的对象 (2).mem是从虚拟基类派

  • C++中基类和派生类之间的转换实例教程

    本文实例讲解了C++中基类和派生类之间的转换.对于深入理解C++面向对象程序设计有一定的帮助作用.此处需要注意:本文实例讲解内容的前提是派生类继承基类的方式是公有继承,关键字public.具体分析如下: 以下程序为讲解示例: #include<iostream> using namespace std; class A { public: A(int m1, int n1):m(m1), n(n1){} void display(); private: int m; int n; }; voi

随机推荐