阅读:2693回复:4
[求助]关于PageLayout和Map的同步问题
<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> |
|
1楼#
发布于: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> |
|
2楼#
发布于:2007-12-13 16:53
<P>map_view ->get_Extent(;enve);<BR>page_view ->put_Extent(enve);</P>
<P>去掉看看</P> |
|
3楼#
发布于:2007-05-24 15:46
思考中……<img src="images/post/smile/dvbbs/em02.gif" />
|
|
4楼#
发布于: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> |
|