VC++中HTControl控制类使用之CHTDlgBase对话框基类实例
本文所述为VC++界面编程的一个MFC例子,基于HTControl控件类的CHTDlgBase对话框基类主文件代码。该程序可完成动态创建框架窗体,窗体外观(客户区与非客户区),调整窗体大小,无效子窗口的控制等功能。
具体实现代码如下:
/****************************************************************************
|Copyright(c)2012,|
****************************************************************************/
#if!defined(__CHTDlgBase1_H__)
#define__CHTDlgBase1_H__
classAFX_CLASS_EXPORTCHTDlgBase1:publicCDialog
{
DECLARE_DYNAMIC(CHTDlgBase1)
public:
/****************************************************************************
|函数功能:创建模态对话框|
|输入参数:|
|szName:窗体标题|
|dwStyle:窗体属性|
|dwExStyle:窗体扩展属性|
|pMainWnd:如果此窗体是主窗体,传递&m_pMainWnd|
|输出参数:无|
|返回值:非0表示创建成功,0表示失败|
|说明:|
****************************************************************************/
INT_PTRCreateModalDlg(char*szName,DWORDdwStyle,DWORDdwExStyle=NULL,CWnd**pMainWnd=NULL);
/****************************************************************************
|函数功能:创建非模态对话框|
|输入参数:|
|szName:窗体标题|
|dwStyle:窗体属性|
|dwExStyle:窗体扩展属性|
|pMainWnd:如果此窗体是主窗体,传递&m_pMainWnd|
|输出参数:无|
|返回值:非0表示创建成功,0表示失败|
|说明:|
****************************************************************************/
INT_PTRCreateModallessDlg(char*szName,DWORDdwStyle,DWORDdwExStyle=NULL,CWnd**pMainWnd=NULL);
/****************************************************************************
|函数功能:使窗体矩形区域无效|
|输入参数:|
|lpRect:无效矩形,NULL表示整个窗体区域无效|
|bInvalidateChildren:在lpRect区域上的子窗体是否也无效|
|输出参数:无|
|返回值:无|
|说明:|
****************************************************************************/
voidInvalidateRect(LPCRECTlpRect,BOOLbInvalidateChildren=FALSE);
public:
//窗体宽,窗体大小改变后值更新
intm_iWindowWidth;
//窗体高,窗体大小改变后值更新
intm_iWindowHeight;
//窗体客户区宽,窗体大小改变后值更新
intm_iClientWidth;
//窗体客户区高,窗体大小改变后值更新
intm_iClientHeight;
intm_iMinWindowWidth;
intm_iMinWindowHeight;
//窗体宽度最大值,默认为0,表示铺满屏幕
intm_iMaxWindowWidth;
//窗体高度最大值,默认为0,表示铺满屏幕
intm_iMaxWindowHeight;
//TRUE:模态对话框FALSE:非模态对话框,不可对其直接赋值
BOOLm_bModal;
//TRUE:在窗体上按下鼠标移动,窗体跟随移动FALSE:窗体不跟随移动,可以在派生类中直接赋值
BOOLm_bLBtnMoveWindow;
//不可对其直接赋值
BOOLm_bShowWindowFlag111;
public:
CHTDlgBase1();
virtual~CHTDlgBase1();
afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);
afx_msgBOOLOnEraseBkgnd(CDC*pDC);
afx_msgvoidOnGetMinMaxInfo(MINMAXINFO*lpMMI);
afx_msgvoidOnShowWindow(BOOLbShow,UINTnStatus);
afx_msgvoidOnNcCalcSize(BOOLbCalcValidRects,NCCALCSIZE_PARAMS*lpncsp);
afx_msgLRESULTOnNcHitTest(CPointpoint);
afx_msgvoidOnClose();
afx_msgvoidOnActivate(UINTnState,CWnd*pWndOther,BOOLbMinimized);
afx_msgvoidOnActivateApp(BOOLbActive,DWORDdwThreadID);
afx_msgvoidOnDestroy();
afx_msgvoidOnLButtonDown(UINTnFlags,CPointpoint);
afx_msgvoidOnLButtonDblClk(UINTnFlags,CPointpoint);
afx_msgvoidOnNcPaint();
afx_msgBOOLOnNcActivate(BOOLbActive);
afx_msgvoidOnLButtonUp(UINTnFlags,CPointpoint);
afx_msgBOOLOnNcCreate(LPCREATESTRUCTlpCreateStruct);
afx_msgvoidOnNcDestroy();
afx_msgvoidOnNcLButtonDblClk(UINTnHitTest,CPointpoint);
afx_msgvoidOnNcLButtonDown(UINTnHitTest,CPointpoint);
afx_msgvoidOnNcLButtonUp(UINTnHitTest,CPointpoint);
afx_msgvoidOnSize(UINTnType,intcx,intcy);
DECLARE_MESSAGE_MAP()
protected:
virtualvoidOnOK();
virtualvoidOnCancel();
HICONm_hIcon;
private:
CWnd**m_ppMainWnd;
};
#endif//!__CHTDlgBase1_H__
该实例代码在VC++项目开发中有一定的借鉴价值,希望能给大家的项目开发带来一定的帮助。