MAPX在VC++中应用
时间:2010-11-22 来源:frogrocket
<1> 控件加入到工程:
MapInfo MapX 5.0 开发人员指南指出, 不应该采用的方法:Project –> Add To Project –> Components and Controls,找到Registered ActiveX Controls –> MapInfo MapX V5,单击Insert。但是这插入的将是不完整的,不应该采用。
正确的方法:在项目中包含控件示例程序中提供的MapX.cpp和MapX.h文件。把这两个文件拷贝到工程目录下,Project –> Add To Project –> Files,找到MapX.cpp和MapX.h,单击OK。
<2> 控件的创建
假定,工程类型为MFC exe工程,sdi类型,工程向导各选项采用默认设置。注意需要选中ActiveX Control一项。
首先在CView或其派生类中声明成员变量CMapX m_ctrlMap;
然后为控件提供一个资源ID,如IDC_MAP。View –> Resource Symbols,选择New…
重载视图类的OnCreate()函数,也就是创建WM_CREATE消息处理程序。在创建视图时创建MapX控件。
MapX控件的Create()函数有两个原型(见MapX.h),这里我们采用后一个,即非虚函数的那个。
if (!m_ctrlMap.Create(NULL, WS_VISIBLE, CRect(0, 0, 100, 100), this, IDC_MAP))
{return –1;}
为保证控件的大小随着CView窗口的大小变化而变化,重载视图类的OnSize()函数,也就是创建WM_SIZE消息处理程序。可使用m_ctrlMap.MoveWindow(0, 0, cx, cy, TRUE)。
为保证控件可靠地获得焦点,可以重载CView的OnSetFocus(),使控件在视图获得焦点的同时也获得焦点。可使用m_ctrlMap.SetFocus()。
从上面几项操作我们可以注意到:由于CMapX的基类是CWnd,所以窗口的操作和特性等对于MapX控件也是通用的。