用VC++进行MapX二次开发
之二------使用MapX的基石
Writer:Bluedy er-huang@163.com
在开始之前,我假设读者熟悉VC++编程(了解一些可以),且使用的系统安装好了VC++5.0(或以上版本,建议VC++6.0)和MapX4.0(或以上版本)。若你还没完成以上步骤,GetReader().Stop();请你满足前面的if语句。
好,现在让我们来开始我们的MapX之旅吧!
对于C++程序来说,每个MapX对象(Objects)都在MapX.h 和 MapX.cpp中用一个类来实现,类的名字和MapX对象的名字相同,且已经在CmapX中定义了。例如,DataSet对象用类CmapXDataset实现。这和C++类的定义相一致。
那么,每个对象的属性(Properties)呢?MapX的属性是用类的成员函数来实现的。比如刚才的DataSet对象的名字(Name),就是用Name()函数来实现的,不过,Name()有两种使用方法,即Get和Set。如:
CString GetName();//获取对象名字
void SetName(LPCTSTR);//设置对象名字
你是不是觉得Get和Set有点熟悉?那你看看下面的函数:
GetButtomInfo();GetButtomText();
SetButtomInfo();SetButtomText();
上面的函数可是MFC标准的、而且常用的函数哦。所以,你学MapX开发,可以想象成MapX里面的对象和属性就是MFC里面的类和成员函数。如此而已。
现在让我们来创建我们的MapX基石吧。
第一步:用VC++的程序向导来创建一个单文档程序MapXSample。
第二步:Project> Add To Project>Files,选择MapX.cpp和MapX.h。
第三步:定义一个CmapX对象。
class CMapxSampleView : public CView
{
……
protected:
CMapX m_ctrlMapX;
……
}
第四步:声明一个常量。View > Resource Symbols>New>name为IDC_MAP。
第五步:在类向导中为CMapXSampleView创建WM_SIZE 和 WM_CREATE的处理消息:
void CMapxSampleView::OnCreate(UINT nType, int cx, int cy)
{
m_ctrlMapX.Create(NULL, WS_VISIBLE, CRect(0,0,100,100), this,IDC_MAP);
}
void CMapxSampleView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
m_ctrlMapX.MoveWindow(0,0,cx,cy,TRUE);
}
第六步:在类向导中为CMapXSampleView创建WM_SETFOCUS的处理消息,以确保当窗口处于活动状态时得到焦点。
void CMapxSampleView::OnSetFocus(CWnd* pOldWnd)
{
CView::OnSetFocus(pOldWnd);
m_ctrlMapX.SetFocus();
}
然后编译运行。看到了吗?这个就是一个最基本的MapX程序了,我把它称为“MapX的基石”,因为以后的程序都是在这个程序的基础上“缝缝补补”而来的。