我在一个对话框上绘制一个地图, 地图的绘制是在对话框的OnPaint函数中进行的
这一切都没有问题
后来我想实现这样一个功能: 当鼠标在地图上移动的时候,鼠标下方显示一个ToolTip,显示当前地图中的坐标值. 所以我增加了一个CToolTip对象, 并在鼠标移动的消息内更新当前地图的坐标值.Tooltip的显示没有问题,但当tooltip移动的时候,把对话框上绘制的地图都擦除掉了.请问这个问题该如何解决阿?

解决方案 »

  1.   

    我在OnPaint中画了图,然后通过鼠标位置来显示tip,没有你所说的现象。
      

  2.   

    总算找到原因了   
    由于我在绘图时OnPaint函数中进行了一系列的坐标变换,
    为了将OnMouseMove函数中当前的鼠标位置转换到和我的地图一致的坐标, 所以在OnMouseMove函数中我加了 CPaintDC dc(this);对象,  就是因为加了这样一个对象,所以导致了前面的情况原因找到了, 请问有什么解决方法吗?
    如果不在OnMouseMove函数中使用CPaintDC对象的话, 坐标点该如何装换呢
    下面是我的坐标的转换代码:
    dc.SetMapMode(MM_ISOTROPIC); // 设置模式
    dc.SetViewportOrg(480,10); // 设置图像的起始点 // 以下一段代码使得图像按照原来的比例大小显示
    // m_dwBaseLength所对应的长度为300    以此为基准 要放大缩小图像,请改变m_dwBaseLength
    m_VWidth = m_dwMaxViewArea * m_pMapData->m_dwWidth / m_dwBaseLength;
    m_VHeight = m_dwMaxViewArea * m_pMapData->m_dwHeight / m_dwBaseLength; dc.SetWindowExt(CSize(m_pMapData->m_dwWidth,m_pMapData->m_dwHeight)); // 设置地图的大小
    dc.SetViewportExt(CSize(m_VWidth,m_VHeight)); // 取地图中长宽的最大值==>计算视图的长宽*(比例因子),并设置。
    //dc.SetViewportOrg(m_dwViewOrgX,m_dwViewOrgY); // 设置图像的起始点