|
阅读:1462回复:0
各位使用过图例开发接口ILegendWizard吗?
<P>该接口无法正确运行,在DoModal这里出现错误,程序完蛋。去<a href="http://forums.esri.com/Forums.asp?c=93" target="_blank" >http://forums.esri.com/Forums.asp?c=93</A> 寻求原因,别人也遇到这样的错误,却没有人回答原因。</P>
<P>有明白原因的各位,请指教!!!</P> <P>我的代码如下:</P> <P> IUIDPtr id(CLSID_UID);<BR> id->put_Value(CComVariant("esriCore.Legend"));</P> <P> IGraphicsContainerPtr gt = m_wndPageCtrl.GetGraphicsContainer();<BR> IActiveViewPtr view = m_wndPageCtrl.GetActiveView();<BR> IMapPtr map;<BR> view->get_FocusMap(;map);<BR> IFrameElementPtr frame;<BR> gt->FindFrame(_variant_t((IUnknown*)map), ;frame);<BR> IMapFramePtr pMapFrame = frame;</P> <P> IMapSurroundFramePtr pMapSurroundFrame;<BR> pMapFrame->CreateSurroundFrame(id, NULL, ;pMapSurroundFrame);</P> <P> VARIANT_BOOL b = VARIANT_TRUE;<BR> ILegendWizardPtr pLegendWizard(CLSID_LegendWizard);<BR> LPUNKNOWN lpun = m_wndPageCtrl.GetPageLayout();<BR> IPageLayoutPtr page = lpun;<BR> pLegendWizard->putref_PageLayout(page);<BR> pLegendWizard->put_InitialLegendFrame(pMapSurroundFrame);<BR> pLegendWizard->DoModal((OLE_HANDLE)this->m_hWnd, ;b);<BR> if (VARIANT_FALSE == b) <BR> return;</P> <P> IElementPtr element = pMapSurroundFrame;<BR> CGeometryTracker tracker;<BR> IGeometryPtr ipGeometry;<BR> tracker.TrackerLine(;m_wndPageCtrl, ipGeometry);<BR> element->put_Geometry(ipGeometry);</P> <P> VARIANT vt0, vt1;<BR> VariantInit(;vt0);<BR> VariantInit(;vt1);<BR> m_wndPageCtrl.AddElement(element, vt0, vt1, CComVariant("dd"), 0);</P> <P> VARIANT vt;<BR> VariantInit(;vt);<BR> m_wndPageCtrl.Refresh(esriViewBackground, vt, vt);</P> |
|
|