阅读:2144回复:2
求教AE+VC中打印的问题
<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> |
|
1楼#
发布于:2008-11-20 23:08
请问楼主的问题解决了没有?
我和你一样,碰到这个问题……<img src="images/post/smile/dvbbs/em01.gif" /> |
|
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> |
|