分享
 
 
 

不用DOC/VIEW类结构进行打印

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

直接打印,不需要文档/视

闻怡洋 译 wyy_cq@188.net http://vchelp.163.net

This article was contributed by Chris Maunder.

如果你需要在没有使用文档/视图的应用中使用打印功能(比如说在对话框中)你将无法利用MFC提供的功能,而且对于某些新手来讲有些困难。 下面的的代码可以供你在对话框中如果在DOC/View中一样使用打印功能。你必须定义OnBeginPrinting, OnEndPrinting 和 OnPrint三个函数,其原型和功能与在VIEW中一样。

void CMyDialog::Print()

{

CDC dc;

CPrintDialog printDlg(FALSE);

//利用CPrintDialog 生成打印机设备环境

if (printDlg.DoModal() == IDCANCEL) // Get printer settings from user 让用户选择打印纸张等

return;

dc.Attach(printDlg.GetPrinterDC()); // Attach a printer DC 让HANDLE连接到dc上

dc.m_bPrinting = TRUE;

CString strTitle; // Get the application title ?

strTitle.LoadString(AFX_IDS_APP_TITLE);

DOCINFO di; // Initialise print document details DOCINFO中有相关的打印信息

::ZeroMemory (&di, sizeof (DOCINFO));

di.cbSize = sizeof (DOCINFO);

di.lpszDocName = strTitle;//设置标题

BOOL bPrintingOK = dc.StartDoc(&di); // Begin a new print job 开始打印

// Get the printing extents and store in the m_rectDraw field of a

// CPrintInfo object

CPrintInfo Info;//

Info.m_rectDraw.SetRect(0,0,

dc.GetDeviceCaps(HORZRES),

dc.GetDeviceCaps(VERTRES));//设置范围

OnBeginPrinting(&dc, &Info); // 调用你自己定义的初始化功能

for (UINT page = Info.GetMinPage(); page<Info.GetMaxPage()&& bPrintOK;page++)

{Info.m_nCurPage = page;

OnPrint(&dc, &Info); // Call your "Print page" function

bPrintingOK = (dc.EndPage() > 0); // end page

}

OnEndPrinting(&dc, &Info); // 结束打印

if (bPrintingOK)

dc.EndDoc(); // end a print job

else

dc.AbortDoc(); // abort job.

dc.Detach(); // detach the printer DC

}

[译者:其实在WINDOWS环境中是设备无关的。只要有了DC,你可以使用各种GDI函数,而不需要理会是在屏幕或是在打印机上绘图。在Windows3.X一般使用CreateDC创建打印环境,在WIN32下好象并不是很兼容,使用CPrintDialog产生打印DC是个不错的方法。你只要看看MFC的源代码就能搞清楚PrintDialog是怎么产生DC的了。 蓝色的代码是讲诉如何初始化打印的参数,而其他的参数你可以在OnBeginPrint中进行设置]

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有