补充 magicpapacy的回答,可用CRgn区域类代替CRect类
PtInRegion代替PtInRect
因为地图的区域是不规则封闭曲线,需要用算法生成CRgn区域。
注意事项:
1.如果是映射菜单命令的话,可以视图类映射,也可以在主框架映射,还可以在文档类或者应用类映射都可以,因为它是全局命令。但是你调用
pDC->Ellipse(100,100,200,200); 的话,在不同的类中映射位置可能不一样。
2 CDC *pDC; 你只是声明了一个设备上下文的指针,这个设备上下文里面什么都没有,当然画不了图。应该对它赋值后再绘图。
CDC * dDC=GetDC();这样就可以了。
CRect m_rtTianjin; // 天津的区域,由程序中传入
添加WM_MOUSEMOVE消息响应
在OnMouseMove(UINT nHitTest, CPoint point)中调用:
if(m_rtTianjin.PtInRect(point))
SetCursor(IDC_HAND);
添加 WM_LBUTTONDOWN消息响应
在OnLButtonDown(UINT nHitTest, CPoint point)中调用:
if(m_rtTianjin.PtInRect(point))
{ // 你要弹出的天津窗口
CTianjinDlg dlg;
dlg.DoModal();
}
...这个我也不知道 的