subject_23485.htm
来自「一些关于vc的问答」· HTM 代码 · 共 30 行
HTM
30 行
<p>
序号:23485 发表者:花落花开 发表日期:2002-12-04 15:28:56
<br>主题:谁能帮忙解释一下以下代码为什么不能执行
<br>内容: PAGESETUPDLG ps;<BR> memset(&ps,'\0',sizeof(PAGESETUPDLG));<BR> ps.lStructSize =sizeof(PAGESETUPDLG);<BR> ps.Flags =PSD_RETURNDEFAULT;<BR> TCHAR szPrinterName[_MAX_PATH];<BR> DEVMODE *pDM=(DEVMODE*)GlobalLock(ps.hDevMode );<BR> strcpy(szPrinterName,(char*)pDM->dmDeviceName );<BR> PRINTDLG print;<BR> memset(&print,'\0',sizeof(PRINTDLG));<BR> print.lStructSize =sizeof(PRINTDLG);<BR> print.hDC =CreateDC(NULL,szPrinterName,NULL,NULL);<BR> CFont HeadFont;<BR> HeadFont.CreatePointFont (240,"宋体",m_pDC);<BR> SelectObject(print.hDC ,HeadFont);<BR> TextOut(print.hDC ,100,200,szPrinterName,strlen(szPrinterName));<BR> DeleteDC(print.hDC );<BR>哪位高手能指点一下以上代码为什么不能执行呀,编译可以通过,但是执行说执行了非法操作,谢谢!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:凯凯 回复日期:2002-12-04 15:37:17
<br>内容:这句之前ps.hDevMode还没有内容呢<BR>DEVMODE *pDM=(DEVMODE*)GlobalLock(ps.hDevMode );<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:花落花开 回复日期:2002-12-05 08:46:40
<br>内容:我在DEVMODE *pDM=(DEVMODE*)GlobalLock(ps.hDevMode );这局前面加上 PageSetupDlg(&ps);,编译时不出现非法操作,但是为什么打印机不能输出我的内容呀<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:凯凯 回复日期:2002-12-05 09:41:16
<br>内容:自己看看MSDN吧,上面说得很详细。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:花落花开 回复日期:2002-12-05 10:58:10
<br>内容:好的,我找到了一篇关于打印技术的文章,供大家参考吧,我的问题已经解决了,因为初接触VC,以后还希望多多指教<BR>char szprinter[80];<BR>char *szDevice,*szDriver,*szOutput;<BR>HDC hdcprint; // 定义一个设备环境句柄<BR><BR>static DOCINFO di={sizeof(DOCINFO),"printer",NULL}; <BR>GetProfileString("windows","device",",,,",szprinter,80); <BR>// 将设备字符串分解<BR>if(NULL!=(szDevice=strtok(szprinter,","))&&<BR>NULL!=(szDriver=strtok(NULL,","))&&<BR>NULL!=(szOutput=strtok(NULL,",")))<BR>// 创建一个打印机设备句柄 <BR>if((hdcprint=CreateDC(szDriver,szDevice,szOutput,NULL))!=0)<BR>{<BR>if(StartDoc(hdcprint,&di)>0) //开始执行一个打印作业<BR>{ <BR>StartPage(hdcprint); //打印机走纸,开始打印<BR>SaveDC(hdcprint); //保存打印机设备句柄<BR>// 输出一行文字<BR>TextOut(hdcprint,1,1,"这是一个例子",12); <BR>// 输出一条直线<BR>MoveToEx(hdcprint,0,120,NULL);<BR>LineTo(hdcprint,120,120);<BR><BR>RestoreDC(hdcprint,-1); //恢复打印机设备句柄<BR>EndPage(hdcprint); //打印机停纸,停止打印<BR>EndDoc(hdcprint); //结束一个打印作业<BR>MessageBox("打印完毕!","提示",MB_ICONINFORMATION);<BR>}<BR>// 用API函数DeleteDC销毁一个打印机设备句柄 <BR>DeleteDC(hdcprint);<BR>}<BR><BR>else<BR><BR>{<BR>MessageBox("没有默认打印机,或者没有安装打印机!");<BR>return;<BR>}<BR><BR>char szprinter[80];<BR>char *szDevice,*szDriver,*szOutput;<BR>HDC hdcprint; // 定义一个设备环境句柄<BR><BR>static DOCINFO di={sizeof(DOCINFO),"printer",NULL}; <BR>GetProfileString("windows","device",",,,",szprinter,80); <BR>// 将设备字符串分解<BR>if(NULL!=(szDevice=strtok(szprinter,","))&&<BR>NULL!=(szDriver=strtok(NULL,","))&&<BR>NULL!=(szOutput=strtok(NULL,",")))<BR>// 创建一个打印机设备句柄 <BR>if((hdcprint=CreateDC(szDriver,szDevice,szOutput,NULL))!=0)<BR>{<BR>if(StartDoc(hdcprint,&di)>0) //开始执行一个打印作业<BR>{ <BR>StartPage(hdcprint); //打印机走纸,开始打印<BR>SaveDC(hdcprint); //保存打印机设备句柄<BR>// 输出一行文字<BR>TextOut(hdcprint,1,1,"这是一个例子",12); <BR>// 输出一条直线<BR>MoveToEx(hdcprint,0,120,NULL);<BR>LineTo(hdcprint,120,120);<BR><BR>RestoreDC(hdcprint,-1); //恢复打印机设备句柄<BR>EndPage(hdcprint); //打印机停纸,停止打印<BR>EndDoc(hdcprint); //结束一个打印作业<BR>MessageBox("打印完毕!","提示",MB_ICONINFORMATION);<BR>}<BR>// 用API函数DeleteDC销毁一个打印机设备句柄 <BR>DeleteDC(hdcprint);<BR>}<BR><BR>else<BR><BR>{<BR>MessageBox("没有默认打印机,或者没有安装打印机!");<BR>return;<BR>}<BR><BR>char szprinter[80];<BR>char *szDevice,*szDriver,*szOutput;<BR>HDC hdcprint; // 定义一个设备环境句柄<BR><BR>static DOCINFO di={sizeof(DOCINFO),"printer",NULL}; <BR>GetProfileString("windows","device",",,,",szprinter,80); <BR>// 将设备字符串分解<BR>if(NULL!=(szDevice=strtok(szprinter,","))&&<BR>NULL!=(szDriver=strtok(NULL,","))&&<BR>NULL!=(szOutput=strtok(NULL,",")))<BR>// 创建一个打印机设备句柄 <BR>if((hdcprint=CreateDC(szDriver,szDevice,szOutput,NULL))!=0)<BR>{<BR>if(StartDoc(hdcprint,&di)>0) //开始执行一个打印作业<BR>{ <BR>StartPage(hdcprint); //打印机走纸,开始打印<BR>SaveDC(hdcprint); //保存打印机设备句柄<BR>// 输出一行文字<BR>TextOut(hdcprint,1,1,"这是一个例子",12); <BR>// 输出一条直线<BR>MoveToEx(hdcprint,0,120,NULL);<BR>LineTo(hdcprint,120,120);<BR><BR>RestoreDC(hdcprint,-1); //恢复打印机设备句柄<BR>EndPage(hdcprint); //打印机停纸,停止打印<BR>EndDoc(hdcprint); //结束一个打印作业<BR>MessageBox("打印完毕!","提示",MB_ICONINFORMATION);<BR>}<BR>// 用API函数DeleteDC销毁一个打印机设备句柄 <BR>DeleteDC(hdcprint);<BR>}<BR><BR>else<BR><BR>{<BR>MessageBox("没有默认打印机,或者没有安装打印机!");<BR>return;<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?