VC++开发GIS系统(35)点要素的模块建立

在之前的文章VC++开发GIS系统(34)解决鼠标左键的冲突中我创建了一个基类,用来解决VC++开发GIS系统(29)关于鼠标左键的联想1中所遇到的问题。本文将继续上面的内容,在基于此基类派生出点的相关模块子类。

添加点要素的DLL模块(新建一个dll)

添加DLL的方法在文章VC++开发GIS系统(1)使用DLL导出类编程示例中介绍过,讲务必按照教程中的方法来。此处命名为:malaPoints,如下图:

添加导出dll的_malaPoints.h和_malaPoints.cpp文件

这里要说明一个问题就是,_malaPoints.h和_malaPoints.cpp都是新建的文件,并不是原来自带的文件。这里加下划线也是为了以示区别,所有用于导出的头文件和源文件在本工程中都以下划线开头。

_malaPoints.h
#ifndef _MALAPOINTS_H_
#define _MALAPOINTS_H_

#ifndef _MALAPOINTS_EXPORT
#define malapointsdll  __declspec(dllimport)
#else
#define malapointsdll  __declspec(dllexport)
#endif

#include "_malaBase.h"

/*
* 输入点 
*/
class malapointsdll CmalaPointsInput : public CmalaMouseAction
{
public:
    CmalaPointsInput(CView* mView);
    ~CmalaPointsInput();
    void LButtonDown(UINT nFlags, malaPoint point);
private:
    malaPoint mPont;
    malaPointPro mPointPro;
};


#ifndef _MALAPOINTS_EXPORT
#ifdef _DEBUG
#pragma comment(lib,"malaPoints.lib")
#else
#pragma comment(lib,"malaPoints.lib")
#endif
#endif

#endif

可以看见这里定义了一个类,这个类的作用是输入一个点。mPont用于获取点的位置,mPointPro用于获取点的属性。LButtonDown函数表示点击左键的时候画图。关于其他部分的解释可以参考我之前的文章:VC++开发GIS系统(34)解决鼠标左键的冲突 里面对头文件有更加详细的解释。

_malaPoints.cpp文件
#include "stdafx.h"
#include "_malaPoints.h"

/*
* 输入点
*/
CmalaPointsInput::CmalaPointsInput(CView* mView)
{
    mBaseView = mView;
}

CmalaPointsInput::~CmalaPointsInput(){}

void CmalaPointsInput::LButtonDown(UINT nFlags, malaPoint point)
{

}

这里只是对头文件的函数做了实现(代码还没写,只是一个框哦)

DLL工程设置

这里的设置要和上文VC++开发GIS系统(34)解决鼠标左键的冲突的设置一样,一定要设置正确!!!如果不知道怎么设置的,可以参考我的开源项目:Coding,下载下来,用vs打开就可以看到了!

编译工程

现在工程已经有1个主程序和2个dll模块了,下面应该编译一下,因为我们malaPoints要信赖于malaBase,所以应该先编译malaBase,再编译malaPoints。注:后文也是一样,项目的编译顺序应该是按照依赖顺序进行的。编译方法:右击dll项目,选择生成或者重新生成即可。

至此,我们的项目已经编译通过,然而并不能做什么操作。下面的文章中将介绍怎么在主程序中调用这个类,并且进行画点。

IDL读取XML文件 IDL提取字符串中的数组

作者:,GIS爱好者。
分享本文,请您带上本文链接
分享到:

发表评论