MFC打印预览求教

coolcat_chen 2003-09-20 06:04:34
如何设置打印预览中文档的大小,那个预览显示好像就是A4纵向的样子
...全文
664 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
coolcat_chen 2003-09-24
  • 打赏
  • 举报
回复
这个是打印设置对话框里的设置吧,我想知道的是在预览里的效果,把纵向变为横向
bluebohe 2003-09-23
  • 打赏
  • 举报
回复
是不是这样子:
LPDEVMODE pMode=CPrintDialog::GetDevMode()得到设备模式指针
//通过以下语句改变横向纵向
pMode->dmOrientation=DMORIENT_PORTRAIT;
pMode->dmOrientation=DMORIENT_LANDSCAPE;

//pMode还可以改变纸张大小等等……你可以看一下DEVMODE的定义
coolcat_chen 2003-09-23
  • 打赏
  • 举报
回复
还有没有?
riverboat 2003-09-21
  • 打赏
  • 举报
回复
深入浅出MFC上好像有点例子吧。
Skt32 2003-09-21
  • 打赏
  • 举报
回复
MFC应用程序框架打印预览功能分析与扩展 详细信息 < 报表与打印 >

该代码演示了MFC程序打印与预览功能的扩展实现。

[代码性质] VC完整应用程序代码
[代码作者] 周京生
[文件大小] 50K
[更新日期] 2003-7-7 20:04:00
[下载次数] 1320
http://www.vckbase.com/code/downcode.asp?id=2023


对话框中使用打印/预览的演示代码--作者:hrx 详细信息 < 报表与打印 >

对话框中使用打印预览的演示程序这可是许多网友很希望得到的代码!

[代码性质] VC完整应用程序代码
[代码作者]
[文件大小] 58K
[更新日期] 2002-3-3 20:28:00
[下载次数] 5980
http://www.vckbase.com/code/downcode.asp?id=386
Skt32 2003-09-21
  • 打赏
  • 举报
回复
下载本文源代码 http://www.vckbase.com/code/downcode.asp?id=1471
Skt32 2003-09-21
  • 打赏
  • 举报
回复

::首页 >> 文档中心 >> 在线杂志 >> 报表与打印 [ 在线杂志 第13期 ]
文档 代码 工具

 [ 原创文档 本文适合中级读者 已阅读15699次 ]

个人考勤软件开发实例
作者:YangLanGuang

下载本文源代码

这个程序是一个个人考勤软件,它从系统时钟获取时间信息,只要上下班时按时在当日考勤栏内点击相应的栏目标题即可逐日记录下个人每天的工作时间,按月统计汇总,按年形成文件.可以随意查看过去的记录,也可把记录按月打印出来.在年汇总栏内可以选择要查看或打印的月份。 这个小程序是我的一个习作,希望与感兴趣的同好切磋交流。

本程序是一个基于对话框的实用程序,在基于对话框界面的程序中实现打印和打印预览是采用了非常规MFC方法。 基于对话框的程序原本是不含框架类CFrameWnd和视类CView对象的,为了实现打印和打印预览,需要在主对话框对象中创建子框架对象CChildFrame,再在子框架中创建子视类对象CChildView,打印和打印预览就在CChildView中完成。这部分内容基本上直接取自北京希望电子出版社出版的《Vsual C++ 编程高手》一书中的例18\05,但要把书中的主框架CMainFrm改为子框架CChildFrame而置于主对话框管理之下。

具体做法如下:
1.在创建应用程序实例的InitInstance()函数中创建我们的主对话框对象:

CAttendanceDlg dlg;
之后立即把这个对象的指针信息存入CWinApp::m_pMainWnd 和附加的m_pMiddle中备用: m_pMainWnd = &dlg;
m_pMiddle = &dlg;

2.在ClassWizard中为主对话框类导入OnCreate()函数,在其中创建子框架对象CChildFrame CChildFrame* pFrame = new CChildFrame;
m_pChildFrame = pFrame;
pFrame->LoadFrame(IDR_MAINFRAME,
WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL,//,m_pMainWnd
NULL);

暂时将其显示状态置为隐藏: m_pChildFrame->ShowWindow(SW_HIDE);

3.在子框架对象CChildFrame的OnCreate()函数中创建子视类对象CChildView CCreateContext context;
context.m_pNewViewClass = RUNTIME_CLASS(CChildView);
context.m_pCurrentFrame = this;
context.m_pCurrentDoc = NULL;
context.m_pLastView = NULL;

m_pView = STATIC_DOWNCAST(CChildView, CreateView(&context)); //CreateView(&context);
if(m_pView != NULL)
{
m_pView->ShowWindow(SW_HIDE);//暂时将其显示状态也置为隐藏
SetActiveView(m_pView);
}

4.在主对话框的打印或打印预览处理函数中只要向子框架CChildFrame发送相应的消息即可: 对于打印函数为: m_pChildFrame->SendMessage(WM_COMMAND, ID_FILE_PRINT);
或对于打印预览函数为: m_pChildFrame->ShowWindow(SW_SHOW);//将子框架CChildFrame显示状态置为显示
m_pChildFrame->SendMessage(WM_COMMAND, ID_FILE_PRINT_PREVIEW);//打印预览

5.在子框架CChildFrame的打印预览处理函数中需要将CWinApp::m_pMainWnd暂时替换为子框架CChildFrame的指针,并把子视类对象的显示状态激活后调用子视类对象的打印预览处理函数 CAttendanceApp* app=(CAttendanceApp*)AfxGetApp();
app->m_pMainWnd = this;//应用程序主窗口临时替换为子框架窗口
m_pView->ShowWindow(SW_SHOW);
SetActiveView(m_pView);
m_pView->OnFilePrintPreview(this);

