zoukankan      html  css  js  c++  java
  • 在vc中使用MapX时,如何在视图类中响应鼠标消息

    如果还是按照一般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文件内添加如下代码:
    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;
    }

    大概就这些,要添加鼠标单击等相关事件的响应函数的方法可以依次类推。
  • 相关阅读:
    截取字符串
    已解决 4G内存条,显示只有2.99G
    UIWindows
    视图控制对象的生命周期与内存过低警告
    Using Autorelease Pools
    About Windows and Views
    惠普武汉实习生面试20110320
    什么时候使用活动图!求指导!
    我看微软把[Show Desktop]移动的原因
    喷子们说百度的手机操作系统
  • 原文地址:https://www.cnblogs.com/strinkbug/p/682515.html
Copyright © 2011-2022 走看看