VC++开发GIS系统(256)输入注释之类实现

前文《VC++开发GIS系统(248)输入注释之类设计》设计了输入注释的类,一系列的准备工作,本文对这个类做一个实现。

类的实现

在_malaLabel.cpp中实现 CmalaLabelsInput类,代码如下:

/*
* 输入注释
*/
CmalaLabelsInput::CmalaLabelsInput(CView* mView, malaScreen *pScreen, CString &fileFullPath)
{
    mBaseView = mView;
    mPath = fileFullPath;
    mScreen = pScreen;
    getLabelPro();
    mIsInput = false;
}
CmalaLabelsInput::~CmalaLabelsInput()
{
}
void CmalaLabelsInput::LButtonDown(UINT nFlags, malaPoint point)
{
    if (!mIsInput)
    {
        if (mLabelPro.textStr != L"")
        {
            malaCDC dc(mBaseView, *mScreen);
            dc.textDraw(point, mLabelPro);
            CLabelIO lio;
            lio.labelAdd(point, mLabelPro,mPath);
        }
        else
        {
            MessageBox(mBaseView->m_hWnd, L"输入内容不得为空", L"提示", MB_ICONQUESTION);
        }
        mIsInput = true;
    }
    
}

void CmalaLabelsInput::getLabelPro()
{
    //字体对话框
    if (dlgInputLabel(mLabelPro) == FALSE)
    {
        mLabelPro.labelHeight = 20;    //字体高度
        mLabelPro.labelHeight = 10;     //字体宽度
        mLabelPro.labelAngle = 0;  //字体角度
        mLabelPro.textAngle = 0; //文本角度
        mLabelPro.textColor = RGB(0, 0, 0);//字体颜色
        mLabelPro.textOff = 1;  //字体间距
        mLabelPro.textFont = L"华文楷体";  //字体类型
        mLabelPro.fontWeight = 400;
    }
}

解释一下思路。

  1. 构造输入注释的类的时候调用getLabelPro 函数,(参考:VC++开发GIS系统(249)设置注释属性对话框),设置并记录注释的输入参数。
  2. 点击左键,在点击位置绘制注释(参考:《VC++开发GIS系统(250)绘制文字的函数》),并保存文件(参考:《VC++开发GIS系统(255)保存一条注释函数》)。

详细代码可以参考:GitHub

VC++开发GIS系统(255)保存一条注释函数 VC++开发GIS系统(257)输入注释之菜单响应

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

发表评论