何熙颖
路人甲
路人甲
  • 注册日期2004-10-22
  • 发帖数71
  • QQ
  • 铜币439枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2569回复:8

如何在TOCcontrol里通过点击图层名做右键菜单?

楼主#
更多 发布于:2005-04-24 12:48
<P>TOCcontrol绑定了mapcontrol,想通过点击TOCcontrol里显示的图层树的图层名,做右键菜单,但是不知道怎么获取到图层名的位置。</P>
<P>请教各位大侠,谢谢!</P>
喜欢0 评分0
wavvylia
路人甲
路人甲
  • 注册日期2003-07-28
  • 发帖数384
  • QQ
  • 铜币555枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2005-04-26 14:40
<P>TOC有一个HitTest方法,用它可以得到你所点击图层。</P>
举报 回复(0) 喜欢(0)     评分
何熙颖
路人甲
路人甲
  • 注册日期2004-10-22
  • 发帖数71
  • QQ
  • 铜币439枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-04-28 09:24
<P>已经做到了,但是出现一个问题,就是TOC控件的OnMouseUp事件里的右键无法响应(左键没有问题),后来发现必须要双击才能激发这个右键事件,觉得很奇怪,不知道大侠是否知道是何缘故?</P><P>也因此做这个TOC控件点击图层做右键菜单时,出现了双击右键才能出右键菜单来。这是问题一。</P><P>另外,后来用OnMouseDown来做右键菜单,发现问题是:激发右键菜单后,如果不去点击右键菜单里的菜单项,而是另外再右键点击另一图层来激发右键菜单时,必须要按两次才行。这是问题二。</P><P>若不是engine的控件就没有问题,如button、form等的右键菜单测试都不会出现以上问题。</P><P>不得其解,若有大侠知道,请给予指点,不胜感激!</P>
举报 回复(0) 喜欢(0)     评分
aicai
路人甲
路人甲
  • 注册日期2003-11-18
  • 发帖数191
  • QQ
  • 铜币740枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2005-04-28 14:56
vb.net中右击可以的,我都做到了!
举报 回复(0) 喜欢(0)     评分
万里云
路人甲
路人甲
  • 注册日期2005-01-14
  • 发帖数114
  • QQ
  • 铜币414枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2005-04-28 21:44
vb也可以
女口果人尔能看日月白这段言舌,那言兑日月人尔白勺目艮目青有严重白勺散光 
举报 回复(0) 喜欢(0)     评分
flyingmarx
路人甲
路人甲
  • 注册日期2004-09-20
  • 发帖数17
  • QQ
  • 铜币222枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2005-04-30 18:13
<P>试试假上语句if button=2 then</P><P>                      endif </P><P>看看</P>
举报 回复(0) 喜欢(0)     评分
waterblue
路人甲
路人甲
  • 注册日期2004-09-02
  • 发帖数72
  • QQ
  • 铜币387枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2005-04-30 21:31
<P>Private m_pMenuMap As IToolbarMenu 'TocControl上Map的右键菜单</P><P>If button = 2 Then
          'Determine what kind of item has been clicked on
          m_pTocControl.HitTest x, y, pItem, pMap, pLayer, pLegendGroup, pIndex
          m_pMapControl.CustomProperty = pLayer
          Set pSelSymLayer = pLayer
          '弹出上下文菜单
          If pItem = esriTOCControlItem.esriTOCControlItemMap Then m_pMenuMap.PopupMenu x, y, m_pTocControl.hwnd
          If pItem = esriTOCControlItem.esriTOCControlItemLayer Then m_pMenuLayer.PopupMenu x, y, m_pTocControl.hwnd
    End If</P>
http://www.geostar.com.cn(吉奥 公司) http://www.waterblue.com.cn(水之灵,蓝之静 个人)
举报 回复(0) 喜欢(0)     评分
willmon
路人甲
路人甲
  • 注册日期2004-10-08
  • 发帖数38
  • QQ
  • 铜币27枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2005-06-17 09:11
用hittest得到了图层,可是怎么把这个得到的图层传到右键菜单项中呀,因为菜单项是在另一个dll中呀
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
8楼#
发布于:2005-06-17 15:24
<P>你可以直接在dll里的函数的参数里加上你的图层或者代替图层的变量</P>
<P>那在你的dll里就有了你得到的图层的信息,问题就解决啦</P>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
游客

返回顶部