欢迎来到天天文库
浏览记录
ID:34724410
大小:196.03 KB
页数:8页
时间:2019-03-10
《mfc变色进度条制作》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、VC-MFC制作变色进度条一.实验目的Ø熟悉进度条的制作原理Ø防止闪动的缓冲技术应用ØWindows消息处理二.添加一个内存缓冲类2.1头文件的定义在创建基于对话框的MFC工程之后,添加一个内存缓冲类CMemDC,继承自CDC。由于MFC新建类向导中的基类选项没有CDC这个基类。所以只有手动在类视图中添加,并选择GenericClass。在头文件中定义两个操作符:取子域和解引用。MemDC*operator->(){returnthis;}operatorMemDC*(){returnthis;}再添加几个变量,分别如下:BOOLm_bMemDC;//用于标记不是打印DC,仅仅是
2、显示器CRectm_rect;//定义图形所显示的矩形区域CBitmap*m_pOldBitmap;//存储用于输出到设备上的位图文件CBitmapm_bitmap;//与设备匹配的内存位图存储CDC*m_pDC;//设备上下文2.2函数的实现这里我们只需要实现两个函数,即构造函数和析构函数。代码如下:ASSERT(pDC!=NULL);m_pDC=pDC;m_pOldBitmap=NULL;m_bMemDC=!pDC->IsPrinting();//判断不是打印机if(m_bMemDC){pDC->GetClipBox(&m_rect);//获取局部剪裁区域CreateComp
3、atibleDC(pDC);//创建内存匹配的设备上下文m_bitmap.CreateCompatibleBitmap(pDC,m_rect.Width(),m_rect.Height());m_pOldBitmap=SelectObject(&m_bitmap);//选择对象到设备SetWindowOrg(m_rect.left,m_rect.top);//设置窗口的起点坐标}else{m_bPrinting=pDC->m_bPrinting;m_hDC=pDC->m_hDC;m_hAttribDC=pDC->m_hAttribDC;}一.进度条的编写3.1头文件的定义新建一个
4、新类GradientProgress,继承自CProgressCtrl类。在头文件中我们添加几个操作的接口。intStepIt(void);//使进度条前进,按照步长更新到新位置intSetStep(intnStep);//设置步长intSetPos(intnPos);//设置进度条的逻辑位置voidSetRange(intnLower,intnUpper);添加几个变量,如下:COLORREFm_clrText,m_clrBk,m_clrStart,m_clrEnd;//文字、背景、左端、右端intm_nLower,m_nUpper,m_nStep,m_nCurrentPosi
5、tion;//进度条控制参数BOOLm_bShowPercent;//是否显示进度信息添加几个设置和获取方法://SetFunctionsvoidSetTextColor(COLORREFcolor){m_clrText=color;}//设置文字颜色voidSetBkColor(COLORREFcolor){m_clrBk=color;}//背景voidSetStartColor(COLORREFcolor){m_clrStart=color;}//前端voidSetEndColor(COLORREFcolor){m_clrEnd=color;}//后端//GetFunctio
6、nsCOLORREFGetTextColor(void){returnm_clrText;}//获取文字颜色COLORREFGetBkColor(void){returnm_clrBk;}//背景COLORREFGetStartColor(void){returnm_clrStart;}//前端COLORREFGetEndColor(void){returnm_clrEnd;}//后端定义获取是否显示进度信息的变量://是否显示进度信息voidShowPercent(BOOLbShowPercent=TRUE){m_bShowPercent=bShowPercent;}定义画进度
7、条函数DrawGradient()voidDrawGradient(CPaintDC*pDC,//用于响应WM_PAINT消息,受OnPaint调用constRECT&rectClient,//画对象的区域constint&nMaxWidth//进度条最大宽度);用类向导添加两个消息处理函数OnPaint()和OnEraseBkgnd()函数。3.2函数实现实现DrawGradient()函数:RECTrectFill;floatfStep;CBrushbrush;MemDCme
此文档下载收益归作者所有