You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
209 lines
8.4 KiB
209 lines
8.4 KiB
|
|
/*-------------------------------------------------------------------
|
|
|
|
_printEx.h
|
|
|
|
|
|
HACK!
|
|
|
|
|
|
We need to add support for NT5 PrintDlgEx function but turns out
|
|
that the corresponding headers are included for WinVER = 0x0500 ..
|
|
but since WAB is being built with 0x0400, we can't include the
|
|
headers directly - so we have included a copy of the PrintDlgEx
|
|
|
|
At some point of time we should remove this copy and just use
|
|
commdlg.h
|
|
|
|
Created: 9/25/98 - Vikramm
|
|
--------------------------------------------------------------------*/
|
|
|
|
#ifdef STDMETHOD
|
|
|
|
#if(WINVER < 0x0500)
|
|
/*
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// IPrintDialogCallback Interface
|
|
//
|
|
// IPrintDialogCallback::InitDone()
|
|
// This function is called by PrintDlgEx when the system has finished
|
|
// initializing the main page of the print dialog. This function
|
|
// should return S_OK if it has processed the action or S_FALSE to let
|
|
// PrintDlgEx perform the default action.
|
|
//
|
|
// IPrintDialogCallback::SelectionChange()
|
|
// This function is called by PrintDlgEx when a selection change occurs
|
|
// in the list view that displays the currently installed printers.
|
|
// This function should return S_OK if it has processed the action or
|
|
// S_FALSE to let PrintDlgEx perform the default action.
|
|
//
|
|
// IPrintDialogCallback::HandleMessage(hDlg, uMsg, wParam, lParam, pResult)
|
|
// This function is called by PrintDlgEx when a message is sent to the
|
|
// child window of the main page of the print dialog. This function
|
|
// should return S_OK if it has processed the action or S_FALSE to let
|
|
// PrintDlgEx perform the default action.
|
|
//
|
|
// IObjectWithSite::SetSite(punkSite)
|
|
// IPrintDialogCallback usually paired with IObjectWithSite.
|
|
// Provides the IUnknown pointer of the site to QI for the
|
|
// IPrintDialogServices interface.
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
|
|
#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;
|
|
};
|
|
|
|
|
|
*/
|
|
|
|
//
|
|
// Page Range structure for PrintDlgEx.
|
|
//
|
|
typedef struct tagPRINTPAGERANGE {
|
|
DWORD nFromPage;
|
|
DWORD nToPage;
|
|
} PRINTPAGERANGE, *LPPRINTPAGERANGE;
|
|
|
|
#define START_PAGE_GENERAL 0xffffffff
|
|
|
|
//
|
|
// 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
|
|
|
|
HRESULT APIENTRY PrintDlgExA(LPPRINTDLGEXA);
|
|
HRESULT APIENTRY PrintDlgExW(LPPRINTDLGEXW);
|
|
#ifdef UNICODE
|
|
#define PrintDlgEx PrintDlgExW
|
|
#else
|
|
#define PrintDlgEx PrintDlgExA
|
|
#endif // !UNICODE
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
DEFINE_GUID(IID_IPrintDialogCallback, 0x5852a2c3, 0x6530, 0x11d1, 0xb6, 0xa3, 0x0, 0x0, 0xf8, 0x75, 0x7b, 0xf9);
|
|
|
|
/*--------------------------------------------------------------------------*/
|
|
#endif // (WINVER < 0x0500)
|
|
|
|
|
|
#define WAB_PRINTDIALOGCALLBACK_METHODS(IPURE) \
|
|
MAPIMETHOD_(HRESULT, InitDone) \
|
|
(THIS) IPURE; \
|
|
MAPIMETHOD_(HRESULT, SelectionChange) \
|
|
(THIS) IPURE; \
|
|
MAPIMETHOD_(HRESULT, HandleMessage) \
|
|
(THIS_ HWND hDlg, UINT uMsg, WPARAM wParam, \
|
|
LPARAM lParam, LRESULT *pResult) IPURE;
|
|
#undef INTERFACE
|
|
#define INTERFACE struct _WAB_PRINTDIALOGCALLBACK
|
|
|
|
#undef METHOD_PREFIX
|
|
#define METHOD_PREFIX WAB_PRINTDIALOGCALLBACK_
|
|
|
|
#undef LPVTBL_ELEM
|
|
#define LPVTBL_ELEM lpvtbl
|
|
|
|
#undef MAPIMETHOD_
|
|
#define MAPIMETHOD_(type, method) MAPIMETHOD_DECLARE(type, method, WAB_PRINTDIALOGCALLBACK_)
|
|
MAPI_IUNKNOWN_METHODS(IMPL)
|
|
WAB_PRINTDIALOGCALLBACK_METHODS(IMPL)
|
|
#undef MAPIMETHOD_
|
|
#define MAPIMETHOD_(type, method) MAPIMETHOD_TYPEDEF(type, method, WAB_PRINTDIALOGCALLBACK_)
|
|
MAPI_IUNKNOWN_METHODS(IMPL)
|
|
WAB_PRINTDIALOGCALLBACK_METHODS(IMPL)
|
|
#undef MAPIMETHOD_
|
|
#define MAPIMETHOD_(type, method) STDMETHOD_(type, method)
|
|
|
|
DECLARE_MAPI_INTERFACE(WAB_PRINTDIALOGCALLBACK_)
|
|
{
|
|
BEGIN_INTERFACE
|
|
MAPI_IUNKNOWN_METHODS(IMPL)
|
|
WAB_PRINTDIALOGCALLBACK_METHODS(IMPL)
|
|
};
|
|
|
|
typedef struct _WAB_PRINTDIALOGCALLBACK
|
|
{
|
|
MAPIX_BASE_MEMBERS(WAB_PRINTDIALOGCALLBACK)
|
|
|
|
LPIAB lpIAB;
|
|
|
|
DWORD dwSelectedStyle;
|
|
|
|
} WABPRINTDIALOGCALLBACK, * LPWABPRINTDIALOGCALLBACK;
|
|
|
|
HRESULT HrCreatePrintCallbackObject(LPIAB lpIAB, LPWABPRINTDIALOGCALLBACK * lppWABPCO, DWORD dwSelectedStyle);
|
|
|
|
|
|
#endif
|
|
|