0008Dlg.cpp
上传用户:smsj_tj
上传日期:2022-05-05
资源大小:187k
文件大小:15k
源码类别:

打印编程

开发平台:

Visual C++

  1. // 0008Dlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "0008.h"
  5. #include "0008Dlg.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CAboutDlg dialog used for App About
  13. class CAboutDlg : public CDialog
  14. {
  15. public:
  16. CAboutDlg();
  17. // Dialog Data
  18. //{{AFX_DATA(CAboutDlg)
  19. enum { IDD = IDD_ABOUTBOX };
  20. //}}AFX_DATA
  21. // ClassWizard generated virtual function overrides
  22. //{{AFX_VIRTUAL(CAboutDlg)
  23. protected:
  24. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  25. //}}AFX_VIRTUAL
  26. // Implementation
  27. protected:
  28. //{{AFX_MSG(CAboutDlg)
  29. //}}AFX_MSG
  30. DECLARE_MESSAGE_MAP()
  31. };
  32. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  33. {
  34. //{{AFX_DATA_INIT(CAboutDlg)
  35. //}}AFX_DATA_INIT
  36. }
  37. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  38. {
  39. CDialog::DoDataExchange(pDX);
  40. //{{AFX_DATA_MAP(CAboutDlg)
  41. //}}AFX_DATA_MAP
  42. }
  43. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  44. //{{AFX_MSG_MAP(CAboutDlg)
  45. // No message handlers
  46. //}}AFX_MSG_MAP
  47. END_MESSAGE_MAP()
  48. /////////////////////////////////////////////////////////////////////////////
  49. // CMy0008Dlg dialog
  50. CMy0008Dlg::CMy0008Dlg(CWnd* pParent /*=NULL*/)
  51. : CDialog(CMy0008Dlg::IDD, pParent)
  52. {
  53. //{{AFX_DATA_INIT(CMy0008Dlg)
  54. // NOTE: the ClassWizard will add member initialization here
  55. //}}AFX_DATA_INIT
  56. // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  57. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  58. }
  59. void CMy0008Dlg::DoDataExchange(CDataExchange* pDX)
  60. {
  61. CDialog::DoDataExchange(pDX);
  62. //{{AFX_DATA_MAP(CMy0008Dlg)
  63. DDX_Control(pDX, IDCANCEL, m_cancel);
  64. DDX_Control(pDX, IDOK, m_ok);
  65. DDX_Control(pDX, IDC_CWPRINTOCXCTRL1, m_yyy);
  66. //}}AFX_DATA_MAP
  67. }
  68. BEGIN_MESSAGE_MAP(CMy0008Dlg, CDialog)
  69. //{{AFX_MSG_MAP(CMy0008Dlg)
  70. ON_WM_SYSCOMMAND()
  71. ON_WM_PAINT()
  72. ON_WM_QUERYDRAGICON()
  73. ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
  74. //}}AFX_MSG_MAP
  75. END_MESSAGE_MAP()
  76. /////////////////////////////////////////////////////////////////////////////
  77. // CMy0008Dlg message handlers
  78. BOOL CMy0008Dlg::OnInitDialog()
  79. {
  80. CDialog::OnInitDialog();
  81. // Add "About..." menu item to system menu.
  82. // IDM_ABOUTBOX must be in the system command range.
  83. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  84. ASSERT(IDM_ABOUTBOX < 0xF000);
  85. CMenu* pSysMenu = GetSystemMenu(FALSE);
  86. if (pSysMenu != NULL)
  87. {
  88. CString strAboutMenu;
  89. strAboutMenu.LoadString(IDS_ABOUTBOX);
  90. if (!strAboutMenu.IsEmpty())
  91. {
  92. pSysMenu->AppendMenu(MF_SEPARATOR);
  93. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  94. }
  95. }
  96. // Set the icon for this dialog.  The framework does this automatically
  97. //  when the application's main window is not a dialog
  98. SetIcon(m_hIcon, TRUE); // Set big icon
  99. SetIcon(m_hIcon, FALSE); // Set small icon
  100. // TODO: Add extra initialization here
  101. return TRUE;  // return TRUE  unless you set the focus to a control
  102. }
  103. void CMy0008Dlg::OnSysCommand(UINT nID, LPARAM lParam)
  104. {
  105. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  106. {
  107. CAboutDlg dlgAbout;
  108. dlgAbout.DoModal();
  109. }
  110. else
  111. {
  112. CDialog::OnSysCommand(nID, lParam);
  113. }
  114. }
  115. // If you add a minimize button to your dialog, you will need the code below
  116. //  to draw the icon.  For MFC applications using the document/view model,
  117. //  this is automatically done for you by the framework.
  118. void CMy0008Dlg::OnPaint() 
  119. {
  120. if (IsIconic())
  121. {
  122. CPaintDC dc(this); // device context for painting
  123. SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  124. // Center icon in client rectangle
  125. int cxIcon = GetSystemMetrics(SM_CXICON);
  126. int cyIcon = GetSystemMetrics(SM_CYICON);
  127. CRect rect;
  128. GetClientRect(&rect);
  129. int x = (rect.Width() - cxIcon + 1) / 2;
  130. int y = (rect.Height() - cyIcon + 1) / 2;
  131. // Draw the icon
  132. dc.DrawIcon(x, y, m_hIcon);
  133. }
  134. else
  135. {
  136. CDialog::OnPaint();
  137. }
  138. }
  139. // The system calls this to obtain the cursor to display while the user drags
  140. //  the minimized window.
  141. HCURSOR CMy0008Dlg::OnQueryDragIcon()
  142. {
  143. return (HCURSOR) m_hIcon;
  144. }
  145. void CMy0008Dlg::OnOK() 
  146. {     
  147. //没有特殊声明的所有单位默认是  0.1毫米
  148. //@**#---2002-12-26 16:40:08 (王继南)---#**@
  149. //
  150. //#define DMPAPER_FIRST                DMPAPER_LETTER
  151. //#define DMPAPER_LETTER               1  /* Letter 8 1/2 x 11 in               */
  152. //#define DMPAPER_LETTERSMALL          2  /* Letter Small 8 1/2 x 11 in         */
  153. //#define DMPAPER_TABLOID              3  /* Tabloid 11 x 17 in                 */
  154. //#define DMPAPER_LEDGER               4  /* Ledger 17 x 11 in                  */
  155. //#define DMPAPER_LEGAL                5  /* Legal 8 1/2 x 14 in                */
  156. //#define DMPAPER_STATEMENT            6  /* Statement 5 1/2 x 8 1/2 in         */
  157. //#define DMPAPER_EXECUTIVE            7  /* Executive 7 1/4 x 10 1/2 in        */
  158. //#define DMPAPER_A3                   8  /* A3 297 x 420 mm                    */
  159. //#define DMPAPER_A4                   9  /* A4 210 x 297 mm                    */
  160. //#define DMPAPER_A4SMALL             10  /* A4 Small 210 x 297 mm              */
  161. //#define DMPAPER_A5                  11  /* A5 148 x 210 mm                    */
  162. //#define DMPAPER_B4                  12  /* B4 (JIS) 250 x 354                 */
  163. //#define DMPAPER_B5                  13  /* B5 (JIS) 182 x 257 mm              */
  164. //#define DMPAPER_FOLIO               14  /* Folio 8 1/2 x 13 in                */
  165. //#define DMPAPER_QUARTO              15  /* Quarto 215 x 275 mm                */
  166. //#define DMPAPER_10X14               16  /* 10x14 in                           */
  167. //#define DMPAPER_11X17               17  /* 11x17 in                           */
  168. //#define DMPAPER_NOTE                18  /* Note 8 1/2 x 11 in                 */
  169. //#define DMPAPER_ENV_9               19  /* Envelope #9 3 7/8 x 8 7/8          */
  170. //#define DMPAPER_ENV_10              20  /* Envelope #10 4 1/8 x 9 1/2         */
  171. //#define DMPAPER_ENV_11              21  /* Envelope #11 4 1/2 x 10 3/8        */
  172. //#define DMPAPER_ENV_12              22  /* Envelope #12 4 276 x 11           */
  173. //#define DMPAPER_ENV_14              23  /* Envelope #14 5 x 11 1/2            */
  174. //#define DMPAPER_CSHEET              24  /* C size sheet                       */
  175. //#define DMPAPER_DSHEET              25  /* D size sheet                       */
  176. //#define DMPAPER_ESHEET              26  /* E size sheet                       */
  177. //#define DMPAPER_ENV_DL              27  /* Envelope DL 110 x 220mm            */
  178. //#define DMPAPER_ENV_C5              28  /* Envelope C5 162 x 229 mm           */
  179. //#define DMPAPER_ENV_C3              29  /* Envelope C3  324 x 458 mm          */
  180. //#define DMPAPER_ENV_C4              30  /* Envelope C4  229 x 324 mm          */
  181. //#define DMPAPER_ENV_C6              31  /* Envelope C6  114 x 162 mm          */
  182. //#define DMPAPER_ENV_C65             32  /* Envelope C65 114 x 229 mm          */
  183. //#define DMPAPER_ENV_B4              33  /* Envelope B4  250 x 353 mm          */
  184. //#define DMPAPER_ENV_B5              34  /* Envelope B5  176 x 250 mm          */
  185. //#define DMPAPER_ENV_B6              35  /* Envelope B6  176 x 125 mm          */
  186. //#define DMPAPER_ENV_ITALY           36  /* Envelope 110 x 230 mm              */
  187. //#define DMPAPER_ENV_MONARCH         37  /* Envelope Monarch 3.875 x 7.5 in    */
  188. //#define DMPAPER_ENV_PERSONAL        38  /* 6 3/4 Envelope 3 5/8 x 6 1/2 in    */
  189. //#define DMPAPER_FANFOLD_US          39  /* US Std Fanfold 14 7/8 x 11 in      */
  190. //#define DMPAPER_FANFOLD_STD_GERMAN  40  /* German Std Fanfold 8 1/2 x 12 in   */
  191. //#define DMPAPER_FANFOLD_LGL_GERMAN  41  /* German Legal Fanfold 8 1/2 x 13 in */
  192. //#if(WINVER >= 0x0400)
  193. //#define DMPAPER_ISO_B4              42  /* B4 (ISO) 250 x 353 mm              */
  194. //#define DMPAPER_JAPANESE_POSTCARD   43  /* Japanese Postcard 100 x 148 mm     */
  195. //#define DMPAPER_9X11                44  /* 9 x 11 in                          */
  196. //#define DMPAPER_10X11               45  /* 10 x 11 in                         */
  197. //#define DMPAPER_15X11               46  /* 15 x 11 in                         */
  198. //#define DMPAPER_ENV_INVITE          47  /* Envelope Invite 220 x 220 mm       */
  199. //#define DMPAPER_RESERVED_48         48  /* RESERVED--DO NOT USE               */
  200. //#define DMPAPER_RESERVED_49         49  /* RESERVED--DO NOT USE               */
  201. //#define DMPAPER_LETTER_EXTRA        50  /* Letter Extra 9 275 x 12 in        */
  202. //#define DMPAPER_LEGAL_EXTRA         51  /* Legal Extra 9 275 x 15 in         */
  203. //#define DMPAPER_TABLOID_EXTRA       52  /* Tabloid Extra 11.69 x 18 in        */
  204. //#define DMPAPER_A4_EXTRA            53  /* A4 Extra 9.27 x 12.69 in           */
  205. //#define DMPAPER_LETTER_TRANSVERSE   54  /* Letter Transverse 8 275 x 11 in   */
  206. //#define DMPAPER_A4_TRANSVERSE       55  /* A4 Transverse 210 x 297 mm         */
  207. //#define DMPAPER_LETTER_EXTRA_TRANSVERSE 56 /* Letter Extra Transverse 9275 x 12 in */
  208. //#define DMPAPER_A_PLUS              57  /* SuperA/SuperA/A4 227 x 356 mm      */
  209. //#define DMPAPER_B_PLUS              58  /* SuperB/SuperB/A3 305 x 487 mm      */
  210. //#define DMPAPER_LETTER_PLUS         59  /* Letter Plus 8.5 x 12.69 in         */
  211. //#define DMPAPER_A4_PLUS             60  /* A4 Plus 210 x 330 mm               */
  212. //#define DMPAPER_A5_TRANSVERSE       61  /* A5 Transverse 148 x 210 mm         */
  213. //#define DMPAPER_B5_TRANSVERSE       62  /* B5 (JIS) Transverse 182 x 257 mm   */
  214. //#define DMPAPER_A3_EXTRA            63  /* A3 Extra 322 x 445 mm              */
  215. //#define DMPAPER_A5_EXTRA            64  /* A5 Extra 174 x 235 mm              */
  216. //#define DMPAPER_B5_EXTRA            65  /* B5 (ISO) Extra 201 x 276 mm        */
  217. //#define DMPAPER_A2                  66  /* A2 420 x 594 mm                    */
  218. //#define DMPAPER_A3_TRANSVERSE       67  /* A3 Transverse 297 x 420 mm         */
  219. //#define DMPAPER_A3_EXTRA_TRANSVERSE 68  /* A3 Extra Transverse 322 x 445 mm   */
  220. //
  221. //
  222. //
  223.       m_yyy.BeginCx();   //初始化
  224.        //纸张设置不是很好目前用mfc类库里的宏定义  设置纸张  缺省  A4
  225.       m_yyy.SetPaperSize(DMPAPER_A4);
  226.       m_yyy.SetSpan(5);   //列头字体与上下线的距离
  227.       m_yyy.SetLeftSpace(20);  //设置左面开始距离 ,就是内容在左空多大的距离。试试就知道了。
  228.       m_yyy.SetBottomHeight(20); //设置下面留的距离,就是内容剧下面纸边的距离
  229.       m_yyy.SetColSpace(10);     // 设置每一列的空隙,例如画线用的空间。
  230.       m_yyy.SetLineSpace(20);    // 设置每行之间的距离。
  231.       //以上都有默认值,不设也可以
  232.       
  233.       
  234.       //以下是设置报表头  可以加任意多个 例如  日期 ,标题及其它
  235.       
  236.       //@**#---2002-12-26 13:44:22 (王继南)---#**@
  237.       //      AddHeadTitle(short sFontSize/*字体尺寸*/, LPCTSTR lFontName/*字体名称*/, 
  238.       //      PCTSTR lChangeLine/*是否换行  0 不换行  1换行*/,
  239.       //      LPCTSTR lFontB/*字体粗细  B 加粗 其它为细的*/, short sX/*在这行的x坐标*/,
  240.       //      LPCTSTR lTitleHead/*标题内容 可为空*/)
  241.       
  242.       m_yyy.AddHeadTitle(4,"楷体_GB2312","1","B",600,"客户资金流水表");
  243.       m_yyy.AddHeadTitle(2,"宋体","1"," ",1000,"(报表头)");
  244.       //这个方法可以变相的用,例如你可想让行与行间有一定的距离你可以用下面的语句,距离为2毫米
  245.       m_yyy.AddHeadTitle(0,"宋体","1"," ",20,"");
  246.       m_yyy.AddHeadTitle(3,"宋体","1"," ",20,"2002年11月11日");
  247.       //这个方法可以变相的用,例如你可想让行与行间有一定的距离你可以用下面的语句,距离为1毫米
  248.       m_yyy.AddHeadTitle(0,"宋体","1"," ",10,"");
  249.       
  250.       // 设置报表列头字体大小0-36,是否加粗 B加粗 否则其它 就可以,字体名称
  251.       m_yyy.SetReportColHead(3,"G","宋体");
  252.       
  253.       // 设置报表内容字体大小0-36,是否加粗 B加粗 否则其它 就可以,字体名称
  254.       m_yyy.SetReportColBody(3,"G","宋体");
  255.       
  256.       // 单独设置列头,和内容 报表字体的粗细  其实上面就可以完成这个功能
  257.       m_yyy.SetReportHeadFontWeight("B");
  258.       m_yyy.SetReportBodyFontWeight("G");
  259.       
  260.       
  261.       //添加列信息
  262.       //AddColInfo(short sFontWidth/*列宽度单位是每个汉字*/, LPCTSTR lAlign/*靠齐方位*/
  263.       //, BOOL bDisplay/*是否显示该列*/, BOOL bPrint/*是否打印该列*/,
  264.       // LPCTSTR lTotalType/*汇总类型*/, LPCTSTR lColType/*列的数据类型*/, 
  265.       //LPCTSTR lColName/*列标题*/, LPCTSTR lFieldName/*列名字*/, short sDecWidth/*小数点位数*/)
  266.       m_yyy.AddColInfo(7,"L",true,true,"S","C","资金帐号","zjzh",0);
  267.       m_yyy.AddColInfo(4,"C",true,true,"C","C","客户姓名","xm",0);
  268.       m_yyy.AddColInfo(9,"L",true,true,"C","C","身份证号","sfzh",0);
  269.       m_yyy.AddColInfo(8,"R",true,true,"S","N","资金发生数","zjfss",2); 
  270.       m_yyy.AddColInfo(3,"L",true,true,"C","C","流水号","lsh",0); 
  271.       m_yyy.AddColInfo(4,"L",true,true,"C","D","发生日期","fsrq",0);
  272.       m_yyy.AddColInfo(10,"L",true,true,"C","C","备注信息","bzxx",0);
  273.  /*@**#---2003-01-14 10:41:08 (王继南)---#**@
  274.      m_yyy.AddColInfo(7,"L",true,true,"S","C","资金帐号","zjzh",0);
  275.       m_yyy.AddColInfo(4,"C",true,true,"C","C","客户姓名","xm",0);
  276.       m_yyy.AddColInfo(9,"L",true,true,"C","C","身份证号","sfzh",0);
  277.       m_yyy.AddColInfo(8,"R",true,true,"S","N","资金发生数","zjfss",2); 
  278.       m_yyy.AddColInfo(3,"L",true,true,"C","C","流水号","lsh",0); 
  279.       m_yyy.AddColInfo(4,"L",true,true,"C","D","发生日期","fsrq",0);
  280.       m_yyy.AddColInfo(10,"L",true,true,"C","C","备注信息","bzxx",0);
  281. */
  282.            m_yyy.CreateAndOpen();  //创建dbf库 为了解决数据量大时内存的问题
  283.  
  284.       //加数据值 别需和上面的列数量相同  否则会出错
  285.       CString strTmp;
  286.       for(long i=0 ; i<500;i++)
  287.       {
  288.             //for(int jj=0;jj<2;jj++)
  289.             {
  290.             strTmp.Format("%d",i);
  291.             m_yyy.AddFieldValue(strTmp.GetBuffer(0));
  292.           //  strTmp.Format("%d你",i);
  293.             m_yyy.AddFieldValue("刘德华");
  294.             strTmp.Format("%018d",i);
  295.             m_yyy.AddFieldValue(strTmp.GetBuffer(0));
  296.             m_yyy.AddFieldValue("23.09"); 
  297.             strTmp.Format("%06d",i);
  298.             m_yyy.AddFieldValue(strTmp.GetBuffer(0));
  299.             m_yyy.AddFieldValue("20010304");
  300.             m_yyy.AddFieldValue("资金存取流水"); 
  301.             }
  302.       }
  303.       //显示报表窗体
  304.       m_yyy.ShowModal();
  305.       
  306. }
  307. void CMy0008Dlg::OnButton1() 
  308. {
  309. CString strtmp,strtmp1;
  310. m_yyy.BeginCx();
  311. /////////////////////////////
  312. m_yyy.AddHeadTitle(4,"楷体_GB2312","1","B",500,"原始测量数据报表");
  313.      CTime t=CTime::GetCurrentTime();
  314. int n=t.GetYear();
  315. strtmp.Format("%d",n);
  316. strtmp1=strtmp+"年";
  317. n=t.GetMonth();
  318. strtmp.Format("%d",n);
  319. strtmp1+=strtmp+"月";
  320. n=t.GetDay();
  321. strtmp1+=strtmp+"日";
  322. m_yyy.AddHeadTitle(3,"宋体","1"," ",20,strtmp1);
  323. m_yyy.AddHeadTitle(0,"宋体","1"," ",10,"");
  324.       m_yyy.SetReportColBody(3,"G","宋体");
  325. m_yyy.SetReportColHead(3,"G","宋体");
  326. // m_yyy.SetReportHeadFontWeight(700);
  327. m_yyy.AddColInfo(6,"R",true,true,"S","N"," 水表编号","nh",0);
  328. m_yyy.AddColInfo(20,"C",true,true,"C","C","ssssss","llll",0);
  329. m_yyy.AddColInfo(20,"L",true,true,"C","C","采集时间","oo",0);
  330. m_yyy.CreateAndOpen();
  331. // TRACE( "beginn" );
  332. //@**#---2003-01-14 11:32:19 (王继南)---#**@
  333. //POSITION pos;
  334. // for( pos = theApp.m_lDsplyLst.GetHeadPosition(); pos != NULL; )
  335. // {
  336. // tag_Dsply * dsp=(tag_Dsply*)theApp.m_lDsplyLst.GetNext(pos);
  337. // strtmp=dsp->strID;
  338. // m_yyy.AddFieldValue(strtmp.GetBuffer(0));
  339. // strtmp=dsp->strRslt;
  340. // m_yyy.AddFieldValue(strtmp.GetBuffer(0));
  341. // strtmp=dsp->strTime;
  342. // m_yyy.AddFieldValue(strtmp.GetBuffer(0));
  343. //
  344. //
  345. // }
  346. m_yyy.ShowModal();
  347. }