6.打印预览结束退出之前必须恢复原有的显示状态,并将CWinApp::m_pMainWnd恢复为主对话框: pParent->ShowWindow(SW_HIDE);//将子框架CChildFrame显示状态重新置为隐藏
pParent->UpdateWindow();
CAttendanceApp* app=(CAttendanceApp*)AfxGetApp();
app->m_pMainWnd = app->m_pMiddle;//应用程序主窗口恢复为主对话框窗口
app->m_pMiddle->UpdateWindow();

这些后处理工作放在CWrapperView::OnEndPrintPreview(..)函数中的结尾处完成。

7.最后还要为子框架创建一个标识为IDR_MAINFRAME的菜单资源,其中只需要打印和打印预览两项即可。

8.打印的内容和页面布局都放在CChildView::OnDraw(CDC* pDC)函数中完成。

9.函数CAttendanceApp::SetPrntOrientation()是用来强制设定打印方向为纵向的,在打印或打印预览中先要调用它。如果要设为横向则只要把其中的 DMORIENT_PORTRAIT 替换为 DMORIENT_LANDSCAPE 即可 阅读以上说明请参照程序的源代码。





最新评论 [发表评论] [文章投稿] 查看所有评论 推荐给好友 打印

我想在对话框应用程序中放置一个按钮,点击后可以出现文档/视图结构中的自带的打印预览功能。并且如何加载我已经布局好的一页文档内容。
( wqlxl 发表于 2003-8-8 20:16:00)

我按照上面的方法写的程序不能正常的运行,在上面的第2步之后的代码不能正确的执行,谁知道怎样做

( nter 发表于 2003-5-31 1:02:00)

你好,这的确是个好例子,但分页时有一些问题,预览时下一页和缩小按钮都不能用,为什么,有没有好的方法解决?谢谢,期待者您的回答:nansi_1980@163.com ( liuzhencaptor 发表于 2003-2-14 13:51:00)

你好,我现在做的是一个人事管理软件,用的是ODBC
数据库是ACCESS,我现在只有打印没作了,能帮帮我吗?
谢了,我的邮箱是wangwenhong2003@163.net
( wangwenhong1000 发表于 2003-2-13 15:41:00)

YangLanGuang,你好!根据你的例子也做了一个在对话框打印程序,分页问题困扰好久,真诚感谢你能帮我一把!我的邮箱是yrf001@sina.com

张平留 ( yrf001 发表于 2003-1-15 13:34:00)

我希望找到“
非常好用,但是我现在是在一个基于单文档的应用程序,我想把打印按钮放在一个对话框(通过点击菜单项弹出来)窗口中,而且在我的主窗口中已经有了一个CFormView 类的视图,我不知道在这种情况下应该怎么实现?非常希望能够赐教一下!(EMail:lihengchao@263.net) ( 雪人 发表于 2002-4-13 23:10:00)”,因为我的问题和他一样。谁可以帮帮我。
( zhang865 发表于 2003-1-10 14:36:00)

最近看了这篇文章以及代码。
我最近也在做一个基于对话框的程序,也想实现打印与打印预览。我参考代码,按照步骤,依次加进去。最后可以编译成功,但无法执行打印预览。
我跟踪程序;错误在这里 // WrapperView.cpp : implementation file
----------------------------
// Create the toolbar from the dialog resource
pView->m_pToolBar = new CDialogBar;
if (!pView->m_pToolBar->Create(pParent, MAKEINTRESOURCE(nIDResource),
CBRS_TOP, AFX_IDW_PREVIEW_BAR))
--------------------------------------
初始化错误。 不知为何?请指教! ( 裂殖菌 发表于 2002-7-16 15:31:00)

主对话框“本月法定工作日”为啥一点按钮,就出现红框。请速回复。
( zcy 发表于 2002-6-30 8:15:00)

各位老兄加前辈:
对不起很冒昧的打扰一下!,我想向你们请教一个问题。如何用vc来编一个报表控件;要求:
1,可以对表进行修改(有点想 OFFICE 中的EXCEL)
2,可以在表中对数据的修改并能存入数据库中
3,打印
4,最后制作成控件
我对这个项目没有接触过,现在也没有什么头绪,我看了你们的范例,很有感触,
所以我冒昧的向各位前辈请教,希望可以从您这里找到一些解决问题的思路。我的EMAIL是jumpnight@163.com
谢谢!
小胡


( 小胡 发表于 2002-5-14 22:08:00)

非常好用,但是我现在是在一个基于单文档的应用程序,我想把打印按钮放在一个对话框(通过点击菜单项弹出来)窗口中,而且在我的主窗口中已经有了一个CFormView 类的视图,我不知道在这种情况下应该怎么实现?非常希望能够赐教一下!(EMail:lihengchao@263.net) ( 雪人 发表于 2002-4-13 23:10:00)

.......................................................
More...




版权所有 © 2002 VC知识库

coolcat_chen 2003-09-20
  • 打赏
  • 举报
回复
To qjjz:
不是吧,老兄不是说的WORD吧,呵呵
qjjz 2003-09-20
  • 打赏
  • 举报
回复
在打印设置中设置能其它纸张自然就行啦
bluebohe 2003-09-20
  • 打赏
  • 举报
回复
哦,做过。。。。。。。。。。
明天再找代码行不
coolcat_chen 2003-09-20
  • 打赏
  • 举报
回复
喂,老兄,做过给个答案啊?
flinming 2003-09-20
  • 打赏
  • 举报
回复
哦,做过。。。。。。。。。。

16,472

社区成员

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

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

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