这个问题仍然没有解决,现在的想法是当鼠标放在地图上时,将所在位置的经纬度信息显示在状态栏中,应如何做?谢谢?
解决方案 »
- Unhandled exception at 0x1023ec7a (msvcr80d.dll)这个错误怎么回事呢?
- 如何向别的程序窗口中的文本输入框中传送字符串?
- 刚学VC遇到了麻烦------????请教大家
- 急需要一条SQL语句,找到最大值,和取得这个最大值时另外一属性的值!
- 有关DLL使用和销毁的问题
- 禁止IE广告窗口弹出是如何做出的?
- vc++的书?
- ado问题,紧急!高分求救
- 请教打印数据过滤
- 不知道WSAGetOverlappedResult的第三个参数lpcbTransfer能否每次都能获得客户端发过来字符串的长度?
- VSS上怎么删除一个proj的lable。
- VC 写ActiveX如何向媒体播放器一样右键实现全屏-----高手请指点---附代码
int nIndex,
LPCTSTR lpszNewText,
BOOL bUpdate = TRUE
);
首先,这个鼠标放在地图上就可以显示经纬度的事件要怎么触发,也就是将语句写在哪个函数里?
其次,经纬度怎么得到的?
最后,CStatusBar::SetPaneText中的nIdex是什么意思?谢谢!
1.xxxView.h中定义
BOOL OnMouseMoveInMap(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
2.xxxView.cpp中添加消息影射:
BEGIN_EVENTSINK_MAP(CxxxView, CView)
ON_EVENT(CxxxView, IDC_MAP, DISPID_MOUSEMOVE, OnMouseMoveInMap, VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS)END_EVENTSINK_MAP()
3.实现
BOOL CMonGraphView::OnMouseMoveInMap(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y)
{
double dbMapCoordX, dbMapCoordY; //地图坐标
float fScreenCoordX, fScreenCoordY;
fScreenCoordX = (float)(x);
fScreenCoordY = (float)(y);// 屏幕坐标转换为地图坐标
m_ctrlMapX.ConvertCoord(&fScreenCoordX,
&fScreenCoordY,
&dbMapCoordX,
&dbMapCoordY,
miScreenToMap);
CString strShow; //显示信息
strShow.Format("(%.4f, %.4f)", dbMapCoordX, dbMapCoordY);
((CMainFrame *)AfxGetMainWnd())->m_wndStatusBar.SetPaneText(0, strShow);
}
这条语句OnMouseInMap后面的是什么意思?每个词组之间有逗号吗?
这个错误是怎么回事儿?
上面那个问题我知道了,好像之间都是空格。
DECLARE_EVENTSINK_MAP()
昨天晚上就搞定了,但论坛设定的连续回复不能超过三次,就没回成。
我是这么添加DECLARE_EVENTSINK_MAP宏的:
DECLARE_EVENTSINK_MAP()应该加在该类的头文件的最后。例如:
protected:
//{{AFX_MSG(CMapShowView)
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnSetFocus(CWnd* pOldWnd);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
DECLARE_EVENTSINK_MAP()