|
|
/*++
Copyright (c) 1990-1995 Microsoft Corporation
Module Name:
apilayer.h
Abstract:
This module contains all API layer's definiton
Author:
02-Jan-1996 Tue 13:28:08 created -by- Daniel Chou (danielc)
[Environment:]
NT Windows - Common Printer Driver UI DLL
[Notes:]
Revision History:
--*/
#ifndef CPSUI_APILAYER
#define CPSUI_APILAYER
//================= Internal Data structures =============================
//
#define TABTABLE_COUNT (MAXPROPPAGES + 3)
#define TAB_MODE_INIT 0
#define TAB_MODE_FIND 1
#define TAB_MODE_INSERT 2
#define TAB_MODE_DELETE 3
#define TAB_MODE_DELETE_ALL 4
#define GET_REAL_INSIDX(ptbl) ((ptbl)->TabInfo[(ptbl)->InsIdx].OrgInsIdx)
#define DP_STD_INT_TVPAGE DP_STD_RESERVED_START
#define COUNT_POSTSETCURSEL 32
typedef struct _TABINFO { SHORT OrgInsIdx; WORD HandleIdx; HWND hDlg; } TABINFO, *PTABINFO;
#define TTF_POST_SETCURSEL 0x0001
typedef struct _TABTABLE { struct _TABTABLE *pTabTable; HWND hPSDlg; HWND hWndTab; WNDPROC WndProc; WORD cPostSetCurSel; SHORT iPostSetCurSel; WORD cTab; WORD CurSel; WORD InsIdx; WORD HandleIdx; TABINFO TabInfo[TABTABLE_COUNT]; } TABTABLE, *PTABTABLE;
#define CPSUIPAGE_ID 0x43444955
#define CPF_ROOT 0x00000001
#define CPF_PARENT 0x00000002
#define CPF_PFNPROPSHEETUI 0x00000004
#define CPF_COMPROPSHEETUI 0x00000008
#define CPF_USER_GROUP 0x00000010
#define CPF_DLL 0x00000020
#define CPF_CALLER_HPSPAGE 0x00000040
#define CPF_ANSI_CALL 0x00000080
#define CPF_DONE_PROPSHEET 0x00000100
#define CPF_DONE_PROPSHEETPROC 0x00000200
#define CPF_SHOW_PROPSHEET 0x00000400
#define CPF_DOCPROP 0x00000800
#define CPF_ADVDOCPROP 0x00001000
#define CPF_PRINTERPROP 0x00002000
#define CPF_CALL_TV_DIRECT 0x00004000
#define CPF_NO_PSN_APPLY 0x00008000
#define CPF_HAS_CPSUI 0x00010000
#define CPF_NO_APPLY_BUTTON 0x00020000
#define CPF_ACTIVATED 0x00040000
#define CPF_DLGPROC_CHANGED 0x00080000
#define CPF_PSZ_PSTARTPAGE 0x00100000
typedef struct _CPSUIPAGE;
typedef struct _MYDATABLOCK { struct _MYDATABLOCK *pNext; DWORD ID; DWORD cb; } MYDATABLOCK, *PMYDATABLOCK;
#define SIZE_DB(c) (sizeof(MYDATABLOCK) + (c))
typedef struct _ROOTINFO { HWND hDlg; LPDWORD pResult; PTABTABLE pTabTable; struct _CPSUIPAGE *pStartPage; WORD cPage; WORD cCPSUIPage; DWORD DMPubHideBits; PMYDATABLOCK pMyDB; } ROOTINFO, *PROOTINFO;
typedef struct _PFNINFO { HINSTANCE hInst; PFNPROPSHEETUI pfnPSUI; LPARAM lParamInit; ULONG_PTR UserData; ULONG_PTR Result; } PFNINFO, *PPFNINFO;
typedef struct _CPSUIINFO { PTVWND pTVWnd; LONG Result; LONG TVPageIdx; LONG StdPageIdx1; LONG StdPageIdx2; } CPSUIINFO, PCPSUIINFO;
typedef struct _HPAGEINFO { HWND hDlg; DLGPROC DlgProc; LPFNPSPCALLBACK pspCB; LPARAM lParam; HICON hIcon; DWORD dwSize; } HPAGEINFO, *PHPAGEINFO;
typedef struct _CPSUIPAGE { DWORD ID; DWORD cLock; DWORD Flags; HANDLE hCPSUIPage; HANDLE hActCtx; struct _CPSUIPAGE *pParent; struct _CPSUIPAGE *pPrev; struct _CPSUIPAGE *pNext; union { struct _CPSUIPAGE *pChild; HPROPSHEETPAGE hPage; } DUMMYUNIONNAME; union { ROOTINFO RootInfo; PFNINFO pfnInfo; CPSUIINFO CPSUIInfo; HPAGEINFO hPageInfo; } DUMMYUNIONNAME2; } CPSUIPAGE, *PCPSUIPAGE;
typedef BOOL (CALLBACK *CPSUIPAGEENUMPROC)(PCPSUIPAGE pRootPage, PCPSUIPAGE pCPSUIPage, LPARAM lParam);
#define SET_APPLY_BUTTON(pTVWnd, hDlg) \
{ \ if (!(*((pTVWnd)->pRootFlags) & CPF_NO_APPLY_BUTTON)) { \ \ if (CountRevertOptItem((pTVWnd), \ NULL, \ TreeView_GetRoot((pTVWnd)->hWndTV), \ 0)) { \ \ PropSheet_Changed(GetParent(hDlg), hDlg); \ \ } else { \ \ PropSheet_UnChanged(GetParent(hDlg), hDlg); \ } \ } \ }
#define HINSPSUIPAGE_2_IDX(h) ((UINT)LOWORD(LODWORD(h)))
#define ARRAYSIZE(x) (sizeof(x)/sizeof(x[0]))
//
// Local structure
//
typedef struct _PSPEX { PROPSHEETPAGE psp; PSPINFO pspInfo; } PSPEX, *PPSPEX;
typedef struct _PSHINFO { WCHAR CaptionName[MAX_RES_STR_CHARS]; } PSHINFO, *PPSHINFO;
typedef struct _PAGEPROCINFO { PTABTABLE pTabTable; HPROPSHEETPAGE *phPage; HANDLE *pHandle; WORD cPage; WORD iPage; } PAGEPROCINFO, *PPAGEPROCINFO;
typedef struct _INSPAGEIDXINFO { PCPSUIPAGE pCPSUIPage; PTABTABLE pTabTable; } INSPAGEIDXINFO, *PINSPAGEIDXINFO;
//
// Function prototypes
//
DWORD FilterException( HANDLE hPage, LPEXCEPTION_POINTERS pExceptionPtr );
BOOL CALLBACK SetInsPageIdxProc( PCPSUIPAGE pRootPage, PCPSUIPAGE pCPSUIPage, LPARAM lParam );
LONG_PTR CALLBACK CPSUICallBack( HANDLE hComPropSheet, UINT Function, LPARAM lParam1, LPARAM lParam2 );
LONG AddComPropSheetPage( PCPSUIPAGE pCPSUIPage, UINT PageIdx );
BOOL EnumCPSUIPagesSeq( PCPSUIPAGE pRootPage, PCPSUIPAGE pCPSUIPage, CPSUIPAGEENUMPROC CPSUIPageEnumProc, LPARAM lParam );
BOOL GetPageActivationContext( PCPSUIPAGE pCPSUIPage, HANDLE *phActCtx );
#endif // CPSUI_APILAYER
|