MFC对话框标题栏颜色自绘,标题栏由过渡色组成,自绘关闭按钮

一个简单的标题栏自绘
一:步骤
(1)新建一个基于对话框的MFC程序,打开对话框属性设置界面,去掉对话框的标题栏和边界BORDER(vc和vs的设置相似,这里使用的是vs2015,界面与vc稍有不同),
(2)在客户曲自绘一个标题栏和关闭按钮,需要使用到WM_PAINT消息的处理函数,使用Class WIZARD添加OnPaint()消息相应函数
(3)为了使自绘的标题栏能够用鼠标拖动窗口,并且使自绘的关闭按钮能够关闭界面,需要使用到OnNcHitTest(…)消息处理函数和OnLButtonDown(…)消息处理函数

二:函数解释:
(1)LRESULT CTest2Dlg::OnNcHitTest(CPoint point)
功能:每当鼠标移动时,框架就为包含光标(或者是用SetCapture成员函数捕获了鼠标输入的CWnd对象)的CWnd对象调用这个成员函数

参数:point,当前鼠标的坐标,相对于屏幕坐标系

返回值:表示点击位置的类型,有以下类型
HTBORDER:在不具有可变大小边框的窗口的边框上
HTBOTTOM:在窗口的水平边框的底部
HTBOTTOMLEFT:在窗口边框的左下角
HTBOTTOMRIGHT:在窗口边框的右下角
HTCAPTION:在标题条中
HTCLIENT:在客户区中
HTERROR:HTERROR 在屏幕背景或窗口之间的分隔线上(与HTNOWHERE相同,除了 Windows的DefWndProc函数产生一个系统响声以指明错误)
HTGROWBOX:在尺寸框中
HTHSCROLL:在水平滚动条上
HTLEFT:在窗口的左边框上
HTMAXBUTTON:在最大化按钮上
HTMENU:在菜单区域
HTMINBUTTON:在最小化按钮上
HTNOWHERE:在屏幕背景或窗口之间的分割线上
HTREDUCE:在最小化按钮上
HTRIGHT:在窗口的右边框上
HTSIZE:在尺寸框中(与HTGROWBOX相同)
HTSYSMENU:在控制菜单或子窗口的关闭按钮上
HTTOP:在窗口水平边框的上方
HTTOPLEFT:在窗口水平边框的左上角
HTTOPRIGHT:在窗口边框的右上角
HTTRANSPARENT:在一个被其他窗口覆盖的窗口中
HTVSCROLL:在垂直滚动条中
HTZOOM:在最大化按钮上

(2)void CTest2Dlg::OnLButtonDown(UINT nFlags, CPoint point)
功能:当鼠标点击自绘的关闭按钮时,关闭窗口
参数:nFlags,指示各种虚拟键是否按下。此参数可以是下列值的任意组合:
如果按下CTRL键,MK_CONTROL 设置。
如果鼠标左键滚动,MK_LBUTTON 设置。
如果元鼠标按钮处于按下,MK_MBUTTON 设置。
如果鼠标右键滚动,MK_RBUTTON 设置。
如果SHIFT键下降,MK_SHIFT 设置。
point
指定光标的x坐标和y坐标。这些坐标始终是相对于窗口左上角的。

(3) BOOL PtInRect( POINT point ) const throw( );
功能:检测某个点是否在某个矩形中
参数:point
包含POINT 结构或 CPoint 对象。
返回值
非零,则点在 CRect之间;否则为0。

(4)CDC::DrawText
enter description here

三:代码
Test2Dlg.h头文件,添加一个存放关闭按钮矩形位置的CRect对象m_rtBtnClose;然后使用类相对添加相关消息相应函数

Test2Dlg.cpp实现

来源:chenyonken

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年7月8日
下一篇 2017年7月8日

相关推荐