|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows NT Security
// Copyright (C) Microsoft Corporation, 1992 - 1999
//
// File: acuictl.h
//
// Contents: UI Control class definitions
//
// History: 12-May-97 kirtd Created
//
//----------------------------------------------------------------------------
#if !defined(__ACUICTL_H__)
#define __ACUICTL_H__
//
// Forward class declaration
//
class CInvokeInfoHelper;
//
// Link subclass definitions
//
typedef struct _TUI_LINK_SUBCLASS_DATA {
HWND hwndParent; WNDPROC wpPrev; DWORD_PTR uToolTipText; DWORD uId; HWND hwndTip; LPVOID pvData; BOOL fMouseCaptured;
} TUI_LINK_SUBCLASS_DATA, *PTUI_LINK_SUBCLASS_DATA;
//
// IACUIControl abstract base class interface. This is used by the
// invoke UI entry point to put up the appropriate UI. There are different
// implementations of this interface based on the invoke reason code
//
class IACUIControl { public:
//
// Constructor
//
IACUIControl (CInvokeInfoHelper& riih);
//
// Virtual destructor
//
virtual ~IACUIControl ();
//
// UI Message processing
//
virtual BOOL OnUIMessage ( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
void LoadActionText(WCHAR **ppszRet, WCHAR *pwszIn, DWORD dwDefId); void SetupButtons(HWND hwnd);
//
// Pure virtual methods
//
virtual HRESULT InvokeUI (HWND hDisplay) = 0;
virtual BOOL OnInitDialog (HWND hwnd, WPARAM wParam, LPARAM lParam) = 0;
virtual BOOL OnYes (HWND hwnd) = 0;
virtual BOOL OnNo (HWND hwnd) = 0;
virtual BOOL OnMore (HWND hwnd) = 0;
protected:
//
// Invoke Info Helper reference
//
CInvokeInfoHelper& m_riih;
//
// Invoke result
//
HRESULT m_hrInvokeResult;
WCHAR *m_pszCopyActionText; WCHAR *m_pszCopyActionTextNoTS; WCHAR *m_pszCopyActionTextNotSigned; };
//
// CVerifiedTrustUI class is used to invoke authenticode UI where the
// trust hierarchy for the signer has been successfully verified and the
// user has to make an override decision
//
class CVerifiedTrustUI : public IACUIControl { public:
//
// Initialization
//
CVerifiedTrustUI (CInvokeInfoHelper& riih, HRESULT& rhr);
~CVerifiedTrustUI ();
//
// IACUIControl methods
//
virtual HRESULT InvokeUI (HWND hDisplay);
virtual BOOL OnInitDialog (HWND hwnd, WPARAM wParam, LPARAM lParam);
virtual BOOL OnYes (HWND hwnd);
virtual BOOL OnNo (HWND hwnd);
virtual BOOL OnMore (HWND hwnd);
private:
//
// Formatted strings for display
//
LPWSTR m_pszInstallAndRun; LPWSTR m_pszAuthenticity; LPWSTR m_pszCaution; LPWSTR m_pszPersonalTrust;
//
// links
//
TUI_LINK_SUBCLASS_DATA m_lsdPublisher; TUI_LINK_SUBCLASS_DATA m_lsdOpusInfo; TUI_LINK_SUBCLASS_DATA m_lsdCA; TUI_LINK_SUBCLASS_DATA m_lsdAdvanced; };
//
// CUnverifiedTrustUI class is used to invoke authenticode UI where the
// trust hierarchy for the signer has been NOT been successfully verified and
// the user has to make an override decision
//
class CUnverifiedTrustUI : public IACUIControl { public:
//
// Initialization
//
CUnverifiedTrustUI (CInvokeInfoHelper& riih, HRESULT& rhr);
~CUnverifiedTrustUI ();
//
// IACUIControl methods
//
virtual HRESULT InvokeUI (HWND hDisplay);
virtual BOOL OnInitDialog (HWND hwnd, WPARAM wParam, LPARAM lParam);
virtual BOOL OnYes (HWND hwnd);
virtual BOOL OnNo (HWND hwnd);
virtual BOOL OnMore (HWND hwnd);
private:
//
// Formatted strings for display
//
LPWSTR m_pszNoAuthenticity; LPWSTR m_pszProblemsBelow; LPWSTR m_pszInstallAndRun3;
//
// links
//
TUI_LINK_SUBCLASS_DATA m_lsdPublisher; TUI_LINK_SUBCLASS_DATA m_lsdOpusInfo; TUI_LINK_SUBCLASS_DATA m_lsdCA; TUI_LINK_SUBCLASS_DATA m_lsdAdvanced; };
//
// CNoSignatureUI class is used to invoke authenticode UI where the
// there is no signature for the subject and the user has to make an
// override decision
//
class CNoSignatureUI : public IACUIControl { public:
//
// Initialization
//
CNoSignatureUI (CInvokeInfoHelper& riih, HRESULT& rhr);
~CNoSignatureUI ();
//
// IACUIControl methods
//
virtual HRESULT InvokeUI (HWND hDisplay);
virtual BOOL OnInitDialog (HWND hwnd, WPARAM wParam, LPARAM lParam);
virtual BOOL OnYes (HWND hwnd);
virtual BOOL OnNo (HWND hwnd);
virtual BOOL OnMore (HWND hwnd);
private:
//
// Formatted strings for display
//
LPWSTR m_pszInstallAndRun2; LPWSTR m_pszNoPublisherFound; };
//
// ACUIMessageProc, this dialog message procedure is used to dispatch
// dialog messages to the control
//
INT_PTR CALLBACK ACUIMessageProc ( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
//
// Subclassing helper routines and definitions
//
VOID SubclassEditControlForArrowCursor (HWND hwndEdit);
LRESULT CALLBACK ACUISetArrowCursorSubclass ( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
VOID SubclassEditControlForLink ( HWND hwndDlg, HWND hwndEdit, WNDPROC wndproc, PTUI_LINK_SUBCLASS_DATA plsd );
LRESULT CALLBACK ACUILinkSubclass ( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
//
// UI control resizing helper functions
//
VOID RebaseControlVertical ( HWND hwndDlg, HWND hwnd, HWND hwndNext, BOOL fResizeForText, int deltavpos, int oline, int minsep, int* pdeltaheight );
int CalculateControlVerticalDistanceFromDlgBottom (HWND hwnd, UINT Control);
int CalculateControlVerticalDistance (HWND hwnd, UINT Control1, UINT Control2);
VOID ACUICenterWindow (HWND hWndToCenter);
int GetEditControlMaxLineWidth (HWND hwndEdit, HDC hdc, int cline);
void DrawFocusRectangle (HWND hwnd, HDC hdc);
void AdjustEditControlWidthToLineCount(HWND hwnd, int cline, TEXTMETRIC* ptm);
//
// Miscellaneous definitions
//
#define MAX_LOADSTRING_BUFFER 1024
//
// Resource string formatting helper
//
HRESULT FormatACUIResourceString ( UINT StringResourceId, DWORD_PTR* aMessageArgument, LPWSTR* ppszFormatted );
//
// Rendering helper
//
int RenderACUIStringToEditControl ( HWND hwndDlg, UINT ControlId, UINT NextControlId, LPCWSTR psz, int deltavpos, BOOL fLink, WNDPROC wndproc, PTUI_LINK_SUBCLASS_DATA plsd, int minsep, LPCWSTR pszThisTextOnlyInLink );
//
// HTML help viewing helper
//
VOID ACUIViewHTMLHelpTopic (HWND hwnd, LPSTR pszTopic);
//
// Hotkey helpers
//
int GetHotKeyCharPositionFromString (LPWSTR pwszText);
int GetHotKeyCharPosition (HWND hwnd);
VOID FormatHotKeyOnEditControl (HWND hwnd, int hkcharpos);
#endif
|