社区
界面
帖子详情
单文档下的对话框打印预览
huajuehan
2009-10-20 10:40:03
比如我建立了一个单文档,然后在单文档程序下又建立了一个对话框(单击单文档上的某个菜单可以弹出这个对话框),对话框上我又建了一个按钮,我想让这个按钮执行单文档框架上的打印预览功能,该如何实现呢??
有没有具体的实现方法?麻烦写详细一点!
...全文
145
20
打赏
收藏
单文档下的对话框打印预览
比如我建立了一个单文档,然后在单文档程序下又建立了一个对话框(单击单文档上的某个菜单可以弹出这个对话框),对话框上我又建了一个按钮,我想让这个按钮执行单文档框架上的打印预览功能,该如何实现呢?? 有没有具体的实现方法?麻烦写详细一点!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
向立天
2009-10-26
打赏
举报
回复
打出来什么样?
huajuehan
2009-10-25
打赏
举报
回复
我绘的报表是人家公司要求的版面,我觉得可能是我在选择坐标时出了问题!
huajuehan
2009-10-25
打赏
举报
回复
帮忙看看我编的这个程序为什么不能实现打印预览与计算机无关,我的打印处理都放在虚拟的CVIEW里
void CPrintView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
CView::OnBeginPrinting(pDC, pInfo);
CPrintFrame *pFrame =(CPrintFrame *)GetParent();
pFrame->m_pCallerDlg->SendMessage(WM_BEGIN_PRINTING,(WPARAM) pDC, (LPARAM) pInfo);
printx=pDC->GetDeviceCaps(LOGPIXELSX);
printy=pDC->GetDeviceCaps(LOGPIXELSY);
ratex=(double)printx/screenx; //确定打印机与屏幕的比例
ratey=(double)printy/screeny;
pageheight=pDC->GetDeviceCaps(VERTRES);
pagewidth=pDC->GetDeviceCaps(HORZRES);
//获取打印机的左右边距
leftmargin=pDC->GetDeviceCaps(PHYSICALOFFSETX); //获取左边距
int phywidth=pDC->GetDeviceCaps(PHYSICALWIDTH);
rightmargin=phywidth-pagewidth-leftmargin;
}
void CPrintView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
CView::OnEndPrinting(pDC, pInfo);
CPrintFrame *pFrame =(CPrintFrame *)GetParent();
pFrame->m_pCallerDlg->SendMessage(WM_END_PRINTING,(WPARAM) pDC, (LPARAM) pInfo);
if(m_bPrint) //直接打印,不是预览
GetParent()->DestroyWindow();
}
void CPrintView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
CPrintFrame *pFrame =(CPrintFrame *)GetParent();
pFrame->m_pCallerDlg->SendMessage(WM_MY_PRINT,(WPARAM) pDC, (LPARAM) pInfo) ;
titlefont.CreatePointFont(200,_T("宋体"),pDC);
bodyfont.CreatePointFont(120,_T("宋体"),pDC);
screenx=pDC->GetDeviceCaps(LOGPIXELSX);
screeny=pDC->GetDeviceCaps(LOGPIXELSY);
CRect temprect(-leftmargin+900,1300,pagewidth+rightmargin,pageheight);
temprect.DeflateRect(0,(int)(ratey*20),0,0);
pDC->SelectObject(&bodyfont);
pDC->DrawText("制造数量及编号",temprect,DT_LEFT);
temprect.DeflateRect(0,550,0,0);
pDC->DrawText("产品数量:",temprect,DT_LEFT);
temprect.DeflateRect(0,600,0,0);
pDC->DrawText("编号:",temprect,DT_LEFT);
temprect.DeflateRect(0,1850,0,0);
pDC->DrawText("供货数量及编号",temprect,DT_LEFT);
temprect.DeflateRect(0,580,0,0);
pDC->DrawText("供货数量:",temprect,DT_LEFT);
temprect.DeflateRect(0,650,0,0);
pDC->DrawText("编号:",temprect,DT_LEFT);
temprect.DeflateRect(7000,-4300,0,0);
pDC->DrawText("Q/DAEPMR15-01",temprect,DT_LEFT);
temprect.DeflateRect(3000,0,0,0);
pDC->DrawText("上海华理安全装备有限公司",temprect,DT_LEFT);
temprect.DeflateRect(0,1000,0,0);
pDC->DrawText("编号:NO",temprect,DT_LEFT);
pDC->SelectObject(&titlefont);
temprect.DeflateRect(-1700,2000,0,0);
pDC->DrawText("爆破片质量证明书",temprect,DT_LEFT);
pDC->SelectObject(&bodyfont);
temprect.DeflateRect(-300,3500,0,0);
pDC->DrawText("上 海 华 理 安 全 装 备 有 限 公 司",temprect,DT_LEFT);
/*CRect m_rect(900,1300,pagewidth+rightmargin,pageheight);
m_rect.DeflateRect(0,((double)20*ratey),0,0);
pDC->DrawText("fdsd",m_rect,DT_CENTER|DT_SINGLELINE);*/
//绘制横线
pDC->MoveTo(800,1200);
pDC->LineTo(6800,1200);
pDC->MoveTo(800,1700);
pDC->LineTo(6800,1700);
pDC->MoveTo(800,2200);
pDC->LineTo(6800,2200);
pDC->MoveTo(800,4200);
pDC->LineTo(6800,4200);
pDC->MoveTo(800,4700);
pDC->LineTo(6800,4700);
pDC->MoveTo(800,5200);
pDC->LineTo(6800,5200);
pDC->MoveTo(800,8200);
pDC->LineTo(6800,8200);
pDC->MoveTo(11800,2450);
pDC->LineTo(13000,2450);
//绘制竖线
pDC->MoveTo(800,1200);
pDC->LineTo(800,8200);
pDC->MoveTo(6800,1200);
pDC->LineTo(6800,8200);
}
huajuehan
2009-10-25
打赏
举报
回复
huajuehan
2009-10-22
打赏
举报
回复
还有一个问题,这种基于虚拟框架和视图类的打印预览,在不同的显示分辨率下,我在画图表时,会不会有影响!
向立天
2009-10-22
打赏
举报
回复
法过去了
注意查收
huajuehan
2009-10-22
打赏
举报
回复
wanghongpeng2@126.com 谢谢啦!就靠你了!
向立天
2009-10-22
打赏
举报
回复
打印无非就是把要画的东西在打印的设备DC上重画一遍
即便是单文档已经封装的打印预览要想实现你要求得打印效果也得重载相关函数
你既然已经基于对话框实现了打印预览的功能
那就把要打印的DC获取
自己画就好了
huajuehan
2009-10-22
打赏
举报
回复
那你能不能帮帮忙,给点具体实现的方法。
我现在新建了一个虚拟框架类,和虚拟视图类是可以实现功能,但我想通过调用单文档已经封装的打印预览来实现,不知道你能不能给点指点,具体怎么实现?
向立天
2009-10-22
打赏
举报
回复
这样吧
你留个油箱
我给你一个例子
我实现的比较简单
希望对你有帮助
huajuehan
2009-10-22
打赏
举报
回复
麻烦做过这个,和会做的高手指点!
向立天
2009-10-22
打赏
举报
回复
[Quote=引用 6 楼 huajuehan 的回复:]
我在视图类下添加消息响应
ON_MESSAGE(WM_MY_MESSAGE, CView::OnFilePrintPreview)
在我的打印对话框下添加
CMainFrame* pMF=(CMainFrame*)AfxGetApp()->m_pMainWnd; //先通过获取当前框架指针
CView * active = pMF->GetActiveView();//才能获取当前视类指针
if(active != NULL) //获取了当前视类指针才能发送消息
active->PostMessage(WM_MY_MESSAGE,0,0); //使用PostMessage发送消息
但是打印预览窗口是出来了,就是这个窗口没有处于活动状态,工具栏上的选项都灰色不能用!
[/Quote]
没有初始话吧
打印预览窗口的功能是封装好的
在对话框下实现打印预览步骤是比较繁琐的
不是简单几句代码就能解决的
huajuehan
2009-10-22
打赏
举报
回复
我在视图类下添加消息响应
ON_MESSAGE(WM_MY_MESSAGE, CView::OnFilePrintPreview)
在我的打印对话框下添加
CMainFrame* pMF=(CMainFrame*)AfxGetApp()->m_pMainWnd; //先通过获取当前框架指针
CView * active = pMF->GetActiveView();//才能获取当前视类指针
if(active != NULL) //获取了当前视类指针才能发送消息
active->PostMessage(WM_MY_MESSAGE,0,0); //使用PostMessage发送消息
但是打印预览窗口是出来了,就是这个窗口没有处于活动状态,工具栏上的选项都灰色不能用!
向立天
2009-10-22
打赏
举报
回复
[Quote=引用 4 楼 huajuehan 的回复:]
不知道有没有方法直接在对话框里调用视图类下的打印预览!
[/Quote]
这个是可以的
网上有例子
你搜一下就有了
huajuehan
2009-10-22
打赏
举报
回复
不知道有没有方法直接在对话框里调用视图类下的打印预览!
huajuehan
2009-10-22
打赏
举报
回复
因为我要根据对话框的选项选择不同的打印预览,对话框上有很多单选按钮,点击不同的单选按钮就能够预览不同的打印。还请高手帮帮忙,已经搞了很久,还没有搞出来!
zhuweiping2003
2009-10-22
打赏
举报
回复
UP
向立天
2009-10-22
打赏
举报
回复
[Quote=引用 14 楼 huajuehan 的回复:]
还有一个问题,这种基于虚拟框架和视图类的打印预览,在不同的显示分辨率下,我在画图表时,会不会有影响!
[/Quote]
不会的
所谓虚拟框架和视图类是针对对话框说的
其实他们都具有框架和视图类的全部功能
而且画图时要根据打印机的设置调整分辨率
与屏幕分辨率没关系
xmrforever
2009-10-20
打赏
举报
回复
SDI不是有打印预览吗
向立天
2009-10-20
打赏
举报
回复
为什么要这么做呢?
可能会比较麻烦
MFC
对话框
打印
预览
实现
利用MFC实现
对话框
内容的
打印
和
预览
,具体请看本文步骤。
VC++
对话框
程序
打印
及
打印
预览
MFC
文档
/视图的应用程序,向导给了
打印
及
打印
预览
的标准支持。使这类应用程序
打印
及
打印
预览
工作得以简化。另一类
对话框
程序却没有相应支持,从MFC
打印
及
打印
预览
的标准支持入手,可以在
对话框
程序中,增加三个类以...
Excel
文档
基础库 Excelize 教程
本教程通过视频形式讲解 Go 语言使用 Excelize 处理电子表格
文档
的具体方式。 Excelize 是 Go 语言编写的用于操作 Office Excel
文档
基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 ...
VS2017 MFC
对话框
程序
打印
及
打印
预览
的实现程序
研究了网上大量的MFC
对话框
打印
及
打印
预览
功能的demo之后,网上现有的版本都比较旧,所以选中了几个版本,合并修改,得到这个比较完美的最新版本,编译无错,成功运行。
在
对话框
中实现
打印
预览
并实现
打印
窗口内容的例子
实现了在
对话框
中添加MFC
文档
视图结构的
打印
预览
功能,并实现了窗口内容的
打印
输出。 编译环境:VS2005
界面
15,979
社区成员
115,897
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章