首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包

VC开发_软件测试 [加入]

讨论关于vc、c开发、软件测试的相关技术内容。
系统我已经做好了,基于对话框的,现在要实现打印与预览功能,怎么做啊.   急急!!!!  
发表时间:2007-05-28 10:36:18   楼主:lanse8482

系统我已经做好了,基于对话框的,现在要实现打印与预览功能,怎么做啊. 急急!!!!

看了参考书说要建立单文档,然后在修改InitInstance()函数.  可是我不知道怎么把两个工程合到一快





 
发表时间:2007-05-29 07:32:13 1 楼:xtyceiiiu
看看单文档里的打印与预览功能代码再写入。如果程序不大你程序移到单文档吧。
发表时间:2007-05-29 19:12:38 2 楼:lanse8482

我已经做好的,不好移的,但我另辟了一条路,就是在建一个工程,专门用来打印和御览。用ShellExecuteEx(&ShExecInfo);打开

我的数据是独立的在数据库的。

发表时间:2007-05-30 09:20:51 3 楼:xtyceiiiu

这样也好。。

发表时间:2007-05-31 08:40:57 4 楼:Lotus888
发表时间:2007-05-31 08:45:06 5 楼:Lotus888

<PRE id=pre1 style='MARGIN-TOP: 0px' nd='21'>void CMyDialog::Print()
{
    CDC dc;
    CPrintDialog printDlg(FALSE);

    if (printDlg.DoModal() == IDCANCEL)     // Get printer settings from user
        return;

    dc.Attach(printDlg.GetPrinterDC());     // Get and attach a printer DC
    dc.m_bPrinting = TRUE;

    CString strTitle;                       // Get the application title
    strTitle.LoadString(AFX_IDS_APP_TITLE);

    DOCINFO di;                             // Initialise print document details
    ::ZeroMemory (&di, sizeof (DOCINFO));
    di.cbSize = sizeof (DOCINFO);
    di.lpszDocName = strTitle;

    BOOL bPrintingOK = dc.StartDoc(&di);    // Begin a new print job

    // Get the printing extents and store in the m_rectDraw field of a
    // CPrintInfo object
    CPrintInfo Info;
    Info.m_rectDraw.SetRect(0,0,
                            dc.GetDeviceCaps(HORZRES),
                            dc.GetDeviceCaps(VERTRES));

    OnBeginPrinting(&dc, &Info);            // Call your "Init printing" function
    for (UINT page = Info.GetMinPage();
         page <= Info.GetMaxPage() && bPrintingOK;
         page++)
    {
        dc.StartPage();                     // begin new page
        Info.m_nCurPage = page;
        OnPrint(&dc, &Info);                // Call your "Print page" function
        bPrintingOK = (dc.EndPage() > 0);   // end page
    }
    OnEndPrinting(&dc, &Info);              // Call your "Clean up" function

    if (bPrintingOK)
        dc.EndDoc();                        // end a print job
    else
        dc.AbortDoc();                      // abort job.

    dc.DeleteDC();                          // delete the printer DC
}
</PRE>

发表时间:2007-06-02 07:23:26 6 楼:lanse8482

谢谢大家了,我用对话框加单文挡,那套偷梁换柱的办法实现了,但预览时显示的是空白。

 

