#ifndef _AFXPRNTX_H_ #define _AFXPRNTX_H_ #ifdef _DEBUG # ifdef _UNICODE # ifdef _AFXDLL # pragma comment(lib, "MFCPrintDialogExDUD.lib") # else # pragma comment(lib, "MFCPrintDialogExSUD.lib") # endif # else # ifdef _AFXDLL # pragma comment(lib, "MFCPrintDialogExDAD.lib") # else # pragma comment(lib, "MFCPrintDialogExSAD.lib") # endif # endif #else # ifdef _UNICODE # ifdef _AFXDLL # pragma comment(lib, "MFCPrintDialogExDU.lib") # else # pragma comment(lib, "MFCPrintDialogExSU.lib") # endif # else # ifdef _AFXDLL # pragma comment(lib, "MFCPrintDialogExDA.lib") # else # pragma comment(lib, "MFCPrintDialogExSA.lib") # endif # endif #endif //WINBUG: these declarations are not yet in the NT5 Headers #ifndef PD_RESULT_CANCEL #undef INTERFACE #define INTERFACE IPrintDialogCallback DECLARE_INTERFACE_(IPrintDialogCallback, IUnknown) { // *** IUnknown methods *** STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE; STDMETHOD_(ULONG, AddRef) (THIS) PURE; STDMETHOD_(ULONG, Release) (THIS) PURE; // *** IPrintDialogCallback methods *** STDMETHOD(InitDone) (THIS) PURE; STDMETHOD(SelectionChange) (THIS) PURE; STDMETHOD(HandleMessage) (THIS_ HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *pResult) PURE; }; // // Result action ids for PrintDlgEx. // #define PD_RESULT_CANCEL 0 #define PD_RESULT_PRINT 1 #define PD_RESULT_APPLY 2 #define START_PAGE_GENERAL 0xffffffff // // Page Range structure for PrintDlgEx. // typedef struct tagPRINTPAGERANGE { DWORD nFromPage; DWORD nToPage; } PRINTPAGERANGE, *LPPRINTPAGERANGE; // // PrintDlgEx structure. // typedef struct tagPDEXA { DWORD lStructSize; // size of structure in bytes HWND hwndOwner; // caller's window handle HGLOBAL hDevMode; // handle to DevMode HGLOBAL hDevNames; // handle to DevNames HDC hDC; // printer DC/IC or NULL DWORD Flags; // PD_ flags DWORD Flags2; // reserved DWORD ExclusionFlags; // items to exclude from driver pages DWORD nPageRanges; // number of page ranges DWORD nMaxPageRanges; // max number of page ranges LPPRINTPAGERANGE lpPageRanges; // array of page ranges DWORD nMinPage; // min page number DWORD nMaxPage; // max page number DWORD nCopies; // number of copies HINSTANCE hInstance; // instance handle LPCSTR lpPrintTemplateName; // template name for app specific area LPUNKNOWN lpCallback; // app callback interface DWORD nPropertyPages; // number of app property pages in lphPropertyPages HPROPSHEETPAGE *lphPropertyPages; // array of app property page handles DWORD nStartPage; // start page id DWORD dwResultAction; // result action if S_OK is returned } PRINTDLGEXA, *LPPRINTDLGEXA; // // PrintDlgEx structure. // typedef struct tagPDEXW { DWORD lStructSize; // size of structure in bytes HWND hwndOwner; // caller's window handle HGLOBAL hDevMode; // handle to DevMode HGLOBAL hDevNames; // handle to DevNames HDC hDC; // printer DC/IC or NULL DWORD Flags; // PD_ flags DWORD Flags2; // reserved DWORD ExclusionFlags; // items to exclude from driver pages DWORD nPageRanges; // number of page ranges DWORD nMaxPageRanges; // max number of page ranges LPPRINTPAGERANGE lpPageRanges; // array of page ranges DWORD nMinPage; // min page number DWORD nMaxPage; // max page number DWORD nCopies; // number of copies HINSTANCE hInstance; // instance handle LPCWSTR lpPrintTemplateName; // template name for app specific area LPUNKNOWN lpCallback; // app callback interface DWORD nPropertyPages; // number of app property pages in lphPropertyPages HPROPSHEETPAGE *lphPropertyPages; // array of app property page handles DWORD nStartPage; // start page id DWORD dwResultAction; // result action if S_OK is returned } PRINTDLGEXW, *LPPRINTDLGEXW; #ifdef UNICODE typedef PRINTDLGEXW PRINTDLGEX; typedef LPPRINTDLGEXW LPPRINTDLGEX; #else typedef PRINTDLGEXA PRINTDLGEX; typedef LPPRINTDLGEXA LPPRINTDLGEX; #endif // UNICODE #endif class C_PrintDialogEx : public CPrintDialog { DECLARE_DYNAMIC(C_PrintDialogEx) BEGIN_INTERFACE_PART(PrintDialogCallback, IPrintDialogCallback) INIT_INTERFACE_PART(C_PrintDialogEx, PrintDialogCallback) STDMETHOD(InitDone)(); STDMETHOD(SelectionChange)(); STDMETHOD(HandleMessage)(HWND, UINT, WPARAM, LPARAM, LRESULT*); END_INTERFACE_PART(PrintDialogCallback) DECLARE_INTERFACE_MAP() public: C_PrintDialogEx(BOOL bPrintSetupOnly, DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE | PD_NOSELECTION, CWnd* pParentWnd = NULL); virtual INT_PTR DoModal(); virtual HRESULT OnInitDone(); virtual HRESULT OnSelectionChange(); virtual HRESULT OnHandleMessage(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT* pResult); PRINTDLGEX m_pdex; }; #endif