837 lines
14 KiB
C++
837 lines
14 KiB
C++
/*++
|
|
|
|
Copyright (C) Microsoft Corporation, 1995 - 1999
|
|
All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
prop.hxx
|
|
|
|
Abstract:
|
|
|
|
Printer properties header.
|
|
|
|
Author:
|
|
|
|
Albert Ting (AlbertT) 17-Aug-1995
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef _PRTPROP_HXX
|
|
#define _PRTPROP_HXX
|
|
|
|
/********************************************************************
|
|
|
|
Forward references.
|
|
|
|
********************************************************************/
|
|
class TPrinterPropertySheetManager;
|
|
class TPrtShare;
|
|
class TFindLocDlg;
|
|
|
|
/********************************************************************
|
|
|
|
Printer property sheet data.
|
|
|
|
********************************************************************/
|
|
|
|
class TPrinterData : public MSingletonWin, public MRefCom {
|
|
|
|
SIGNATURE( 'prtp' )
|
|
SAFE_NEW
|
|
|
|
public:
|
|
|
|
enum EPrinterPropPages {
|
|
kPropGeneral,
|
|
kPropSharing,
|
|
kPropPorts,
|
|
kPropJobScheduling,
|
|
kPropMax
|
|
};
|
|
|
|
enum EPublishState {
|
|
kNoAction,
|
|
kPublish,
|
|
kUnPublish,
|
|
kPublished,
|
|
kNotPublished,
|
|
kNoDsAvailable,
|
|
kUnInitalized,
|
|
};
|
|
|
|
enum EDsAvailableState {
|
|
kDsAvailable,
|
|
kDsNotAvailable,
|
|
kDsUnInitalized,
|
|
};
|
|
|
|
VAR( UINT, uStartPage );
|
|
|
|
VAR( BOOL, bValid );
|
|
VAR( BOOL, bNoAccess );
|
|
VAR( BOOL, bErrorSaving );
|
|
VAR( BOOL, bIsFaxDriver );
|
|
VAR( BOOL, bHideSharingUI );
|
|
VAR( BOOL, bGlobalDevMode );
|
|
VAR( BOOL, bDriverPagesNotLoaded );
|
|
VAR( BOOL, bApplyEnableState );
|
|
VAR( BOOL, bPooledPrinting );
|
|
VAR( BOOL, bDefaultPrinter );
|
|
VAR( BOOL, bServerFullAccess );
|
|
|
|
VAR( TString, strServerName );
|
|
VAR( LPCTSTR, pszServerName );
|
|
VAR( TString, strShareName );
|
|
VAR( TString, strDriverName );
|
|
VAR( TString, strComment );
|
|
VAR( TString, strLocation );
|
|
VAR( TString, strSheetName );
|
|
VAR( TString, strCurrentPrinterName );
|
|
|
|
VAR( TString, strPortName );
|
|
VAR( TString, strSepFile );
|
|
VAR( TString, strPrintProcessor );
|
|
VAR( TString, strDatatype );
|
|
VAR( TString, strStartPage );
|
|
VAR( TString, strDriverEnv );
|
|
VAR( TString, strDsPath );
|
|
VAR( TString, strObjectGUID );
|
|
|
|
VAR( HANDLE, hPrinter );
|
|
VAR( CAutoHandleIcon, shLargeIcon );
|
|
VAR( CAutoHandleIcon, shSmallIcon );
|
|
|
|
VAR( DWORD, dwAttributes );
|
|
VAR( DWORD, dwPriority );
|
|
VAR( DWORD, dwStartTime );
|
|
VAR( DWORD, dwUntilTime );
|
|
VAR( DWORD, dwStatus );
|
|
VAR( DWORD, dwAccess );
|
|
VAR( DWORD, dwDriverVersion );
|
|
VAR( DWORD, dwAction );
|
|
|
|
VAR( UINT, uMaxActiveCount );
|
|
VAR( UINT, uActiveCount );
|
|
|
|
VAR( PDEVMODE, pDevMode );
|
|
|
|
VAR( TPrinterPropertySheetManager *, pPrinterPropertySheetManager );
|
|
|
|
LONG_PTR _hPages[kPropMax];
|
|
HWND _hwndPages[kPropMax];
|
|
HWND _hwndLastPageSelected;
|
|
|
|
TPrinterData(
|
|
IN LPCTSTR pszPrinterName,
|
|
IN INT nCmdShow,
|
|
IN LPCTSTR pszSheetName,
|
|
IN DWORD dwSheetIndex,
|
|
IN HWND hwnd,
|
|
IN BOOL bModal,
|
|
IN LPCTSTR pszDsPath = NULL
|
|
);
|
|
|
|
~TPrinterData(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
bLoad(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vUnload(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
bSave(
|
|
IN BOOL bUpdateDevMode = FALSE
|
|
);
|
|
|
|
BOOL
|
|
bAdministrator(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
bSupportBidi(
|
|
VOID
|
|
);
|
|
|
|
EPublishState
|
|
ePrinterPublishState(
|
|
TPrinterData::EPublishState eNewPublishState = EPublishState::kUnInitalized
|
|
);
|
|
|
|
BOOL
|
|
bIsDsAvailable(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
bCheckForChange(
|
|
IN UINT uLevel = -1
|
|
);
|
|
|
|
INT
|
|
ComparePrinterName(
|
|
IN LPCTSTR pszPrinterName1,
|
|
IN LPCTSTR pszPrinterName2
|
|
);
|
|
|
|
private:
|
|
|
|
VOID
|
|
vRefZeroed(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
bDriverChangedGenPrinterName(
|
|
TString *pstrNewName
|
|
) const;
|
|
|
|
BOOL
|
|
bUpdateGlobalDevMode(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
bUpdatePerUserDevMode(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vGetSpecialInformation(
|
|
VOID
|
|
);
|
|
|
|
LPCTSTR
|
|
pGetAdjustedPrinterName(
|
|
IN LPCTSTR pszPrinterName,
|
|
OUT TString &strTempPrinterName
|
|
) const;
|
|
|
|
//
|
|
// Prevent copying and assignment.
|
|
//
|
|
TPrinterData(
|
|
const TPrinterData &
|
|
);
|
|
|
|
TPrinterData &
|
|
operator =(
|
|
const TPrinterData &
|
|
);
|
|
|
|
//
|
|
// Printer Info data class.
|
|
//
|
|
class TPrinterInfo {
|
|
|
|
SIGNATURE( 'prif' )
|
|
|
|
public:
|
|
|
|
TPrinterInfo(
|
|
VOID
|
|
);
|
|
|
|
~TPrinterInfo(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
bUpdate(
|
|
IN PPRINTER_INFO_2 pInfo
|
|
);
|
|
|
|
BOOL
|
|
bUpdate(
|
|
IN PPRINTER_INFO_7 pInfo
|
|
);
|
|
|
|
TString _strServerName;
|
|
TString _strPrinterName;
|
|
TString _strShareName;
|
|
TString _strDriverName;
|
|
TString _strComment;
|
|
TString _strLocation;
|
|
TString _strPortName;
|
|
TString _strSepFile;
|
|
TString _strPrintProcessor;
|
|
TString _strDatatype;
|
|
DWORD _dwAttributes;
|
|
DWORD _dwPriority;
|
|
DWORD _dwStartTime;
|
|
DWORD _dwUntilTime;
|
|
BOOL _bPooledPrinting;
|
|
|
|
TString _strObjectGUID;
|
|
DWORD _dwAction;
|
|
|
|
private:
|
|
|
|
//
|
|
// Prevent copying and assignment.
|
|
//
|
|
TPrinterInfo(
|
|
const TPrinterInfo &
|
|
);
|
|
|
|
TPrinterInfo &
|
|
operator =(
|
|
const TPrinterInfo &
|
|
);
|
|
|
|
};
|
|
|
|
EPublishState _ePrinterPublishState;
|
|
EDsAvailableState _eDsAvailableState;
|
|
TPrinterInfo _PrinterInfo;
|
|
};
|
|
|
|
/********************************************************************
|
|
|
|
PrinterProp.
|
|
|
|
Base class for printer property sheets. This class should not
|
|
not contain any information/services that is not generic to all
|
|
derived classes.
|
|
|
|
The printer property sheets should inherit from this class.
|
|
bHandleMessage (which is not overriden here) should be
|
|
defined in derived classes.
|
|
|
|
********************************************************************/
|
|
|
|
class TPrinterProp : public MGenericProp {
|
|
|
|
SIGNATURE( 'prpr' )
|
|
ALWAYS_VALID
|
|
SAFE_NEW
|
|
|
|
public:
|
|
|
|
//
|
|
// Serves as the thread start routine.
|
|
//
|
|
static
|
|
INT
|
|
iPrinterPropPagesProc(
|
|
TPrinterData* pPrinterData
|
|
);
|
|
|
|
protected:
|
|
|
|
VAR( TPrinterData*, pPrinterData );
|
|
|
|
TPrinterProp(
|
|
TPrinterData* pPrinterData
|
|
);
|
|
|
|
TPrinterProp(
|
|
const TPrinterProp &
|
|
);
|
|
|
|
TPrinterProp &
|
|
operator = (
|
|
const TPrinterProp &
|
|
);
|
|
|
|
VOID
|
|
vSetIcon(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vSetIconName(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vReloadPages(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vCancelToClose(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vSetApplyState(
|
|
IN BOOL bNewApplyState
|
|
);
|
|
|
|
virtual
|
|
BOOL
|
|
_bHandleMessage(
|
|
IN UINT uMsg,
|
|
IN WPARAM wParam,
|
|
IN LPARAM lParam
|
|
) = 0;
|
|
|
|
private:
|
|
|
|
BOOL
|
|
bHandleMessage(
|
|
IN UINT uMsg,
|
|
IN WPARAM wParam,
|
|
IN LPARAM lParam
|
|
);
|
|
|
|
BOOL
|
|
bHandle_InitDialog(
|
|
IN WPARAM wParam,
|
|
IN LPARAM lParam
|
|
);
|
|
|
|
BOOL
|
|
bHandle_Notify(
|
|
IN WPARAM wParam,
|
|
IN LPARAM lParam
|
|
);
|
|
|
|
BOOL
|
|
bHandle_SettingChange(
|
|
IN WPARAM wParam,
|
|
IN LPARAM lParam
|
|
);
|
|
|
|
VOID
|
|
vPropSheetChangedAllPages(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vPropSheetUnChangedAllPages(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vNotifyActivePagesToRefresh(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vApplyChanges(
|
|
VOID
|
|
);
|
|
|
|
};
|
|
|
|
|
|
/********************************************************************
|
|
|
|
General printer property page.
|
|
|
|
********************************************************************/
|
|
|
|
class TPrinterGeneral : public TPrinterProp {
|
|
|
|
SIGNATURE( 'gepr' )
|
|
SAFE_NEW
|
|
|
|
public:
|
|
|
|
TPrinterGeneral(
|
|
TPrinterData* pPrinterData
|
|
);
|
|
|
|
~TPrinterGeneral(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
bValid(
|
|
VOID
|
|
);
|
|
|
|
private:
|
|
|
|
/********************************************************************
|
|
|
|
Virtual override.
|
|
|
|
********************************************************************/
|
|
|
|
BOOL
|
|
_bHandleMessage(
|
|
IN UINT uMsg,
|
|
IN WPARAM wParam,
|
|
IN LPARAM lParam
|
|
);
|
|
|
|
BOOL
|
|
bSetUI(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vReadUI(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vHandleBrowseLocation(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vHandleDocumentDefaults(
|
|
IN WPARAM wParam,
|
|
IN LPARAM lParam
|
|
);
|
|
|
|
VOID
|
|
vReloadFeaturesInformation(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vSetActive(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vKillActive(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vCheckForSharedMasqPrinter(
|
|
VOID
|
|
);
|
|
|
|
BOOL _bSetUIDone;
|
|
TFindLocDlg *_pLocationDlg;
|
|
CMultilineEditBug m_wndComment;
|
|
};
|
|
|
|
|
|
/********************************************************************
|
|
|
|
Ports Property Page.
|
|
|
|
********************************************************************/
|
|
|
|
class TPrinterPorts : public TPrinterProp {
|
|
|
|
SIGNATURE( 'popr' )
|
|
SAFE_NEW
|
|
|
|
public:
|
|
|
|
TPrinterPorts(
|
|
TPrinterData *pPrinterData
|
|
);
|
|
|
|
~TPrinterPorts(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
bValid(
|
|
VOID
|
|
);
|
|
|
|
private:
|
|
|
|
TPortsLV _PortsLV;
|
|
BOOL _bAdminFlag;
|
|
|
|
/********************************************************************
|
|
|
|
Virtual override.
|
|
|
|
********************************************************************/
|
|
|
|
BOOL
|
|
_bHandleMessage(
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
BOOL
|
|
bSetUI(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vReadUI(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vSetActive(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
bKillActive(
|
|
VOID
|
|
);
|
|
|
|
};
|
|
|
|
|
|
/********************************************************************
|
|
|
|
Job Scheduling Property Page.
|
|
|
|
********************************************************************/
|
|
|
|
class TPrinterJobScheduling : public TPrinterProp {
|
|
|
|
SIGNATURE( 'jspr' )
|
|
SAFE_NEW
|
|
|
|
public:
|
|
|
|
TPrinterJobScheduling(
|
|
TPrinterData *pPrinterData
|
|
);
|
|
|
|
~TPrinterJobScheduling(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
bValid(
|
|
VOID
|
|
);
|
|
|
|
private:
|
|
|
|
enum _CONSTANTS {
|
|
kPriorityMin = 1,
|
|
kPriorityMax = 99,
|
|
};
|
|
|
|
BOOL _bSetUIDone;
|
|
|
|
/********************************************************************
|
|
|
|
Virtual override.
|
|
|
|
********************************************************************/
|
|
|
|
BOOL
|
|
_bHandleMessage(
|
|
IN UINT uMsg,
|
|
IN WPARAM wParam,
|
|
IN LPARAM lParam
|
|
);
|
|
|
|
BOOL
|
|
bSetUI(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vReadUI(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vEnableAvailable(
|
|
BOOL bEnable
|
|
);
|
|
|
|
VOID
|
|
vUpdatePriorityNumber(
|
|
DWORD dwPriority
|
|
);
|
|
|
|
BOOL
|
|
bSetStartAndUntilTime(
|
|
VOID
|
|
);
|
|
VOID
|
|
vSetActive(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vSeparatorPage(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vPrintProcessor(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vHandleGlobalDocumentDefaults(
|
|
IN WPARAM wParam,
|
|
IN LPARAM lParam
|
|
);
|
|
|
|
BOOL
|
|
bFillAndSelectDrivers(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vHandleNewDriver(
|
|
IN WPARAM wParam,
|
|
IN LPARAM lParam
|
|
);
|
|
|
|
};
|
|
|
|
|
|
/********************************************************************
|
|
|
|
Sharing Property Page.
|
|
|
|
********************************************************************/
|
|
|
|
class TPrinterSharing : public TPrinterProp {
|
|
|
|
SIGNATURE( 'sepr' )
|
|
SAFE_NEW
|
|
|
|
public:
|
|
|
|
TPrinterSharing(
|
|
TPrinterData *pPrinterData
|
|
);
|
|
|
|
~TPrinterSharing(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
bValid(
|
|
VOID
|
|
);
|
|
|
|
private:
|
|
|
|
TPrtShare *_pPrtShare;
|
|
BOOL _bHideListed;
|
|
BOOL _bSetUIDone;
|
|
BOOL _bAcceptInvalidDosShareName;
|
|
BOOL _bDefaultPublishState;
|
|
BOOL _bSharingEnabled;
|
|
TString _strPendingText;
|
|
TString _strShareName;
|
|
|
|
//
|
|
// Copying and assignment are not defined.
|
|
//
|
|
TPrinterSharing(
|
|
const TPrinterSharing &rhs
|
|
);
|
|
|
|
TPrinterSharing &
|
|
operator =(
|
|
const TPrinterSharing &rhs
|
|
);
|
|
|
|
VOID
|
|
vSetActive(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vSharePrinter(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vSetDefaultShareName(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vUnsharePrinter(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
bKillActive(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vAdditionalDrivers(
|
|
IN WPARAM wParam,
|
|
IN LPARAM lParam
|
|
);
|
|
|
|
/********************************************************************
|
|
|
|
Virtual override.
|
|
|
|
********************************************************************/
|
|
|
|
BOOL
|
|
_bHandleMessage(
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
BOOL
|
|
bSetUI(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
vReadUI(
|
|
VOID
|
|
);
|
|
|
|
};
|
|
|
|
/********************************************************************
|
|
|
|
Global scoped functions.
|
|
|
|
********************************************************************/
|
|
|
|
VOID
|
|
vPrinterPropPages(
|
|
IN HWND hwnd,
|
|
IN LPCTSTR pszPrinterName,
|
|
IN INT nCmdShow,
|
|
IN LPARAM lParam
|
|
);
|
|
|
|
DWORD
|
|
dwPrinterPropPages(
|
|
IN HWND hwnd,
|
|
IN IDataObject *pDataObject,
|
|
IN PBOOL pbDisplayed
|
|
);
|
|
|
|
DWORD
|
|
dwPrinterPropPages(
|
|
IN HWND hwnd,
|
|
IN LPCTSTR pszDsPath,
|
|
IN PBOOL pbDisplayed
|
|
);
|
|
|
|
DWORD
|
|
dwPrinterPropPagesInternal(
|
|
IN HWND hwnd,
|
|
IN LPCTSTR pszPrinterName,
|
|
IN LPCTSTR pszSheetName,
|
|
IN DWORD dwSheetIndex,
|
|
IN INT nCmdShow,
|
|
IN BOOL bModal,
|
|
IN LPCTSTR pszDsPath
|
|
);
|
|
|
|
#endif // def _PRTPROP_HXX
|