首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

LButtonUp()绘图后,遮盖窗口或最小化窗口后,图像(文本、图像)消失了解决思路

2012-05-20 
LButtonUp()绘图后,遮盖窗口或最小化窗口后,图像(文本、图像)消失了1、在OnDraw(CDC* pDC)绘制2*2的马赛克方

LButtonUp()绘图后,遮盖窗口或最小化窗口后,图像(文本、图像)消失了
1、 在OnDraw(CDC* pDC)绘制2*2的马赛克方格,根据鼠标拖动后松开鼠标的位置,在OnLButtonUp(UINT nFlags, CPoint point)判断鼠标的位置,如果鼠标是在2*2马赛克的区域,则在相应的方格(有4个方格)里显示文字(或图形),可是窗口在被遮挡或最小化后再显示窗口时,马赛克2*2区域的文字(或图形)消息了。我知道是系统调用了OnDraw(CDC* pDC)的原因,请问这个现象得怎么解决。

  2、将单文档视图分割成4个视图,左右各2个,有一个视图是基于CView类的,在里面绘制马赛克方格,可是最大化单文档窗口时,绘制的马赛克方格没法根据单文档窗口的最大化而最大化,即没法根据视图大小的变化而变化,请问得怎么解决?

[解决办法]
1:可以所有的绘图代码在OnDraw里面实现,定义变量记录鼠标的位置,OnDraw中的绘制代码,根据鼠标的位置记录来绘制文字,以达到控制和显示分离的效果。
2:方格的大小和位置设置相对的坐标或者大小,更加视图的客户区大小动态改变
[解决办法]
1、把所有的绘制操作都整理到OnDraw中,OnLButtonUp只对绘制参数进行更新,然后调用Invalidate
2、在OnDraw中通过GetClientRect获取客户区大小然后根据这个大小计算出具体马赛克绘制参数
[解决办法]
先画图到内存dc,OnLButtonUp后再画到窗口,在OnDraw中把内存dc输出到窗口;其中有一些逻辑关系需要处理,我想你懂的。

热点排行