用VC++6.0为对话框添加最小化按钮.docx
《用VC++6.0为对话框添加最小化按钮.docx》由会员分享,可在线阅读,更多相关《用VC++6.0为对话框添加最小化按钮.docx(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、用VC+6.0为对话框添加最小化按钮 我们在运用对话框窗体时,会有这样一种感受:当对话框窗体位于其它程序窗口界面上时,单击对话框外区域时,可使对话框窗体最小化;而当对话框窗体位于桌面上时,无论怎样单击对话框外区域,对话框均不能最小化,只能选择关闭。但有时我们在运用对话框时,还希望能依据须要使对话框具有最小化功能。本文的设计思想就是据此提出来的。1实例程序设计要点取得对话框标题栏位置和大小,在标题栏的适当位置绘制最小化按钮,并记住按钮的位置。在最小化按钮所在区域检测鼠标是否在该区域内、是否按下,是否发送最小化消息使对话框最小化,否则不变。将最小化按钮矩形区域向工具提示条控件注册,这样当鼠标在最小
2、化按钮矩形区域时,显示提示文本。2实例程序实现的步骤及说明打算二个位图,一个位图表示最小化按钮正常显示状态,另一个位图表示最小化按钮被按下时的状态。运用MFCAppWizard(exe)创建工程名为MinButton的对话框窗体,如图所示,将二个按钮位图导入对话框的资源里。在CMinButtonDlg对话框类中进行变量定义和函数声明。利用ClassWizard为对话框类添加消息WM_NCPAINT,WM_ACTIVATE和WM_NCMOUSEMOVE的消息处理函数,在这三个函数中调用成员函数DrawButton()来绘制按钮。利用ClassWizard为最小化按钮关联对应的消息WM_NCLBU
3、TTONDOWN和消息处理函数OnNcLButtonDown(UINTnHitTest,CPointpoint)。函数DrawButton()用于绘制按钮。由于最小化按钮并不是一个真实的按钮控件,而是一个画在标题栏上的位图。因此,为了在对话框窗体标题上绘画,必需创建一个窗口设备环境类(相当于创建一个画布,有了这个画布,才能在画布上绘画,也就是才能在标题栏上绘画。)调用函数GetWindowDC()取得指向CDC的指针CDC*pDC;调用函数CreateCompatibleDC(CDC*pDC)创建一个内存设备环境,以便在内存中保存位图,并与指定的窗口设备环境相兼容;调用函数SelectObje
4、ct(CBitmap*pBitmap),将位图选入内存设备环境中;调用函数BitBlt(intx,inty,intnWidth,intnHeight,CDC*pSrc,intxSrc,intySrc,DWORDdwRop)将位图复制到实际设备环境中。其中,参数x,y表示位图目标矩形左上角的x,y逻辑坐标值;nWidth,nHeight表示位图目标矩形的逻辑宽度和高度;pSrc表示源设备环境CDC指针;xSrc,ySrc表示位图源矩形的左上角的x,y逻辑坐标值;dwRop表示显示位图的光栅操作方式。光栅操作方式有多种,这里运用的是SRCCOPY,表示将位图干脆复制到目标内存设备环境中。这里要说明
5、一点:函数BitBlt()只能一比一的显示位图,如要随意缩放显示位图须运用函数StretchBlt(),该函数的运用方法,请参考相关书籍。位图选入内存环境中显示后,应调用函数SelectObject(CBitmap*pOldBitmap)复原原来的内存设备环境。提示条实质上是一个小的弹出窗口,在窗口中显示一行文本,用来描述工具(或区域)的用途或其它信息。在MFC中供应了工具提示条控件类CToolTipCtrl,由它来管理提示条。在这里,我们从CToolTipCtrl类派生子类CToolTips。在子类的定义中添加函数BOOLAddToolTip(UINTnID,LPRECTlpRect,LPC
6、TSTRlpszText),该函数用于向工具提示条控件注册按钮区域和提示文本,当鼠标在最小化按钮区域时,显示提示文本。3主要的程序代码在对话框类中定义相应的变量和函数声明classCMinButtonDlg:publicCDialog…………public:CRectm_rtButtMin;/记录最小化按钮位置voidDrawButton();/绘制最小化按钮BOOLm_BMPPressed;/最小化按钮状态标记CRectm_ButtMinTips;/记录最小化按钮区域protected:CToolTipsm_ToolTip;/定义工具提示
7、条控件变量voidGetMinButRect();/获得最小化按钮所在区域/消息处理函数afx_msgvoidOnNcLButtonDown(UINTnHitTest,CPointpoint);afx_msgvoidOnNcPaint();afx_msgvoidOnActivate(UINTnState,CWnd*pWndOther,BOOLbMinimized);afx_msgvoidOnNcMouseMove(UINTnHitTest,CPointpoint);…………对话框类中三个消息处理函数定义如下:/对应消息WM_NCPAINT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 6.0 对话框 添加 最小化 按钮
限制150内