370 lines
7.9 KiB
C++
370 lines
7.9 KiB
C++
//+---------------------------------------------------------------------------
|
|
//
|
|
// 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
|