nc8000
路人甲
路人甲
  • 注册日期2004-08-11
  • 发帖数42
  • QQ
  • 铜币237枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2446回复:4

[求助]关于PageLayout和Map的同步问题

楼主#
更多 发布于:2005-10-10 10:48
<P>我要实现PageLayoutControl和MapControl的关联。根据论坛里</P>
<P><a href="http://www.gisempire.com/bbs/dispbbs.asp?BoardID=62;ID=42431;replyID=;skin=1" target="_blank" >http://www.gisempire.com/bbs/dispbbs.asp?BoardID=62;ID=42431;replyID=;skin=1</A></P>
<P>的这篇贴子,我改写为vc代码如下:</P>
<P> IObjectCopyPtr pObjectCopy(CLSID_ObjectCopy);<BR> IUnknownPtr  pToCopyMap;</P>
<P> IActiveViewPtr map_view(m_pMap);<BR> IMapPtr   map_focus;</P>
<P> map_view ->get_FocusMap(;map_focus);</P>
<P> pToCopyMap = map_focus;</P>
<P> IUnknownPtr  pCopiedMap;<BR> <BR> pObjectCopy ->Copy(pToCopyMap, ;pCopiedMap);</P>
<P>//<BR> IUnknownPtr  pToOverwriteMap; </P>
<P> IActiveViewPtr page_view;</P>
<P> IMapPtr   page_focus;<BR> <BR> m_ipPageLayoutControl ->get_ActiveView(;page_view);</P>
<P> page_view ->get_FocusMap( ;page_focus );<BR>    <BR> pToOverwriteMap = page_focus;</P>
<P> pObjectCopy ->Overwrite( pCopiedMap, ;pToOverwriteMap );</P>
<P> //////////////////////////////////////////////////////////////////////////</P>
<P> m_ipPageLayoutControl ->ZoomToWholePage();<BR> IEnvelopePtr  enve;</P>
<P> map_view ->get_Extent(;enve);<BR> page_view ->put_Extent(enve);</P>
<P> m_ipPageLayoutControl ->Refresh( esriViewGeography, vtMissing, vtMissing );</P>
<P>可是PageLayoutControl上还是什么也没有显示。我跟踪了一下,发现在Overwrite( pCopiedMap, ;pToOverwriteMap ),这一句运行之后,pToOverwriteMap为空,不知道这是不是正常的。请高手指点一下。</P>
喜欢0 评分0
nc8000
路人甲
路人甲
  • 注册日期2004-08-11
  • 发帖数42
  • QQ
  • 铜币237枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2005-10-10 11:10
<P>奇怪了,下面的这段VB代码可以正确的显示</P>
<P>    Dim pObjectCopy As IObjectCopy<BR>    Set pObjectCopy = New ObjectCopy<BR>    <BR>    Dim pToCopyMap As IUnknown<BR>    Set pToCopyMap = MapControl1.ActiveView.FocusMap<BR>    <BR>    <BR>    Dim pCopiedMap As IUnknown<BR>    Set pCopiedMap = pObjectCopy.copy(pToCopyMap)<BR>    <BR>    Dim pToOverwriteMap As IUnknown<BR>    Set pToOverwriteMap = Me.PageLayoutControl1.ActiveView.FocusMap<BR>    <BR>    pObjectCopy.Overwrite pCopiedMap, pToOverwriteMap<BR>    <BR>    If pToOverwriteMap Is Nothing Then<BR>        Exit Sub<BR>    End If<BR>    <BR>    Dim m_pMapFrame As IMapFrame<BR>    Set m_pMapFrame = PageLayoutControl1.GraphicsContainer.FindFrame(PageLayoutControl1.ActiveView.FocusMap)<BR>    m_pMapFrame.ExtentType = esriExtentScale<BR>    <BR>    PageLayoutControl1.Page.IsPrintableAreaVisible = True</P>
<P>    PageLayoutControl1.ActiveView.Extent = MapControl1.ActiveView.Extent<BR>    PageLayoutControl1.Refresh esriViewGeography<BR>    <BR>    <BR>    PageLayoutControl1.ZoomToWholePage<BR></P>
<P>而且在Overwrite方法后pToOverwriteMap也不为空,但是我的VC代码和VB一样啊???</P>
举报 回复(0) 喜欢(0)     评分
shqxiang
路人甲
路人甲
  • 注册日期2006-12-06
  • 发帖数3
  • QQ
  • 铜币108枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2007-05-24 15:46
思考中……<img src="images/post/smile/dvbbs/em02.gif" />
举报 回复(0) 喜欢(0)     评分
snoopyxp
路人甲
路人甲
  • 注册日期2004-08-11
  • 发帖数31
  • QQ
  • 铜币225枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2007-12-13 16:53
<P>map_view ->get_Extent(;enve);<BR>page_view ->put_Extent(enve);</P>
<P>去掉看看</P>
举报 回复(0) 喜欢(0)     评分
jiangying
路人甲
路人甲
  • 注册日期2005-11-15
  • 发帖数8
  • QQ
  • 铜币131枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2007-12-14 10:22
<P>IActiveViewPtr page_view;<BR>IActiveViewPtr page_mapview;<BR>IMapPtr   page_focus;<BR>m_ipPageLayoutControl ->get_ActiveView(;page_view);<BR>page_view->get_FocusMap(;page_focus);</P>
<P>page_mapview = (IActiveViewPtr)page_focus;<BR>page_mapview->put_Extent(enve);</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部