Leaked source code of windows server 2003
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
7.6 KiB

/////////////////////////////////////////////////////////////////////////////
// Copyright (C) 1993-1996 Microsoft Corporation. All Rights Reserved.
//
// MODULE: spoolui.h
//
// PURPOSE: Defines the spooler UI classes, prototypes, constants, etc.
//
#ifndef __SPOOLUI_H__
#define __SPOOLUI_H__
#include "spoolapi.h"
#include "msident.h"
class CNewsTask;
/////////////////////////////////////////////////////////////////////////////
// Spooler UI class
//
class CSpoolerDlg :
public ISpoolerUI,
public IIdentityChangeNotify
{
public:
/////////////////////////////////////////////////////////////////////////
// Constructor, destructor, initialization
CSpoolerDlg();
~CSpoolerDlg();
/////////////////////////////////////////////////////////////////////////
// IUnknown Interface
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj);
STDMETHOD_(ULONG, AddRef)(THIS);
STDMETHOD_(ULONG, Release)(THIS);
/////////////////////////////////////////////////////////////////////////
// ISpoolerUI Interface
STDMETHOD(Init)(HWND hwndParent);
STDMETHOD(RegisterBindContext)(ISpoolerBindContext *pBindCtx);
STDMETHOD(InsertEvent)(EVENTID eid, LPCSTR pszDescription,
LPCWSTR pwszConnection);
STDMETHOD(InsertError)(EVENTID eid, LPCSTR pszError);
STDMETHOD(UpdateEventState)(EVENTID eid, INT nImage, LPCSTR pszDescription,
LPCSTR pszStatus);
STDMETHOD(SetProgressRange)(WORD wMax);
STDMETHOD(IncrementProgress)(WORD wDelta);
STDMETHOD(SetProgressPosition)(WORD wPos);
STDMETHOD(SetGeneralProgress)(LPCSTR pszProgress);
STDMETHOD(SetSpecificProgress)(LPCSTR pszProgress);
STDMETHOD(SetAnimation)(int nAnimationId, BOOL fPlay);
STDMETHOD(EnsureVisible)(EVENTID eid);
STDMETHOD(ShowWindow)(int nCmdShow);
STDMETHOD(GetWindow)(HWND *pHwnd);
STDMETHOD(StartDelivery)(void);
STDMETHOD(GoIdle)(BOOL fErrors, BOOL fShutdown, BOOL fNoSync);
STDMETHOD(ClearEvents)(void);
STDMETHOD(SetTaskCounts)(DWORD cSucceeded, DWORD cTotal);
STDMETHOD(IsDialogMessage)(LPMSG pMsg);
STDMETHOD(Close)(void);
STDMETHOD(ChangeHangupOption)(BOOL fEnable, DWORD dwOption);
STDMETHOD(AreThereErrors)(void);
STDMETHOD(Shutdown)(void);
/////////////////////////////////////////////////////////////////////////
// IIdentityChangeNotify Interface
virtual STDMETHODIMP QuerySwitchIdentities();
virtual STDMETHODIMP SwitchIdentities();
virtual STDMETHODIMP IdentityInformationChanged(DWORD dwType);
/////////////////////////////////////////////////////////////////////////
// Dialog message handling
protected:
static INT_PTR CALLBACK SpoolerDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
static LRESULT CALLBACK ListSubClassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
BOOL OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);
void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
LRESULT OnNotify(HWND hwnd, int idFrom, LPNMHDR pnmhdr);
void OnDrawItem(HWND hwnd, const DRAWITEMSTRUCT* lpDrawItem);
void OnMeasureItem(HWND hwnd, MEASUREITEMSTRUCT * lpMeasureItem);
void OnDeleteItem(HWND hwnd, const DELETEITEMSTRUCT * lpDeleteItem);
void OnClose(HWND hwnd);
void OnDestroy(HWND hwnd);
void OnContextMenu(HWND hwnd, HWND hwndContext, UINT xPos, UINT yPos);
void OnTabChange(LPNMHDR pnmhdr);
/////////////////////////////////////////////////////////////////////////
// UI Utility functions
BOOL InitializeTabs(void);
BOOL InitializeLists(void);
BOOL InitializeAnimation(void);
BOOL InitializeToolbar(void);
void ExpandCollapse(BOOL fExpand, BOOL fSetFocus=TRUE);
void UpdateLists(BOOL fEvents, BOOL fErrors, BOOL fHistory);
void ToggleStatics(BOOL fIdle);
/////////////////////////////////////////////////////////////////////////
// Class member data
private:
ULONG m_cRef; // Object reference count
// Interfaces
ISpoolerBindContext *m_pBindCtx; // Interface to communicate with the engine
// Window handles
HWND m_hwnd; // Handle of the primary dialog window
HWND m_hwndOwner; // Handle of the window that parents the dialog
HWND m_hwndEvents; // Handle of the listview which displays the event list
HWND m_hwndErrors; // Handle of the listview which displays errors
CRITICAL_SECTION m_cs; // Thread safety
// Drawing info
HIMAGELIST m_himlImages; // Images shared by the list views
DWORD m_cxErrors; // Width of the error list box
// State
BOOL m_fTack; // TRUE if the tack is pressed
BOOL m_iTab; // Which tab currently has the foreground
BOOL m_fExpanded; // TRUE if the details part of the dialog is visible
RECT m_rcDlg; // Size of the fully expanded dialog
DWORD m_cyCollapsed; // Height of the collapsed dialog
BOOL m_fIdle; // TRUE if we're in an idle state
BOOL m_fErrors; // Are errors in the error box
BOOL m_fShutdown; // Are we in shutdown mode
BOOL m_fSaveSize; // Set to TRUE if we should persist our expanded / collapsed state
// Strings
TCHAR m_szCount[256];
HICON m_hIcon,
m_hIconSm;
DWORD m_dwIdentCookie;
};
/////////////////////////////////////////////////////////////////////////////
// Structures
//
typedef struct tagLBDATA
{
LPTSTR pszText;
RECT rcText;
EVENTID eid;
} LBDATA;
/////////////////////////////////////////////////////////////////////////////
// Images
//
enum {
IMAGE_BLANK = 0,
IMAGE_TACK_IN,
IMAGE_TACK_OUT,
IMAGE_ERROR,
IMAGE_CHECK,
IMAGE_BULLET,
IMAGE_EXECUTE,
IMAGE_WARNING,
IMAGE_MAX
};
#define BULLET_WIDTH 20
#define BULLET_INDENT 2
/////////////////////////////////////////////////////////////////////////////
// Tabs on the details dialog
//
enum {
TAB_TASKS,
TAB_ERRORS,
TAB_MAX
};
const int c_cxImage = 16;
const int c_cyImage = 16;
/////////////////////////////////////////////////////////////////////////////
// Resource ID's
//
#define IDC_SP_MINIMIZE 1001
#define IDC_SP_STOP 1002
#define IDC_SP_DETAILS 1003
#define IDC_SP_SEPARATOR 1004
#define IDC_SP_ANIMATE 1006
#define IDC_SP_PROGRESS_BAR 1007
#define IDC_SP_GENERAL_PROG 1009
#define IDC_SP_SPECIFIC_PROG 1010
#define IDC_SP_TABS 1011
#define IDC_SP_SKIP_TASK 1012
#define IDC_SP_TACK 1015
#define IDC_SP_OVERALL_STATUS 1016
#define IDC_SP_EVENTS 1017
#define IDC_SP_ERRORS 1018
#define IDC_SP_TOOLBAR 1019
#define IDC_SP_HANGUP 1020
#define IDC_SP_IDLETEXT 1021
#define IDC_SP_IDLEICON 1022
#define IDC_SP_PROGSTAT 1023
#endif // __SPOOLUI_H__