• PRINTDLG 打印对话框操作


    typedef struct tagPD {
      DWORD           lStructSize;
      HWND            hwndOwner;
      HGLOBAL         hDevMode;
      HGLOBAL         hDevNames;
      HDC             hDC;
      DWORD           Flags;
      WORD            nFromPage;
      WORD            nToPage;
      WORD            nMinPage;
      WORD            nMaxPage;
      WORD            nCopies;
      HINSTANCE       hInstance;
      LPARAM          lCustData;
      LPPRINTHOOKPROC lpfnPrintHook;
      LPSETUPHOOKPROC lpfnSetupHook;
      LPCTSTR         lpPrintTemplateName;
      LPCTSTR         lpSetupTemplateName;
      HGLOBAL         hPrintTemplate;
      HGLOBAL         hSetupTemplate;
    } PRINTDLG, *LPPRINTDLG;

      参数说明

      lStructSize:本结构大小(字节数)
      hwndOwner:父窗口句柄(可为NULL)
      hDevMode:包含打印机设备与环境信息的DEVMODE结构句柄
      hDevNames:包含驱动器名、打印机名和输出端口名的设备名结构DEVNAMES句柄
      hDC:确定DC或IC(information context),由Flags是否设置PD_RETURNDC或PC_RETURNIC标志来决定
      Flags:用于打印公用对话框初始化的标志位
      nFromPage:指定开始页码编辑控件的初始值
      nToPage:指定结束页码编辑控件的初始值
      nMinPage:指定开始/结束页码编辑控件的页码范围的最小值,若nMinPage=nMaxPage,则“页码范围”单选钮和开始/结束页码编辑控件被灰化
      nMaxPage:指定开始/结束页码编辑控件的页码范围的最大值
      nCopies:指定拷贝份数编辑控件的初始值
      hInstance:以下结构成员很少使用
      lCustData:
      lpfnPrintHook:
      lpfnSetupHook:
      lpPrintTemplateName:
      lpSetupTemplateName:
      hPrintTemplate:
      hSetupTemplate:

    Flags初始化标志

      PD_ALLPAGES(0x00) 指定“全部”单选钮在初始时被选中(缺省标志)
      PD_COLLATE(0x10) 指定“自动分页”复选框在初始时被选中
      PD_DISABLEPRINTTOFILE(0x80000) 使打印到文件复选框失效
      PD_ENABLEPRINTHOOK
      PD_ENABLEPRINTTEMPLATE
      PD_ENABLEPRINTTEMPLATEHANDLE
      PD_ENABLESETUPHOOK
      PD_ENABLESETUPTEMPLATE
      PD_ENABLESETUPTEMPLATEHANDLE
      PD_HIDEPRINTTOFILE(0x100000) 隐藏“打印到文件”复选框(缺省标志)
      PD_NONETWORKBUTTON(0x200000) 隐藏网络按钮
      PD_NOPAGENUMS(0x08) 使“页码范围”单选钮和开始/结束页码编辑控件失效(缺省标志)
      PD_NOSELECTION(0x04) 使“选定范围”单选钮失效(缺省标志)
      PD_NOWARNING(0x80) 防止系统在没有缺省打印机时显示警告消息
      PD_PAGENUMS(0x02) 指定“页码范围”单选钮在初始时被选中,若返回时该标志位被设置,则nFromPage与nFromPage中为用户设置的开始与结束页码
      PD_PRINTSETUP(0x40) 使系统显示打印设置对话框而不是打印对话框
      PD_PRINTTOFILE(0x20) 指定“打印到文件”复选框在初始时被选中
      PD_RETURNDC(0x100) 使打印对话框返回与用户选择相匹配的DC到hDC成员
      PD_RETURNDEFAULT(0x400) 不显示打印对话框,将hDevNames与hDevMode分别设置为用系统缺省打印机来初始化的结构DEVMODE与DEVNAMES的句柄
      PD_RETURNIC(0x200) 使打印对话框返回与用户选择相匹配的IC到hDC成员
      PD_SELECTION(0x01) 指定“选定范围”单选钮在初始时被选中
      PD_SHOWHELP(0x800) 使对话框显示帮助按钮,在用户单击帮助按钮时对话框会发送HELPMSGSTRING注册消息,hwndOwner成员必须指定接受该消息的窗口
      PD_USEDEVMODECOPIES(0x40000) 同PD_USEDEVMODECOPIESANDCOLLATE
      PD_USEDEVMODECOPIESANDCOLLATE(0x40000) 指定你的应用程序不支持多份打印与自动分页(缺省标志)。此时PRINTDLG结构的nCopies成员总是返回1,而且PD_COLLATE决不被设置

    举例

        PRINTDLG pd ;
        memset( &pd, 0, sizeof( PRINTDLG ) ) ;
        pd.lStructSize = sizeof( PRINTDLG ) ;
        pd.hwndOwner   = m_hWnd ;
        pd.hDevMode    = m_hDevMode ;
        pd.hDevNames   = m_hDevNames ;
        pd.hDC         = NULL ;
        pd.Flags       = PD_RETURNDC | PD_SELECTION | PD_NOPAGENUMS | PD_COLLATE ; 
        pd.nFromPage   = 0 ;
        pd.nToPage     = 0 ;
        pd.nMinPage    = 0 ; 
        pd.nMaxPage    = 0 ;
        pd.nCopies     = 1 ;  
        pd.hInstance   = NULL ; 
        pd.lCustData   = 0L ;     
        pd.lpfnPrintHook = NULL ;
        pd.lpfnSetupHook = NULL ;
        pd.lpPrintTemplateName  = NULL ;
        pd.lpSetupTemplateName  = NULL ;
        pd.hPrintTemplate       = NULL ;
        pd.hSetupTemplate       = NULL ;
        
        if ( !PrintDlg( &pd ) )
            return 0 ;
    
        if ( NULL != pd.hDevMode )
            ::GlobalFree( pd.hDevMode ) ;
    
        if ( NULL != pd.hDevNames )
            ::GlobalFree( pd.hDevNames ) ;

    效果

     再来一个例子:

    PRINTDLG pd ;
    memset( &pd, 0, sizeof( PRINTDLG ) ) ;
    pd.lStructSize = sizeof( PRINTDLG ) ;
    pd.Flags = PD_PRINTSETUP ;
    pd.hDevMode    = m_hDevMode ;
    pd.hDevNames   = m_hDevNames ;
    
    if ( PrintDlg( &pd ) )
    {
         m_hDevMode = pd.hDevMode ;
         m_hDevNames = pd.hDevNames ;
    }

  • 相关阅读:
    验证视图状态 MAC 失败的处理办法总结![come from internet]
    在ie6上 让他显示png图片
    挑灯夜战 css hack 再次学习 IE浏览器常见的9个css Bug以及解决办法
    fileupload上传 and IE8 and VS2008 实现图片预览[new Name:经典的Fakepath错误]
    大项目开发语言的选择
    虚拟机安装linux:未找到任何驱动程序
    objectc中的bool
    关于数字内容网站的一些想法
    iphone开发论坛
    在centos5.3下安装mysql5启动时报错
  • 原文地址:https://www.cnblogs.com/MakeView660/p/7723359.html
Copyright © 2020-2023  润新知