我在一个对话框上绘制一个地图, 地图的绘制是在对话框的OnPaint函数中进行的
这一切都没有问题
后来我想实现这样一个功能: 当鼠标在地图上移动的时候,鼠标下方显示一个ToolTip,显示当前地图中的坐标值. 所以我增加了一个CToolTip对象, 并在鼠标移动的消息内更新当前地图的坐标值.Tooltip的显示没有问题,但当tooltip移动的时候,把对话框上绘制的地图都擦除掉了.请问这个问题该如何解决阿?
这一切都没有问题
后来我想实现这样一个功能: 当鼠标在地图上移动的时候,鼠标下方显示一个ToolTip,显示当前地图中的坐标值. 所以我增加了一个CToolTip对象, 并在鼠标移动的消息内更新当前地图的坐标值.Tooltip的显示没有问题,但当tooltip移动的时候,把对话框上绘制的地图都擦除掉了.请问这个问题该如何解决阿?
解决方案 »
- 怎么将MSChart加入到项目中
- 我想判断一个LPCTSTR类型的字符串结尾是否是"\",如果不是添加上。我该怎么做?UNICODE
- 关于FrameRgn的讨论
- 只有10分了,为什么CRecordSet的open返回值为1(正常的打开了), 可是却无法addnew()却出现了无法当前数据库为只读模式的错误提示。
- 请问如何屏蔽子窗口标题栏的双击功能?用NcLButtonDblClk?
- 关于设置环境变量的问题
- 请问写一个HTTPPROXY程序需要哪些知识?
- 连接问题
- 怎样调用IE,简单问你,高分相送!
- 关于CMainFrame的问题!!
- 关于Edit控件~
- 请高手给个详细的“无标题栏窗口拖动”示范讲解好吗?网上的都看不明白
由于我在绘图时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); // 设置图像的起始点