其实就是对控件custom event的响应。这里举例自己定义了一个MY_INFOTOOL。实现点击在控件上自己定义响应。
1.event和响应函数映射
BEGIN_EVENTSINK_MAP(CMapXMobileViewerView, CView) ON_EVENT(CMapXMobileViewerView, IDC_MAP, MAPX_DISPID_TOOLUSED, OnToolUsed, VTS_I2 VTS_R8 VTS_R8 VTS_R8 VTS_R8 VTS_R8 VTS_BOOL VTS_BOOL VTS_PVARIANT) END_EVENTSINK_MAP()
2.添加自定义工具MY_INFOTOOL
m_ctrlMapX.CreateCustomTool(MY_INFOTOOL, miToolTypePoint, miInfoCursor);
3.响应函数,只处理自定义的,其他的由控件默认处理
void CMapXMobileViewerView::OnToolUsed(short ToolNum, double X1, double Y1, double X2, double Y2, double Distance, BOOL Shift, BOOL Ctrl, VARIANT* EnableDefault) { if (ToolNum == MY_INFOTOOL) { CInfoToolDlg dlg(m_ctrlMapX.GetLayers(), X1, Y1, this);
dlg.DoModal(); } }