对话框使用CPrintDialog类,卡死

QingMFC 2019-03-17 02:50:46
void CPrintfFileTextDlg::OnBnClickedButton1()
{
CPrintDialog printDlg(FALSE);
//获取默认打印属性,不显示打印窗口
//printDlg.GetDefaults();
//或从用户处获取
if (printDlg.DoModal() == IDCANCEL)
return;
CDC dc;
if (!dc.Attach(printDlg.GetPrinterDC()))
{
MessageBox(_T("没有找到打印机!"),_T("提示"));
return;
}
dc.m_bPrinting = TRUE;
DOCINFO di;
//初始化打印文档详细信息
::ZeroMemory (&di, sizeof (DOCINFO));
di.cbSize = sizeof (DOCINFO);
di.lpszDocName = _T("标签打印");
BOOL bPrintingOK = dc.StartDoc(&di); // 开始新的打印作业
//获取打印范围 并存储在 CPrintInfo 对象
CPrintInfo Info;
Info.SetMaxPage(1); // 只有一页//获取所有像素数
int maxw = dc.GetDeviceCaps(HORZRES);
int maxh = dc.GetDeviceCaps(VERTRES);
//设置纸张打印大小
Info.m_rectDraw.SetRect(0, 0, maxw, maxh);
//
for (UINT page = Info.GetMinPage(); page <= Info.GetMaxPage() &&
bPrintingOK; page++)
{
dc.StartPage(); //开始新页面
Info.m_nCurPage = page;
CImage Img;
Img.Load(_T("d://22.png"));
HBITMAP hBitm;
hBitm=Img.Detach();//分离位图句柄
CBitmap bitmap;
bitmap.Attach(hBitm);//附加位图句柄
BITMAP bm;
bitmap.GetBitmap(&bm);
int w = bm.bmWidth;
int h = bm.bmHeight;
//创建内存设备上下文
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap *pBmp = memDC.SelectObject(&bitmap);
memDC.SetMapMode(dc.GetMapMode());
dc.SetStretchBltMode(HALFTONE);
//现在拉伸到页面的最大宽度
dc.StretchBlt(0, 0, maxw, maxh, &memDC, 0, 0, w, h, SRCCOPY);
// 清理
memDC.SelectObject(pBmp);
bPrintingOK = (dc.EndPage() > 0); // 结束页
}
if(bPrintingOK)
dc.EndDoc(); // 结束打印作业
else
dc.AbortDoc(); //中止卡

在开始打印作业那里,VS都卡崩了,急,怎么解决
...全文
212 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2019-04-02
  • 打赏
  • 举报
回复
CDC::EndPage Return Value Greater than or equal to 0 if successful; bPrintingOK = (dc.EndPage() >= 0); // 结束页
第1章 概述 1.1 MFC与C++ 1.2 VC++组件 1.3 安装 1.3.1 环境 1.3.2 安装过程 第2章 开发环境 2.1 主窗口 2.2 工具栏 2.2.1 Shaod工具栏 2.2.2 Build Mini-bar工具栏 2.3 菜单栏 2.3.1 File菜单 2.3.2 Edit菜单 2.3.3 View菜单 2.3.4 tasert菜单 2.3.5 Project菜单 2.3.6 Build菜单 2.3.7 Tools菜单 2.3.8 Window菜单 2. 3.9 Help菜单 2.4 工程工作区和主工作区 2.4.1 CtassView面板 2.4.2 FileView面板 2.4.3 ResourceView面板 2.4.4 主工作区 2.5 资源和资源编辑器 2.5.1 加速键编辑器 2.5.2 对话框编辑器 2.5.3 图形编辑器 2.5.4 菜单编辑器 2.5.5 字符串表编辑器 2.5.6 工具栏编辑器 2.6 版本信息编辑器 第 3章从 AppWisard开始 3.1 应用程序型 3.2 创建简单的Windows应用程序 3.3 AppWizard——生成结果 3.3.1 分 3.3.2 传递和接收 3.3.3 处理 3.4 实例 第4章 对话框及控件 4.1 对话框 4.1.1 组成与分 4.1.2 CDiaiog 4.1.3 创建对话框 4.1.4 通用对话框 4.2 控件 4.2.1 标准Windows控件 4.2.2 其他控件 4.3 创建基于对话框的应用程序 4.4 控件栏 4.4.1 工具栏 4.4.2 状态栏 4.4.3 对话框栏 4.5 属性单、属性页和向导 4.5.1 CPropertyPage 4.5.2 CPropertySheet 4.5.3 创建属性单 4.5.4 创建向导 4.6 实例 第5章 文档和视 5.1 文档 5.2 文档模板 5.3 视 5.4 文档/视结构 5.5 菜单和加速键 5.5.1 菜单 5.5.2 添加消息处理函数 5.5.3 CMenu 5.5.4 创建快捷菜单 5.5.5 添加加速键 5.6 实例 第6章 图形处理 6.1 设备环境 6.1.1 图形设备接口 6.1.2 设备环境映射模式 6.2 设备环境 6.2.1 基CDC 6.2.2 用CPaintDC绘图 6.2.3 用CClientDC管理客户区 6.2.4 用CWindowDC管理框架窗口 6.2.5 具有CMetaFileDC的Windows元文件 6.3 GDI对象 6.3.1 型 6.3.2 构造 6.3.3 选择 6.3.4 表示和使用颜色 6.4 画笔 6.4.1 分 6.4.2 创建CPen对象 6.4.3 选择堆画笔 6.4.4 绘画 6.4.5 实例 6.5 画刷 6.5.1 分 6.5.2 创建CBrush对象 6.5.3 使用逻辑画刷 6.5.4 实例 6.6 字
第1章 概述 1.1 MFC与C++ 1.2 VC++组件 1.3 安装 1.3.1 环境 1.3.2 安装过程 第2章 开发环境 2.1 主窗口 2.2 工具栏 2.2.1 Shaod工具栏 2.2.2 Build Mini-bar工具栏 2.3 菜单栏 2.3.1 File菜单 2.3.2 Edit菜单 2.3.3 View菜单 2.3.4 tasert菜单 2.3.5 Project菜单 2.3.6 Build菜单 2.3.7 Tools菜单 2.3.8 Window菜单 2. 3.9 Help菜单 2.4 工程工作区和主工作区 2.4.1 CtassView面板 2.4.2 FileView面板 2.4.3 ResourceView面板 2.4.4 主工作区 2.5 资源和资源编辑器 2.5.1 加速键编辑器 2.5.2 对话框编辑器 2.5.3 图形编辑器 2.5.4 菜单编辑器 2.5.5 字符串表编辑器 2.5.6 工具栏编辑器 2.6 版本信息编辑器 第 3章从 AppWisard开始 3.1 应用程序型 3.2 创建简单的Windows应用程序 3.3 AppWizard——生成结果 3.3.1 分 3.3.2 传递和接收 3.3.3 处理 3.4 实例 第4章 对话框及控件 4.1 对话框 4.1.1 组成与分 4.1.2 CDiaiog 4.1.3 创建对话框 4.1.4 通用对话框 4.2 控件 4.2.1 标准Windows控件 4.2.2 其他控件 4.3 创建基于对话框的应用程序 4.4 控件栏 4.4.1 工具栏 4.4.2 状态栏 4.4.3 对话框栏 4.5 属性单、属性页和向导 4.5.1 CPropertyPage 4.5.2 CPropertySheet 4.5.3 创建属性单 4.5.4 创建向导 4.6 实例 第5章 文档和视 5.1 文档 5.2 文档模板 5.3 视 5.4 文档/视结构 5.5 菜单和加速键 5.5.1 菜单 5.5.2 添加消息处理函数 5.5.3 CMenu 5.5.4 创建快捷菜单 5.5.5 添加加速键 5.6 实例 第6章 图形处理 6.1 设备环境 6.1.1 图形设备接口 6.1.2 设备环境映射模式 6.2 设备环境 6.2.1 基CDC 6.2.2 用CPaintDC绘图 6.2.3 用CClientDC管理客户区 6.2.4 用CWindowDC管理框架窗口 6.2.5 具有CMetaFileDC的Windows元文件 6.3 GDI对象 6.3.1 型 6.3.2 构造 6.3.3 选择 6.3.4 表示和使用颜色 6.4 画笔 6.4.1 分 6.4.2 创建CPen对象 6.4.3 选择堆画笔 6.4.4 绘画 6.4.5 实例 6.5 画刷 6.5.1 分 6.5.2 创建CBrush对象 6.5.3 使用逻辑画刷 6.5.4 实例 6.6 字

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