不惜重金,请教打印高手
各位大虾:
我在做打印程序时遇到了一个问题,代码如下:
出现的问题是运行到标识的一步时,弹出出错对话框三个按钮的那种,终止,重试,取消
LRESULT CShenjianView::OnMyPrint(WPARAM a,LPARAM b)
{
CDC dc;
PRINTDLG pd;
LPDEVMODE lpDevMode;
CPrintDialog printDlg(FALSE);
if(AfxGetApp()->GetPrinterDeviceDefaults(&pd))
{
lpDevMode=(LPDEVMODE)pd.hDevMode;
lpDevMode->dmPaperLength=1500;
lpDevMode->dmPaperWidth=1100;
}
printDlg.m_pd.hDevMode=pd.hDevMode;
dc.Attach(printDlg.GetPrinterDC());
dc.m_bPrinting = TRUE;
CString strTitle;
strTitle="您当前打印的是生检质量";
DOCINFO di;
::ZeroMemory (&di, sizeof (DOCINFO));
di.cbSize = sizeof (DOCINFO);
di.lpszDocName = strTitle;
BOOL bPrintingOK = dc.StartDoc(&di); //运行到这一步时有问题
CPrintInfo Info;
OnBeginPrinting(&dc, &Info);
for (UINT page = Info.GetMinPage();
page <= Info.GetMaxPage() && bPrintingOK;
page++)
{
dc.StartPage();
Info.m_nCurPage = page;
int sty;
sty=Stpoint(m_pSet);
PrintBiaotou(&dc,sty);
bPrintingOK = (dc.EndPage() > 0);
}
OnEndPrinting(&dc, &Info);
if (bPrintingOK)
dc.EndDoc();
else
dc.AbortDoc();
dc.Detach();
return 1;
}
问题点数:100、回复次数:17Top
1 楼kingcaiyao(aking)回复于 2002-04-04 10:17:09 得分 0
是不是打印机的问题啊?Top
2 楼jiangsheng(蒋晟.Net[MVP])回复于 2002-04-04 10:24:59 得分 0
HOWTO: Implement a View-Based Default Printer in Microsoft Foundation Classes
Q193103
--------------------------------------------------------------------------------
The information in this article applies to:
The Microsoft Foundation Classes (MFC), used with:
Microsoft Visual C++, 32-bit Editions, versions 5.0, 6.0
--------------------------------------------------------------------------------
SUMMARY
You may sometimes want the "default" printer for your MFC application to be other than the actual system-defined default printer. This article shows how you can:
Retrieve the system default printer.
Define your own application default printer based on the current view.
Modify the settings for this default printer.
Properly use the MFC CPrintDialog class to allow the user to override your application's default printer settings.
Top
3 楼xhtwtpdc(余龙)回复于 2002-04-04 11:01:00 得分 0
to AKing
我的打印机绝对没有问题,因为我如果不自定义纸张大小,让用自定义,是可以打印的。Top
4 楼xhtwtpdc(余龙)回复于 2002-04-04 11:13:28 得分 0
to jiangsheng
谢谢你回我的贴子,不过我的打印程序是自定义的,不是基于视结构的,我做了
一个菜单……
现在的问题是我怎么样的自定义纸张大小。在哪里定义才有效?
Top
5 楼panda_w(好想睡啊!)回复于 2002-04-04 13:03:23 得分 0
自定义纸张也需要标准的大小,纸张以及其他的打印信息在DEVMODE结构中设置Top
6 楼panda_w(好想睡啊!)回复于 2002-04-04 13:05:34 得分 0
参考MSDN
typedef struct _devicemode {
..........
union {
struct {
short dmOrientation;
short dmPaperSize;
short dmPaperLength;
short dmPaperWidth;
};
..........
} DEVMODE;
Top
7 楼xhtwtpdc(余龙)回复于 2002-04-04 13:08:26 得分 0
to panda_w
我现在用的打印纸是那种老式的两边有孔的打印纸,应该是符合标准的吧,尺寸
是15'x11'Top
8 楼xhtwtpdc(余龙)回复于 2002-04-04 13:10:57 得分 0
to panda_w
定义了DEMODE后,怎样做,传给谁?谢谢你了!Top
9 楼panda_w(好想睡啊!)回复于 2002-04-04 13:21:42 得分 20
不如你看看这个吧
http://www.vckbase.com/faq/printing/2.htmTop
10 楼Haiwer(海阔天空)回复于 2002-04-04 13:29:15 得分 0
呵呵,这个不会,不好乱发短消息。Top
11 楼xhtwtpdc(余龙)回复于 2002-04-06 14:29:00 得分 0
我想自定义纸张大小(15'X11'),可是不知
dmPaperLength和dmPaperWidth应设为多少。要不要先设置SetMapMode()?Top
12 楼twtpdc(呢呢)回复于 2002-04-06 14:54:52 得分 0
up
Top
13 楼twtpdc(呢呢)回复于 2002-04-06 14:56:21 得分 0
up
Top
14 楼huqiming(Super)回复于 2002-04-10 12:20:54 得分 80
谢谢!!
常联系。Top
15 楼huqiming(Super)回复于 2002-04-10 12:22:05 得分 0
谢谢。
有问题常联系Top
16 楼huqiming(Super)回复于 2002-04-10 12:25:20 得分 0
MSDN的bug害死人那。
你老兄可以放松一下了。Top
17 楼ji_hui(我是谁)回复于 2002-04-10 12:48:13 得分 0
dmPaperLength和dmPaperWidth为
3810 X 2794Top
18 楼huqiming(Super)回复于 2002-04-10 15:29:47 得分 0
忘了近来了。
Thanks!Top




