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++项目开发中有一定的借鉴价值,希望能给大家的项目开发带来一定的帮助。