• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > VC打印问题,请高手赐教,一定给分

VC打印问题,请高手赐教,一定给分

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了方位角 请高手赐教,wj vc旺角高手解料,全职高手vc,vc6.0兼容性问题,vc6.0兼容性问题win8等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: VC打印问题,请高手赐教,一定给分
描述:

请问我改怎么自定义打印纸张大小,就是在打印预览的时候可以看到我设置好的纸张大小,例如我设置的纸张是(500 X 500),那么就可以看到一个正方形的打印预览图,并且打印也会按照我设置的大小打印
最好是有源码相送(sgzou@newsky.com.cn)


解决方案1:

我这里测试通过的一段代码,你给放到 C****App::InitInstance()的最后测试一下
PRINTDLG pd;
pd.lStructSize=(DWORD)sizeof(PRINTDLG);
BOOL bRet=AfxGetApp()->GetPrinterDeviceDefaults(&pd);
if(bRet)
{
// protect memory handle with ::GlobalLock and ::GlobalUnlock
DEVMODE FAR *pDevMode=(DEVMODE FAR *)::GlobalLock(pd.hDevMode);
pDevMode->dmFields|=DM_PAPERSIZE;
pDevMode->dmFields|=DM_PAPERLENGTH;
pDevMode->dmFields|=DM_PAPERWIDTH;
// pDevMode->dmOrientation=2;   
pDevMode->dmPaperSize=0;
pDevMode->dmPaperLength=2000;
pDevMode->dmPaperWidth=2000;
::GlobalUnlock(pd.hDevMode);
}

解决方案2:

greensofter(勇敢一点) 
你的方式只是设置DC范围,不是设置纸张大小啊

解决方案3:

忘掉一句,使用自定义纸张,必须设置pDevMode->dmPaperSize=0;

解决方案4:

看一下这些代码,主要是
DEVMODE FAR *pDevMode=(DEVMODE FAR *)::GlobalLock(dlg.m_pd.hDevMode);
pDevMode->dmPaperLength=5000;
pDevMode->dmPaperWidth=5000;
::GlobalUnlock(dlg.m_pd.hDevMode);
void PrintTest()
{
CPrintDialog dlg(FALSE, PD_ALLPAGES | PD_COLLATE | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE);
if(dlg.GetDefaults())
{
DEVMODE FAR *pDevMode=(DEVMODE FAR *)::GlobalLock(dlg.m_pd.hDevMode);
pDevMode->dmPaperLength=5000;
pDevMode->dmPaperWidth=5000;
::GlobalUnlock(dlg.m_pd.hDevMode);
DOCINFO di;
memset( &di, 0, sizeof(DOCINFO) );
di.cbSize = sizeof(DOCINFO); 
di.lpszDocName = "Printing Test"; 
di.lpszOutput = (LPTSTR) NULL; 
di.fwType = 0; 
HDC hDC=dlg.CreatePrinterDC();
CDC dc;
dc.Attach(hDC);
dc.StartDoc(&di); 
dc.StartPage(); 
dc.MoveTo(0,0);
dc.LineTo(1000,1000);
dc.EndPage(); 
dc.EndDoc();  
dc.DeleteDC(); 
}
}


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 高手请赐教:为什么服务里面创建Socket老是出错?
  • RichEdit中插入Gif动画的几个问题情高手赐教----网上等
  • 关于COM高手们请赐教!
  • 跪求高手赐教
  • 高手赐教!!!IDL文件中如何使用自定义的编译选项?
  • 急、急!!求高手赐教,怎样用MFC自动登录网页
  • 如何用CSocket类来实现多线程?问题祥尽,请高手赐教
  • 高手赐教:dll中如何使用soket??(有分)
  • 如何在两个进程之间共享一个对象?高手赐教!!!!进者有分!
  • 请高手解释一下这个创建进程的方法?

相关文章

  • 2017-06-04 ATL-复合控件的子控件,子控件的消息处理函数里面发现子控件的所有成员变量全部被清NULL了,这是为什么??--难!!!
  • 2017-06-04 关于ActiveX的旷世难题,高手请进,在线急等之,解决不了一直发帖
  • 2017-06-05 视频解码设计,急啊
  • 2017-06-04 请问哪里有关于ATL属性页制作的教程?
  • 2017-06-04 多线程使用变量的问题
  • 2017-06-04 组件中如何使用union结构?
  • 2017-06-05 第一次写DLL想问些菜问题
  • 2017-06-05 dll返回值的问题。急,在线等。
  • 2017-06-05 借别人的号问问题:什么是调试程序?
  • 2017-06-05 lionel来领分吧

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 新建线程无法进行数据库操作
    • 求IE工具条插件定制开发
    • 怎样把接口返回的_variant_t结果转换成自己的类对象?
    • ActiveX高手请进
    • 我想在createcontrol一个控件之后。动态销毁它,可是有点问题。。。
    • 关于多线程的几个问题,随时加分
    • MFCADO远程连接SQL2008数据库
    • 内存分配及泄漏问题,100分,不够再加
    • 想跟踪分析一个商品软件的DLL,如何在VC中设置断点在被装载时的DLL入口出停住?
    • AfxBeginThread启动一个线程时,传入一局部变量可以吗

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有