如果还是按照一般vc程序一样使用ON_WM_LBUTTONDOWN()宏是不会起作用的。程序永远执行到不了你的OnLButtonDown(UINT nFlags, CPoint point) 函数内。
方法是这样的:
主要是要用到MapX自己定义的一套消息相关宏
以下我们假设试图类的名字为:
CDemoView
这里我们要添加的是一个响应鼠标移动的消息处理函数
1、首先在DemoView.h文件的DECLARE_MESSAGE_MAP()下方添加 DECLARE_EVENTSINK_MAP()宏
2、在DemoView.cpp文件头部添加如下代码:
#define IDR_MAP 100
3、在DemoView.cpp文件内添加如下代码:
1BEGIN_EVENTSINK_MAP(CDemoView,CView)
2 ON_EVENT(CDemoView,IDC_MAP,DISPID_MOUSEMOVE,OnMouseMoveInMap,VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS)
3END_EVENTSINK_MAP()
4、然后在DemoView.H文件内添加如下代码:2 ON_EVENT(CDemoView,IDC_MAP,DISPID_MOUSEMOVE,OnMouseMoveInMap,VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS)
3END_EVENTSINK_MAP()
BOOL OnMouseMoveInMap(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
5、在DemoView.CPP文件内添加如下代码:BOOL CMapGeneratorView::OnMouseMoveInMap(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y)
{
float screenX = (float)x;
float screenY = (float)y;
double mapX;
double mapY;
m_ctrlMapX.ConvertCoord(&screenX,&screenY,&mapX,&mapY,miScreenToMap);
CString currentPos;
currentPos.Format("经度:%f,纬度:%f",mapX,mapY);
return TRUE;
}
大概就这些,要添加鼠标单击等相关事件的响应函数的方法可以依次类推。