重点内容:
1、绘图过程放在计时器里面,这样可以防止集中刷新时的闪烁。
2、重写OnMouseMove函数,记录鼠标与各控件的位置。
3、虽使用MFC绘图,但是为了使界面美观,所以将资源视图->需要修改的窗口->属性->外观->Border的值改成None。
4、重写OnLButtonDown函数,这里面设置哪些部分为标题栏,可以进行拖动。可以使用这个设置::PostMessage(m_hWnd, WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y));
5、重写OnCtlColor函数,返回类中自定义的CBrush对象。
6、绘图函数PaintCanvas。
7、计时器里面判断哪些控件需要绘制,判断的依据是2里面记录的鼠标与控件的位置。
代码:
这里主要记录两个函数的代码
1、PaintCanvas
这个函数是整个界面中的难点,思路是:
(1)创建一个画布bmp和内存对象cdc。
(2)管理画布和内存对象。
(3)将控件都绘制到画布bmp里面。
(4)以画布作为图形创建一个画刷(这个画刷就在后面的OnCtlColor中返回给系统进行绘制)。
void CSelfUIDlg::PaintCanvas()
{
CPaintDC _dc(this);
CDC cdc;
cdc.CreateCompatibleDC(&_dc);
CBitmap bmp;
bmp.Create