免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 2285|回复: 1
收起左侧

[讨论]VC中Info工具实现的讨论

[复制链接]

2072

主题

100000万

铜板

363

好友

地信专家组

每一次的分离都是为了下一次的相聚

Rank: 14Rank: 14Rank: 14Rank: 14

积分
17622

精华勋章宣传勋章爱心勋章组织勋章地信元老灌水勋章荣誉会员勋章活跃勋章贡献勋章

发表于 2009-11-15 16:29 | 显示全部楼层 |阅读模式
[讨论]VC中Info工具实现的讨论

我在VC中做了一个类似MapInfo中的信息工具,还不怎么完善,与大家讨论。
实现思路:
1.自定义一个Info工具MYTOOL_INFO
2.生成必要的数据记录类(我的数据没有绑定在图层上,我用DAO访问ACCESS数据库)
3.建立一个对话框,用来显示数据库中的数据,我把对话框做成了非模式对话框,
     这样具有模式对话框没有的优势。
4.在OnToolUsed()中响应工具消息
当用户选择信息工具,在地图上点击后,OnToolUsed()函数中的代码可以这样写:
if (ToolNum==MYTOOL_INFO)
{
  CMapXPoint pt;//用来表示点击的位置坐标
  CMapXFeatures fs;
  CMapXFeature f;//点击处的对象
  pt.CreateDispatch(pt.GetClsid());
  pt.Set(X1,Y1);//将传进来的坐标给pt对象
  //得到当前图层中被选择的图元集合
  //这里我只处理了当前图层,如果考虑全部图层
  //可以用遍历实现
  fs = m_map.GetLayers().Item(m_currentlayer).SearchAtPoint(pt);//当前图层名称
                                                              //保存在视图类中  
  if (fs.GetCount()!=1)//如果选择的图元数不是一,就返回
    return;
  f=fs.Item(1);//得到第一被选择的图元
  
  //MessageBox(f.GetName(),"你选择的地物为",MB_OK);//测试用
                                                  //看是否选中了一个地物        
  CAnimalDoc* pDoc=GetDocument();//
  CBasicSet* basic=pDoc->m_pBasicSet;//得到文档类中的基本信息记录集指针
  CString cityname="\'"+f.GetName()+"\'";
  CString strCriteria=_T("城市名="+breedname);//生成SQL语句
  if (!basic->FindFirst(strCriteria))//根据SQL语句查询记录集,定位指针
  {
    MessageBox("没有找到!","出错!";
    return;
  }
  
  if (m_pDlg)//非模式对话框在视图类初始化的时候生成了对话框
  {
    m_pDlg->SetValues(distri);//通过RecordSet指针设置对话框数据成员的值
    m_pDlg->UpdateData(FALSE);//更新对话框数据
    m_pDlg->SetActiveWindow();//激活
    m_pDlg->ShowWindow(SW_SHOWNOACTIVATE);
  }
}

0

主题

2632

铜板

0

好友

教授级高工

Rank: 12Rank: 12Rank: 12

积分
1542
发表于 2025-1-9 16:08 | 显示全部楼层
探矿者软件可以提高矿体的命中率,减少找矿的成本和难度,主要功能:数据管理、二维制图、三维建模、储量估算、三维立体预测等,有需要免费试用可以联系负责人邓帅15377311476(微信同号),软件针对单位或者企业试用,不面向个人试用
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表