MapX的绘图刷新导致客户区cdc绘图丢失的问题。

      最近程序中遇到在使用mapx绘图的同时,还必须在客户区窗口中使用cdc 直接绘图。

      但是这出现了问题,就是当mapx 刷新时(比如窗口移动,最大化,遮盖),同时会将cdc 设备的绘图刷掉。

      原来一直以为可以在cview::ondraw 中重绘,但是怎么也不行。后来想到可能mapx的绘制是否在ondraw之后发生的。那么也就是说必须等到mapx的绘图之后才可以使用cdc绘图,才能保证不被刷掉。

      后来参考mapx 手册,找到了这个事件,确实很少用,但一切ok了。事件说明如下:

MapDraw 事件

此事件在绘图之前调用一次,在绘图完成之后调用一次。此处有一个参数表明绘图是开始还是结束。Dispatch ID = 15

语法MapDraw (Flag)
Flag miDrawBegin 或 miDrawEnd。
//-------------------------------------------------------
程序中:1头文件cmapview.hprotected:   

void OnMapDraw(short Flag);

2代码文件cmapview.cpp

BEGIN_EVENTSINK_MAP(WSMapView, CView)   

ON_EVENT(WSMapView,IDC_MAP,15,OnMapDraw,VTS_I2)

END_EVENTSINK_MAP()

void WSMapView::OnMapDraw(short Flag)
{
    if(Flag==1)
    {
        //TRACE("绘制前");
       return;
    }
   if(Flag==2)
    {
        //TRACE("绘制后!");
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值