救命啊 关于CToolTip的问题, 在线等...

kalltt 2005-05-27 02:48:27
我在一个对话框上绘制一个地图, 地图的绘制是在对话框的OnPaint函数中进行的
这一切都没有问题
后来我想实现这样一个功能: 当鼠标在地图上移动的时候,鼠标下方显示一个ToolTip,显示当前地图中的坐标值. 所以我增加了一个CToolTip对象, 并在鼠标移动的消息内更新当前地图的坐标值.

Tooltip的显示没有问题,但当tooltip移动的时候,把对话框上绘制的地图都擦除掉了.

请问这个问题该如何解决阿?
...全文
153 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
kalltt 2005-05-27
  • 打赏
  • 举报
回复
自己UP
kalltt 2005-05-27
  • 打赏
  • 举报
回复
总算找到原因了
由于我在绘图时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); // 设置图像的起始点

Atomictry 2005-05-27
  • 打赏
  • 举报
回复
我在OnPaint中画了图,然后通过鼠标位置来显示tip,没有你所说的现象。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