CMyApp::CMyApp()
{
 // TODO: add construction code here,
 // Place all significant initialization in InitInstance
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CMyApp object

CMyApp theApp;
HINSTANCE hInstance;
RxADO ado;
PrintStruct m_ps;

/////////////////////////////////////////////////////////////////////////////
// CMyApp initialization

BOOL CMyApp::InitInstance()
{
 AfxEnableControlContainer();

 #ifdef _AFXDLL
 Enable3dControls();   // Call this when using MFC in a shared DLL
#else
 Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif

  SetRegistryKey(_T("Local AppWizard-Generated Applications"));

 LoadStdProfileSettings();  // Load standard INI file options (including MRU)
 //载入动态库
 hInstance =LoadLibrary("RxDLL.dll");
 //载入RXDLL中的函数
 MoneyToChineseCode=(_MoneyToChineseCode*)GetProcAddress(hInstance,"MoneyToChineseCode");
 CTimeToCString=(_CTimeToCString*)GetProcAddress(hInstance,"CTimeToCString");
 CStringTOCTime=(_CStringTOCTime*)GetProcAddress(hInstance,"CStringTOCTime");
 Padl=(_Padl*)GetProcAddress(hInstance,"Padl");
 CharToLetterCode=(_CharToLetterCode*)GetProcAddress(hInstance,"CharToLetterCode");

 CString ConnertionString;
 ConnertionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=zyl;Initial Catalog=HuMan;Data Source=去掉了";
 if(ado.SetConnection(ConnertionString)==false)
 {
  MessageBox(NULL,"连接服务器失败,请重新配置!","系统提示",MB_OK|MB_ICONSTOP);
//  ::ShellExecute(NULL, "open", "数据库设置.exe", NULL, NULL, SW_SHOWNORMAL);
  return false;
 }
 cnn=ado.GetConnection();

 // Register the application's document templates.  Document templates
 //  serve as the connection between documents, frame windows and views.

 CSingleDocTemplate* pDocTemplate;
 pDocTemplate = new CSingleDocTemplate(
  IDR_MAINFRAME,
  RUNTIME_CLASS(CMyDoc),
  RUNTIME_CLASS(CMainFrame),       // main SDI frame window
  RUNTIME_CLASS(CMyView));
 AddDocTemplate(pDocTemplate);

 // Parse command line for standard shell commands, DDE, file open
/*CommandLineInfo cmdInfo;
 ParseCommandLine(cmdInfo);

 // Dispatch commands specified on the command line
 if (!ProcessShellCommand(cmdInfo))
  return FALSE;

 // The one and only window has been initialized, so show and update it.
 m_pMainWnd->ShowWindow(SW_SHOW);
 m_pMainWnd->UpdateWindow();
*/
CMainDlg dlg;
dlg.DoModal();

 

 return TRUE;
}

 

 

 


void CMyView::OnDraw(CDC* pDC)
{
 CMyDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 
 //逻辑设备大小
 LogicSize.cx=pDC->GetDeviceCaps(HORZRES);
 LogicSize.cy=pDC->GetDeviceCaps(VERTRES);
 //画主标题
 PrintMainCaption(pDC,false);
 //画副标题
 PrintDeckCaption(pDC,false);
 //画表头
 LVCOLUMN col;
 CString stext;
 int wid,xpos,ypos;
 xpos=30;
 ypos=m_pos.cy;
 pDC->Rectangle(30,ypos,LogicSize.cx-30,ypos+1);
 ypos=ypos+10;
 for(int i=0;i<m_ps.Grid->GetCols();i++)
 {
  col.mask=LVCF_TEXT;
  col.pszText=stext.GetBuffer(stext.GetLength());
  col.cchTextMax=255;
  m_ps.Grid->GetColumn(i,&col);
  wid=m_ps.Grid->GetColumnWidth(i);
  pDC->TextOut(xpos,ypos,col.pszText);
  xpos=xpos+wid;
 }
 ypos=ypos+ 20;//m_pos向下移动一个字的宽度
 pDC->Rectangle(30,ypos,LogicSize.cx-30,ypos+1);
 //画表格内容
 ypos=ypos+10;
 xpos=30;
 for(int r=0;r<m_ps.Grid->GetRows();r++)
 {
  for(int c=0;c<m_ps.Grid->GetCols();c++)
  {
   stext=m_ps.Grid->GetItemText(r,c);
   wid=m_ps.Grid->GetColumnWidth(c);
   pDC->TextOut(xpos,ypos,stext);
   xpos=xpos+wid;
  }
  xpos=30;
  ypos=ypos+20;
  m_pos.cx=30;
  m_pos.cy=ypos;
 }
 //打印合计信息
 pDC->Rectangle(30,ypos,LogicSize.cx-30,ypos+1);
 PrintTotal(pDC, false);
 // TODO: add draw code for native data here
}

void CMyView::OnInitialUpdate()
{
 CScrollView::OnInitialUpdate();

 CSize sizeTotal;
 // TODO: calculate the total size of this view
 sizeTotal.cx = sizeTotal.cy = 100;
 SetScrollSizes(MM_TEXT, sizeTotal);
}

 

发表时间:2007-07-19 17:37:58 7 楼:chinaa

6楼的老师真不错哦

呵呵

发表时间:2007-07-20 10:50:29 8 楼:Lotus888
www.codeproject.com上有许多相关示例代码,可参考
发表时间:2007-07-25 12:19:40 9 楼:lianghuayu2007

本人有打印和预览的vc源码, 如果需要订做,可以联系: QQ:70951258, 或email:chengyu.liang@yahoo.com.cn

发表时间:2007-07-27 18:29:59 10 楼:stone1116

你可以调用系统给你定义好的打印啊(Cprintdialog())就好了

发表时间:2007-09-13 13:10:05 11 楼:ruandong
其实可以模拟MFC的单文档框架,也就是自已在程序里面构建doc,mainframe,view类.然后照胡芦画票.第二种方法就是获得打印的DC,然后在一个窗口中画出你要打印的内容.
发表时间:2007-09-18 10:35:42 12 楼:vocanicy

模拟MFC的单文档框架的方法不好,无法实现MFC静态连接

 

因为对话框程序静态连接时不会自动将打印对话框的资源链入,导致执行时断言错误

发表时间:2007-09-19 13:51:16 13 楼:maxjimmy2008

学习

本回复于:
2007-09-19 13:51:44 被【maxjimmy2008】修改
发表时间:2007-09-20 19:12:22 14 楼:gchqf
关于打印和预览,候杰先生的《深入浅出MFC》里面讲的很清楚了,建议你去看一下,好像网上有个南理工的仁兄 写过这个一个程序,可以参考。
发表时间:2007-09-23 12:45:46 15 楼:koc111
http://www.KingOfCoder.com 純編程文章網
【相关链接】: http://www.KingOfCoder.com (本网站不保证链接的安全性)
发表时间:2007-09-23 20:45:01 16 楼:yvcfan
www.vckbase.com看看,也许有你需要的
发表时间:2007-10-06 09:03:45 17 楼:networksecurity
在对话框中实现打印和预览功能要插入一个试图类
发表时间:2008-02-10 14:33:09 18 楼:bravegogo

  1.将数据库的数据保存到一个缓冲区中。

二。利用 ondarw() / onprint() 函数 设置字体 打印格式

发表时间:2008-02-10 14:34:35 19 楼:bravegogo
我建议你找点数据库的关于vc 报表的实现的术,一看就懂
发表时间:2008-03-05 15:42:19 20 楼:caelover
试着回复!
发表时间:2008-04-11 01:59:20 21 楼:senini
老虎机破解 免费打机技术交流 奔驰宝马轮盘水果机.彩金狮王, 女子防身器 自卫器.牌九 麻将老虎机破解技术交流作弊器上分器定位器,交流QQ270535397

最新老虎机上分器,老虎机定位器,老虎机遥控器,老虎机干扰器,老虎机退币器,老虎机游戏下载,达利上分器,上分器,达利破解,出老千,斗地主游戏,斗地主刷分器,,斗地主上分器,连线机破解,轮盘机破解 
发表时间:2008-04-15 11:41:45 22 楼:senini
老虎机破解上分退币器定位器奔驰宝马轮盘水果斗地主破解
本公司专门生产上分器,老虎J定位器.各种街机,奔驰宝马.赛车风云.雪豹.彩金狮王.疯狂斗地主.水果大餐.大小老虎机.斗地主.小型水果机.动物乐园.狮子彩金及部分连线机,轮盘机,等等 作弊器,让你打暴老虎J..`详加QQ270535397  电话13959878721
发表时间:2008-04-21 16:03:57 23 楼:kongjiejie
google左侧优化公兴搬场
itriwp167 公兴搬场 公兴搬场公司 上海公兴搬场 搬家公司 公兴搬场 公兴搬场公司 上海公兴搬场 搬场 搬家 搬场公司 上海搬场公司 上海搬家公司 fastener internship inshanghai internship in china itriwp167 搬家公司 搬家公司 搬家公司 搬家公司 搬家公司 搬家公司 搬家公司 公兴搬场 公兴搬场 公兴搬场 公兴搬场 公兴搬场 公兴搬场 itriwp167 公兴搬场公司 公兴搬场公司 公兴搬场公司 公兴搬场公司 公兴搬场公司 公兴搬场公司 itriwp167 上海公兴搬场 上海公兴搬场 上海公兴搬场 上海公兴搬场 上海公兴搬场 上海公兴搬场 itriwp167 搬场 搬场 搬场 搬场 搬场 搬场 搬场 itriwp167 搬家 搬家 搬家 搬家 搬家 搬家 搬家 itriwp167 搬场公司 搬场公司 搬场公司 搬场公司 搬场公司 搬场公司 搬场公司 itriwp167 上海搬场公司 上海搬场公司 上海搬场公司 上海搬场公司 上海搬场公司 上海搬场公司 上海搬场公司 itriwp167 上海搬家公司 上海搬家公司 上海搬家公司 上海搬家公司 上海搬家公司 上海搬家公司 上海搬家公司 搬场 搬场 搬家 搬家 搬场公司 搬场公司 搬家公司 搬家公司 上海搬场公司 上海搬场公司 上海搬家公司 上海搬家公司 金属回收 物资回收 废品回收 废金属回收 上海废品回收 itriwp167 上海搬家公司 上海搬家公司 上海搬家公司 上海搬家公司 上海搬家公司 上海搬家公司 上海搬家公司 上海搬家公司 上海搬家公司 上海搬家公司 上海搬家公司 上海搬家公司 itriwp167 靓方中国 靓方中国论坛 靓方中国博客 搜索引擎优化论坛 搜索引擎优化博客 itriwp167
本回复于:
2008-04-21 16:04:50 被【kongjiejie】修改
发表时间:2008-04-30 16:19:44 24 楼:wsidnow

回一个

发表时间:2008-05-28 00:05:20 25 楼:ake1988
有种比较偷懒的方法,就是直接用c++builder或者delphi的quickreport控件来实现。
发表时间:2008-06-19 15:23:19 26 楼:yanjiangfu
【相关链接】: http://www.yaokongqi.net (本网站不保证链接的安全性)
发表时间:2008-07-01 13:46:39 27 楼:yanjiangfu
老虎机破解仪器使用、打机技巧讨论区 http://www.yaokongqi.net/forum-5-1.html
老虎机破解仪器 | 游戏机台价格行情 销售区http://www.yaokongqi.net/forum-7-1.html
老虎机破解视频区-〖老虎机遥控器上分论坛〗http://www.yaokongqi.net/forum-63-1.
老虎机街机下载 - 〖老虎机遥控器上分论坛〗http://www.yaokongqi.net/forum-46-1.html
暴力破解下载 - 〖老虎机遥控器上分论坛〗http://www.yaokongqi.net/forum-47-1.html
免费在线电影下载-〖老虎机遥控器上分论坛〗http://www.yaokongqi.net/forum-58-1.html
两性小说下载-〖老虎机遥控器上分论坛〗
http://www.yaokongqi.net/forum-54-1.html
基金知识-〖老虎机遥控器上分论坛〗
http://www.yaokongqi.net/forum-65-1.html
姚明专区- 〖老虎机遥控器上分论坛〗
http://www.yaokongqi.net/forum-36-1.html
NBA图片库-〖老虎机遥控器上分论坛〗http://www.yaokongqi.net/forum-38-1.html
灌水 广告 新闻 八卦 -〖老虎机遥控器上分论坛〗http://www.yaokongqi.net/forum-56-1.html
姚明专区- 〖老虎机遥控器上分论坛〗http://www.yaokongqi.net/forum-36-1.html
NBA图片库-〖老虎机遥控器上分论坛〗http://www.yaokongqi.net/forum-38-1.html
灌水 广告 新闻 八卦 -〖老虎机遥控器上分论坛〗http://www.yaokongqi.net/forum-56-1.html
秘密花园-〖老虎机遥控器上分论坛〗http://www.yaokongqi.net/forum-40-1.html
七情六欲-〖老虎机遥控器上分论坛〗http://www.yaokongqi.net/forum-41-1.html
十大美女风云榜-〖老虎机遥控器上分论坛〗http://www.yaokongqi.net/forum-55-1.html
【相关链接】: http://www.yaokongqi.net (本网站不保证链接的安全性)
发表时间:2008-07-17 15:10:00 28 楼:qq450471338pinguo
上海老虎机定位器 老虎机定位器视频 苏州老虎机定位器 江苏老虎机定位器 温州老虎机定位器

手机;15060055297

公司网址:http://www.51laohuji.cn

★〓销售 QQ:450471338〓专业生产销售老虎机破解仪器,包括:干扰器、上分器、退币器、定位器、遥控器。已破解的机器有:框体机,模拟机,玛利机、苹果机、水果机、老虎机,连线机、转盘机。我们的仪器易操作、隐匿性强,不死机,不对屏幕有干扰,返修率低。。苹果机破解器!★〓销售 QQ:450471338 电话英雄,魔掌★〓,狗药耗子,神话,大长今,★〓威威财神,棋王,超级星期天,冲击波,丑小鸭,电子基盘,东方之珠,动感地带,功夫,红绿黄,吉祥三宝,决战光明顶,康师傅,老鼠爱大米★〓,两只蝴蝶,★〓牛气冲天,

手机;15060055297

公司网址:http://www.51laohuji.cn

【相关链接】: http://www.51laohuji.cn (本网站不保证链接的安全性)
发表时间:2008-08-21 14:44:42 29 楼:Vonger

要是不好实现的话,可以考虑一下用底层的方法。建立一个DC作为打印输出的DC,然后调用直接调用打印的API(不是MFC Doc类里那个)打印DC就可以了。至于如何输出打印预览,也很简单,直接建立一个窗口,把原来打印DC里的东西Bitblt过去即可。

网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|版权声明|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo