⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 printlistctrl.h

📁 一个简单的cprint_listctrl程序
💻 H
字号:
// ==========================================================================
// PrintListCtrl.h
// 
// Author : Marquet Mike
//          mike.marquet@altavista.net
//
// Last Modified : 29/03/2000
// by            : MMA
// ==========================================================================

#if !defined(AFX_PRINTLISTCTRL_H__D5C2BEC1_C744_11D3_A0E2_004005555C30__INCLUDED_)
#define AFX_PRINTLISTCTRL_H__D5C2BEC1_C744_11D3_A0E2_004005555C30__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

/* ==========================================================================

                          PRINT PREVIEW SETTINGS


   Add this in the message map off a CView derived class :

     ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)

   Add these functions to the derived CView class :

     void CXListView::OnBeginPrinting(CDC *pDC, CPrintInfo *pInfo)
      {
       m_cPrintListCtrl.OnBeginPrinting(pDC, pInfo);
       CListView::OnBeginPrinting(pDC, pInfo);
      }

     void CXListView::OnEndPrinting(CDC *pDC, CPrintInfo *pInfo)
      {
       m_cPrintListCtrl.OnEndPrinting(pDC, pInfo);
       CListView::OnEndPrinting(pDC, pInfo);
      }

     BOOL CXListView::OnPreparePrinting(CPrintInfo *pInfo)
      {
       CListCtrl &cList = GetListCtrl();
       HWND       hWnd  = cList.m_hWnd;

       m_cPrintListCtrl.SetListCtrl(hWnd);
       m_cPrintListCtrl.OnPreparePrinting(pInfo, GetDocument()->GetTitle());
   
       return DoPreparePrinting(pInfo);
      }

     void CXListView::OnPrint(CDC *pDC, CPrintInfo *pInfo)
      {
       m_cPrintListCtrl.OnPrint(pDC, pInfo);
      }

========================================================================== */

/////////////////////////////////////////////////////////////////////////////
// class CPrintListCtrl

class CPrintListCtrl  
 {
  protected :
              HWND        m_hListCtrl;
              HDC         m_hPrintDC;
              BOOL        m_bResizeColumnsToFitContent;
              BOOL        m_bPrintHead;
              BOOL        m_bPrintFoot;
              BOOL        m_bTruncateColumn;
              BOOL        m_bPrintColumnSeparator;
              BOOL        m_bPrintLineSeparator;
              BOOL        m_bPrintHeadBkgnd;
              BOOL        m_bPrintFootBkgnd;
              BOOL        m_bHeaderLine1;
              BOOL        m_bHeaderLine2;
              char        m_szFtHead[255];
              char        m_szFtFoot[255];
              char        m_szFtList[255];
              char        m_szHeaderLine1[512];
              char        m_szHeaderLine2[512];
              int         m_iScreenFtHead;
              int         m_iScreenFtFoot;
              int         m_iScreenFtList;
              UINT        m_uiHeaderLine1Format;
              UINT        m_uiHeaderLine2Format;
              COLORREF    m_clrHeadBkgnd;
              COLORREF    m_clrFootBkgnd;
              SYSTEMTIME  m_stST;
              HGLOBAL     m_hDevMode;

              #ifdef _AFXDLL
              int        *m_piColWidthTable;  // Used for print preview
              int        *m_piColFormatTable; // Used for print preview
              char      **m_pszColTitleTable; // Used for print preview
              CString     m_csDocName;        // Used for print preview

              HFONT       m_hHeadFont, m_hListFont, m_hFootFont; // Used for print preview
              #endif

              void ClearPrintDC();
              void CreateDevModeObject();

              void DeleteDevModeObject();
              
              int GetFootHeight(HFONT hFootFont);
              int GetLengthyStringFromColumn(int iCol);
              int GetTextSize(LPCTSTR lpszText, SIZE *pstSize = NULL);
              
              void PrintFoot(int iOffsetY, HFONT hFootFont, int iPageCounter);
              int  PrintHead(int iOffsetY, HFONT hHeadFont, LPCTSTR lpszTitle, int iPageCounter);
              int  PrintListCtrlHeader(int iOffsetY, HFONT hListFont, int iColCount, int *piColWidthTable, int *piColFormatTable, char **pszColTitleTable);
              int  PrintListCtrlLine(int iPageWidth, int iPageHeight, int iOffsetY, HFONT hListFont, HWND hListCtrl, int iLine, int *piColWidthTable, int *piColFormatTable, BOOL *pbNewPage);

              BOOL ResizeColumnToFitContent(int iCol);
              BOOL ResizeColumnsToFitContent();

              int ScreenHeightToPrinterHeight(int iScreenHeight);
              int ScreenWidthToPrinterWidth(int iScreenWidth);

  private :
            #ifdef _AFXDLL
            int m_iLineCount;    // Used for print preview
            int m_iColCount;     // Used for print preview
            int m_nLinesPerPage; // Used for print preview
            int m_iPageHeight;   // Used for print preview
            int m_iPageWidth;    // Used for print preview
            #endif

  public :
           CPrintListCtrl();
           virtual ~CPrintListCtrl();

           BOOL Print(HWND hParent, LPCTSTR lpszDocName = "PrintListCtrl", BOOL bDefault = FALSE);
           BOOL PrintSetup(HWND hParent, BOOL bDefault = FALSE);

           BOOL SetDefaultPrinterSettings(HWND hParent = NULL);

           void SetHeaderLine1(char *szLine = NULL, UINT uiFormat = DT_RIGHT);
           void SetHeaderLine2(char *szLine = NULL, UINT uiFormat = DT_RIGHT);

           BOOL SetPrinterOrientation(BOOL bLandscape = FALSE);
           BOOL SetPrinterPaperSize(int iValue = DMPAPER_A4); // See DEVMODE structure for possible parameters

           // Functions for print preview
           #ifdef _AFXDLL
           void OnBeginPrinting(CDC *pDC, CPrintInfo *pInfo);
           void OnEndPrinting(CDC *pDC, CPrintInfo *pInfo);
           BOOL OnPreparePrinting(CPrintInfo *pInfo, CString csDocName);
           void OnPrint(CDC *pDC, CPrintInfo *pInfo);
           #endif

           // INLINE
           BOOL  GetPrintColumnSeparator()      { return m_bPrintColumnSeparator; }
           BOOL  GetPrintFoot()                 { return m_bPrintFoot; }
           BOOL  GetPrintHead()                 { return m_bPrintHead; }
           BOOL  GetPrintLineSeparator()        { return m_bPrintLineSeparator; }

           BOOL  GetResizeColumnsToFitContent() { return m_bResizeColumnsToFitContent; }

           HWND  GetListCtrl()                  { return m_hListCtrl; }

           BOOL  GetTruncateColumn()            { return m_bTruncateColumn; }

           char *GetHeadFontName()              { return m_szFtHead; }
           char *GetFootFontName()              { return m_szFtFoot; }
           char *GetListFontName()              { return m_szFtList; }

           int   GetHeadFontHeight()            { return m_iScreenFtHead; }
           int   GetFootFontHeight()            { return m_iScreenFtFoot; }
           int   GetListFontHeight()            { return m_iScreenFtList; }

           void PrintColumnSeparator(BOOL bValue)      { m_bPrintColumnSeparator = bValue; }
           void PrintFoot(BOOL bValue)                 { m_bPrintFoot = bValue; }
           void PrintHead(BOOL bValue)                 { m_bPrintHead = bValue; }
           void PrintLineSeparator(BOOL bValue)        { m_bPrintLineSeparator = bValue; }

           void ResizeColumnsToFitContent(BOOL bValue) { m_bResizeColumnsToFitContent = bValue; }

           void SetListCtrl(HWND hListCtrl)            { m_hListCtrl = hListCtrl; }

           void TruncateColumn(BOOL bValue)            { m_bTruncateColumn = bValue; }

           void PrintFootBkgnd(BOOL bValue, COLORREF clrValue = RGB(255,255,255))
            {
             m_bPrintFootBkgnd = bValue;
             m_clrFootBkgnd    = clrValue;
            }

           void PrintHeadBkgnd(BOOL bValue, COLORREF clrValue = RGB(255,255,255))
            {
             m_bPrintHeadBkgnd = bValue;
             m_clrHeadBkgnd    = clrValue;
            }

           void SetHeadFont(LPCTSTR lpszFontName = "Arial", int iFontHeight = 10)
            {
             strcpy(m_szFtHead, lpszFontName);
             m_iScreenFtHead = iFontHeight;
            }

           void SetFootFont(LPCTSTR lpszFontName = "Arial", int iFontHeight = 10)
            {
             strcpy(m_szFtFoot, lpszFontName);
             m_iScreenFtFoot = iFontHeight;
            }

           void SetListFont(LPCTSTR lpszFontName = "Arial", int iFontHeight = 10)
            {
             strcpy(m_szFtList, lpszFontName);
             m_iScreenFtList = iFontHeight;
            }
 };

#endif // !defined(AFX_PRINTLISTCTRL_H__D5C2BEC1_C744_11D3_A0E2_004005555C30__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -