![對(duì)話框程序調(diào)用Frame框架實(shí)現(xiàn)打印的具體細(xì)節(jié)_第1頁](http://file4.renrendoc.com/view/d2140c2c9e13d70db5bcdb4b9a9378c0/d2140c2c9e13d70db5bcdb4b9a9378c01.gif)
![對(duì)話框程序調(diào)用Frame框架實(shí)現(xiàn)打印的具體細(xì)節(jié)_第2頁](http://file4.renrendoc.com/view/d2140c2c9e13d70db5bcdb4b9a9378c0/d2140c2c9e13d70db5bcdb4b9a9378c02.gif)
![對(duì)話框程序調(diào)用Frame框架實(shí)現(xiàn)打印的具體細(xì)節(jié)_第3頁](http://file4.renrendoc.com/view/d2140c2c9e13d70db5bcdb4b9a9378c0/d2140c2c9e13d70db5bcdb4b9a9378c03.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、對(duì)話框程序調(diào)用Frame框架實(shí)現(xiàn)打印的具體細(xì)節(jié)網(wǎng)上搜索了幾天關(guān)于對(duì)話框的打印問題大部分都抄來抄去的實(shí)現(xiàn)對(duì)話框所見即所得模式,其實(shí)就是在對(duì)話框上繪制一般還是使用打印預(yù)覽然后打印的功能吧.咱們就一步一步的來實(shí)現(xiàn)吧.最后本文給出一個(gè)可行的方案,也是網(wǎng)上收集的例子.PS:由于個(gè)人修改的所以改掉了類名也算一遍梳理吧.再PS:程序編譯可能還會(huì)有一些小錯(cuò)誤,一般是符號(hào)不同造成的了例如雙引號(hào),括號(hào)的全半角差異-II下面進(jìn)入正題:1用MFC應(yīng)用向?qū)?chuàng)建對(duì)話框應(yīng)用程序,設(shè)主對(duì)話框類為MyPrintPreviewDIg程序名稱為MyPrintPreview),在主對(duì)話框上放一按鈕,(標(biāo)題:打印預(yù)覽,ID:IDC_B
2、TN_PREVIEW),用類向?qū)г黾悠銪N_CLICKED的消息響應(yīng)函數(shù)OnButtonPreview生成打印預(yù)覽界面voidCMyPrintPreviewDlg:OnButtonPreview()CSevFrame*pf=newCSevFrame(this);/CSevFrame稍候介紹2、增加新類:用ClassWizard新建CSevFrame類(基類CFrameWnd),功能上相當(dāng)于文檔視圖的應(yīng)用程序的框架窗口類用ClassWizard新建CSevView類(基類CScroIIView)功能上相當(dāng)于文檔視圖的應(yīng)用程序的視圖類增加CSevPreviewView類(此類后面已經(jīng)給出)基類CP
3、reviewView(我就沒找到這個(gè)類),注意在頭其定義頭文件中加入包含afxpriv.h),用于打印預(yù)覽界面的視圖類。3、對(duì)新生成的各類修改如下:CSevFrame類:增加公有數(shù)據(jù)成員CMyPrintPreviewDlg*m_pOIdWnd用于保存主對(duì)話框?qū)ο螅籆SevView*mpView;/用于保存視圖類對(duì)象;由于存在CMyPrintPreviewDlg類HCSevView類,所以要包含兩個(gè)頭文件includeCMyPrintPreviewDlg.hincludeCSevView.h重載構(gòu)造函數(shù),保存對(duì)主對(duì)話框?qū)ο笾羔槪瑒?chuàng)建窗口/頭文件聲明CSevFrame(CMyPrintPrevie
4、wDlg*pOld);cpp文件定義CSevFrame:CSevFrame(CMyPrintPreviewDlg*pOld)m_pOldWnd=pOld;if(!Create(NULL,打印預(yù)覽,WS_OVERLAPPEDWINDOW|FWS_ADDTOTITLE,CRect(200,200,500,500)TRACE0(Failedtocreateviewwindown);修改析構(gòu)函數(shù),讓主對(duì)話框顯示CSevFrame:CSevFrame()m_pOldWnd-ShowWindow(SW_SHOW);用ClassWizard增加WM_CREATE消息處理函數(shù),關(guān)聯(lián)CSevView視圖對(duì)象;調(diào)
5、用其OnFilePrintPreview函數(shù)進(jìn)行打印預(yù)覽若要直接打印,可直接向其發(fā)送消息;隱藏主對(duì)話框。此項(xiàng)照著copy就好了嘿嘿intCSevFrame:OnCreate(LPCREATESTRUCTlpCreateStruct)if(CFrameWnd:OnCreate(lpCreateStruct)=-1)return-1;CCreateContextcontext;context.m_pNewViewClass=RUNTIME_CLASS(CSevView);context.m_pCurrentFrame=this;context.m_pCurrentDoc=NULL;context.
6、m_pLastView=NULL;m_pView=STATIC_DOWNCAST(CSevView,CreateView(&context);if(m_pView!=NULL)mView-ShowWindow(SW_SHOW);SetActiveView(m_pView);Setlcon(m_pOldWnd-GetIcon(FALSE),FALSE);Setlcon(m_pOldWnd-GetIcon(TRUE),TRUE);ShowWindow(SW_MAXIMIZE);CWinApp*pApp=AfxGetApp();pApp-m_pMainWnd=this;m_pView-OnFileP
7、rintPreview();mView-SendMessage(WM_COMMAND,ID_FILE_PRINT);直接打印m_pOldWnd-ShowWindow(SW_HIDE);return0;修改CSevView類修改構(gòu)造函數(shù):將坐標(biāo)射模式置為缺省模式。CSevView:CSevView()m_nMapMode=MM_TEXT;增加消息映射實(shí)現(xiàn)打印。ONCOMMAND(IDFILEPRINT,CViewQnFilePrint)重載虛函數(shù)OnPreparePrinting,調(diào)申DoPreparePrinting牛成申干打印或打印預(yù)覽的設(shè)備描述表。BOOLCSevView:OnPrepar
8、ePrinting(CPrintInfo*pInfo)returnDoPreparePrinting(pInfo);增加公有函數(shù)OnFilePrintPreview,調(diào)用DoPrintPreview實(shí)現(xiàn)打印預(yù)覽,該函數(shù)需要傳入四個(gè)參數(shù):1打印預(yù)覽工具條資源ID,2執(zhí)行打印及打印預(yù)覽的視圖對(duì)象指針,3打印預(yù)覽界面視圖類的CRuntimeClass指針,I4打印預(yù)覽狀態(tài)類CPrintPreviewState對(duì)象扌指針。voidCSevView:OnFilePrintPreview()CPrintPreviewState*pState=newCPrintPreviewState;pState-lpf
9、nCloseProc=_AfxMyPreviewCloseProc/設(shè)置打印預(yù)覽窗口關(guān)閉時(shí)的調(diào)用函數(shù);if(!DoPrintPreview(AFX_IDD_PREVIEW_TOOLBAR,this,RUNTIME_CLASS(CSevPreviewView),pState)TRACE0(Error:DoPrintPreviewfailed.n);AfxMessageBox(AFX_IDP_COMMAND_FAILURE);deletepState;在Myviewcpp文件中增加全局函數(shù),AfxMyPreviewCloseProc,當(dāng)單擊打印預(yù)覽窗口關(guān)閉按鈕時(shí)被調(diào)用。/頭文件聲明BOOLCALL
10、BACK_AfxMyPreviewCloseProc(CFrameWnd*pFrameWnd);/cpp文件定義BOOLCALLBACK_AfxMyPreviewCloseProc(CFrameWnd*pFrameWnd)ASSERT_VALID(pFrameWnd);CSevPreviewView*pView=(CSevPreviewView*)pFrameWnd-GetDlgItem(AFX_IDW_PANE_FIRST);ASSERT_KINDOF(CPreviewView,pView);pView-OnPreviewClose();returnFALSE;4、修改CSevPreview
11、View類,增加工具欄按鈕的消息響應(yīng)函數(shù)OnPreviewClose(),OnPreviewPrint(),由干此類較簡單,列出該類代碼如下(注意粗體部分):SevPreviewViewh/SevPreviewView.h:interfacefortheCSevPreviewViewclass./if!defined(AFX_MYPREVIEWVIEW_H_0AE8B670_B1AE_11DA_812E_00E04C39032F_INCLUDEDdefineAFX_MYPREVIEWVIEW_H_0AE8B670_B1AE_11DA_812E_00E04C39032F_INCLUDED_if_
12、MSC_VER1000pragmaonceendif/_MSC_VER1000includeclassCSevPreviewView:publicCPreviewViewDECLARE_DYNCREATE(CSevPreviewView)public:afx_msgvoidOnPreviewClose();protected:CSevPreviewView。;virtualCSevPreviewView();voidOnDraw(CDC*pDC);voidCSevPreviewView:OnEndPrintPreview(CDC*pDC,CPrintInfo*pInfo,POINTpoint,
13、CPreviewView*pView);afx_msgvoidOnPreviewPrint();DECLARE_MESSAGE_MAP();endif/!defined(AFXMYPREVIEWVIEWH0AE8B670B1AE11DA812E00E04C39032FINCLUDED)SevPreviewView.cpp/SevPreviewView.cpp:implementationoftheCSevPreviewViewclass.includestdafx.h#includeSevPrintPreviewDlg.hincludeSevPreviewView.h#includeSevFr
14、ame.hifdef_DEBUG#undefTHIS_FILEstaticcharTHIS_FILE=_FILE_;definenewDEBUG_NEWendif/IMPLEMENT_DYNCREATE(CSevPreviewView,CPreviewView)CSevPreviewView:CSevPreviewView()CSevPreviewView:CSevPreviewView()BEGIN_MESSAGE_MAP(CSevPreviewView,CPreviewView)ON_COMMAND(AFX_ID_PREVIEW_CLOSE,OnPreviewClose)ON_COMMAN
15、D(AFX_ID_PREVIEW_PRINT,OnPreviewPrint)END_MESSAGE_MAP()voidCSevPreviewView:OnDraw(CDC*pDC)CPreviewView:QnDraw(pDC);m_pToolBar-PostMessage(WM_IDLEUPDATECMDUI,(WPARAM)TRUE)控制條的命令狀態(tài)更新voidCSevPreviewView:OnEndPrintPreview(CDC*pDC,CPrintInfo*pInfo,POINTpoint,CPreviewView*pView)CPreviewView:OnEndPrintPreview(pDC,pInfo,point,pView);voidCSevPreviewView:OnPreviewClose()CSevFrame*pf=(CSevFrame*):AfxGetMainWnd();CWinApp*pApp=AfxGetApp();pApp-m_pMainWnd=pf-m_pOldWnd;原文漏掉幾個(gè)字母pf-DestroyWindow();voidCSevPreviewView:OnPreviewPrint()m_pPrintView-SendMessage(WM_COMMAND,ID_FILE_PRINT);至此,基于對(duì)話框應(yīng)用程序的具有打印及打印預(yù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 利用主題班會(huì)增強(qiáng)班級(jí)凝聚力計(jì)劃
- 酒店員工薪酬管理總結(jié)
- 紡織行業(yè)生產(chǎn)作業(yè)安全總結(jié)
- 七年級(jí)生物下冊(cè) 1.1人類的起源和發(fā)展 人教新課標(biāo)版課件
- 2025年全球及中國智慧康養(yǎng)平臺(tái)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球魚塘凈水器行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球插畫設(shè)計(jì)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球繩狀海藻酸鹽敷料行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國后裝載機(jī)卡車行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國翻新SSD和HDD行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030年中國反滲透膜行業(yè)市場(chǎng)發(fā)展趨勢(shì)展望與投資策略分析報(bào)告
- 山東省濰坊市2024-2025學(xué)年高三上學(xué)期1月期末 英語試題
- 春節(jié)節(jié)后收心會(huì)
- 《榜樣9》觀后感心得體會(huì)四
- 七年級(jí)下冊(cè)英語單詞表(人教版)-418個(gè)
- 水上水下作業(yè)應(yīng)急預(yù)案
- Jane-Eyre簡愛英文課件
- (小學(xué))人教版一年級(jí)下冊(cè)數(shù)學(xué)《認(rèn)識(shí)鐘表》課件
- 2022年?duì)I口市大學(xué)生專考專招考試真題及答案
- API520-安全閥計(jì)算PART1(中文版)
- 商務(wù)提成辦法
評(píng)論
0/150
提交評(píng)論