luguoliang211
路人甲
路人甲
  • 注册日期2006-08-08
  • 发帖数10
  • QQ
  • 铜币208枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2144回复:2

求教AE+VC中打印的问题

楼主#
更多 发布于:2008-11-16 20:20
<P>建立一个CMapComposer类,其中定义 IPageLayoutControlPtr m_pCtrlPLayout;</P>
<P>在该类中建立函数:</P>
<P>BOOL CMapComposer::PrintLayout()<BR>{</P>
<P> if(m_pCtrlPLayout==NULL) return FALSE;</P>
<P> HRESULT hr;</P>
<P> IPrinterPtr ipPrinter;<BR> IPagePtr ipPage;<BR> IPaperPtr ipPaper;<BR>    BSTR bsDName;<BR>    CString sDName,sMsg;</P>
<P> ipPrinter=m_pCtrlPLayout->get_Printer(;ipPrinter);<BR> if(ipPrinter==NULL) return FALSE;<BR> hr=ipPrinter->get_DriverName(;bsDName);<BR> if(FAILED(hr)) return FALSE;<BR> sDName=bsDName;<BR> sMsg="是否使用默认打印机:"+sDName+"?";<BR> if(AfxMessageBox(sMsg,MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2)==IDNO)<BR>  return FALSE;</P>
<P> hr=ipPrinter->get_Paper(;ipPaper);<BR> if(FAILED(hr)) return FALSE;<BR> hr=ipPaper->put_Orientation(2);<BR> if(FAILED(hr)) return FALSE;</P>
<P> ipPage=m_pCtrlPLayout->get_Page(;ipPage);<BR> hr=ipPage->put_PageToPrinterMapping(esriPageMappingScale);<BR> if(FAILED(hr)) return FALSE;</P>
<P> m_pCtrlPLayout->PrintPageLayout(1,1,0);</P>
<P> return TRUE;</P>
<P>}</P>
<P>最后调试出现问题:</P>
<P>left of '->QueryInterface' must point to class/struct/union</P>
<P>'QueryInterface' : is not a member of 'CPageLayoutControlDefault'</P>
<P>请教了一个高手,他说:</P>
<P>CPageLayoutControlDefault 的一个函数如下,该函数调用时候是没有入口参数的:<BR>LPUNKNOWN get_Printer()<BR> {<BR>  LPUNKNOWN result;<BR>  InvokeHelper(0xb, DISPATCH_PROPERTYGET, VT_UNKNOWN, (void*);result, NULL);<BR>  return result;<BR> }<BR>但是怎么解决啊?再请高手指教一下</P>
喜欢0 评分0
chenjiayibo
路人甲
路人甲
  • 注册日期2008-03-19
  • 发帖数12
  • QQ
  • 铜币149枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2008-11-20 23:08
请问楼主的问题解决了没有?
我和你一样,碰到这个问题……<img src="images/post/smile/dvbbs/em01.gif" />
举报 回复(0) 喜欢(0)     评分
生在初夏
路人甲
路人甲
  • 注册日期2008-08-14
  • 发帖数6
  • QQ
  • 铜币118枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2008-11-17 08:33
<P>你那个方法我没用过,不过 IPrinter挺好用的。那个错误提示我倒是见过,但都没能解决,可能是AO与AE有些差别的原因吧。你的那个方法是不是在Ao的资料上查到的吗?换个方法应该行</P>
<P>我把我用过的代码给你你看哈吗是vb.net的</P>
<P> Dim pPrinter As IPrinter<BR>        pPrinter = AxPageLayoutControl1.Printer<BR>        Dim pPaper As IPaper<BR>        pPaper = pPrinter.Paper<BR>        Dim pPage As IPage<BR>        pPage = AxPageLayoutControl1.Page<BR>        pPage.FormID = esriPageFormID.esriPageFormA4<BR>        pPage.Orientation = 1<BR>        pPage.PageToPrinterMapping = esriPageToPrinterMapping.esriPageMappingScale<BR>        If pPaper.Orientation <> pPage.Orientation Then<BR>            pPaper.Orientation = pPage.Orientation<BR>        End If<BR>        AxPageLayoutControl1.PrintPageLayout(1, 1, 0)<BR></P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部