资源预览内容
第1页 / 共2页
第2页 / 共2页
亲,该文档总共2页全部预览完了,如果喜欢就下载吧!
资源描述
测试WPAINT消息M_PAI消息是当窗口的客户区由于各种原因内容不再有效时,由OS、其他应用程序或本应用程序的其他部分通知程序客户区不再有效所产生的消息。M_INT消息的标准处理过程如下:h = BeginP(Wn, );/得到hdc/进行客户区的重绘REC rt;GetClientRet(hWn, &t);DText(dc, szHello,trlen(sHello),r, _EE);EnPint(hWd, &p);/释放hdc需要注意的是WM_PINT消息只是在无效矩形内绘图,绘图时出现在无效矩形外的部分并不能显示。无效矩形的位置信息存储egPint调用时填充的PAITSTUCT结构的Pain中;为了测试无效矩形,有以下窗口:中间的部分是无效矩形,如果绘制一条直线从点(p+50,le50)到(top+,rg+5),如果绘制出的直线只在矩形中间的部分出现就说明WPAINT消息绘图只是在无效矩形内部绘图;如果绘制出的直线在矩形左边与右边还分别有一部分则说明WM_PAINT消息绘图不只是在无效矩形内部.1、 新建工程PanTest2、 在窗口的消息处理的switch语句的WM_PAIN消息的处理部分,删除原理输入”Hello world”的部分;增加以下代码:MveToEx(hdc,ps。rcint。let0,psrcPanop+50,NULL);LneTo(hc,ps。Paintight50,ps。rcainto+50);3、 编译运行程序!4、 启动一个计算器,并将计算器放置到测试窗口的中央;5、 最小化计算器、最小化测试程序;6、 还原测试程序、还原计算器,现在计算器与测试程序的位置关系如图;7、 现在计算器覆盖的部分是测试程序的无效区域,最小化计算器,并用鼠标单击测试程序的标题栏,观察原来计算器覆盖部分的线段长度。思考题:1、 如何使客户区的有效?提示:BOL ValidateRect函数2、 如何使客户区无效,通知应用程序更新客户区?提示:BOOLIvalidaeRect函数3、 如何使WPAIT只重绘不擦除无效区域的背景?提示:BOL Invaldaet函数的第三个参数4、 运行02Painte0目录下的程序,分别点击【File】菜单下的个菜单项观察客户区的变化,并分析代码文中不足之处,请您见谅! /
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号