windows-nt/Source/XPSP1/NT/shell/ext/hnw/wizard/myprsht.h
2020-09-26 16:20:57 +08:00

87 lines
2.2 KiB
C++

//
// MyPrSht.h
//
#pragma once
#include "CWnd.h"
// Public functions
//
INT_PTR MyPropertySheet(LPCPROPSHEETHEADER pHeader);
HPROPSHEETPAGE MyCreatePropertySheetPage(LPPROPSHEETPAGE psp);
// CMyPropSheet -- used internally by MyPrSht.cpp
//
class CMyPropSheet : public CWnd
{
public:
CMyPropSheet();
void Release() { CWnd::Release(); };
BOOL Attach(HWND hwnd) {return CWnd::Attach(hwnd); };
INT_PTR DoPropSheet(LPCPROPSHEETHEADER pHeader);
LPPROPSHEETPAGE GetCurrentPropSheetPage();
// Message handler for WM_CTLCOLOR* messages - public so prop pages
// can call it directly.
HBRUSH OnCtlColor(UINT message, HDC hdc, HWND hwndControl);
inline void OnSetActivePage(HWND hwnd)
{ m_hwndActive = hwnd; }
inline HWND GetActivePage()
{ return m_hwndActive; }
protected:
~CMyPropSheet();
// Virtual function overrides
LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
// Implementation
static LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam);
void PaintHeader(HDC hdc, LPPROPSHEETPAGE ppsp);
void PaintWatermark(HDC hdc, LPPROPSHEETPAGE ppsp);
void InitColorSettings();
void LoadBitmaps();
public:
void SetHeaderFonts();
int ComputeHeaderHeight(int dxMax);
int WriteHeaderTitle(HDC hdc, LPRECT prc, LPCTSTR pszTitle, BOOL bTitle, DWORD dwDrawFlags);
protected:
LPPROPSHEETHEADER m_pRealHeader;
HHOOK m_hHook;
HBRUSH m_hbrWindow;
HBRUSH m_hbrDialog;
HWND m_hwndActive;
HBITMAP m_hbmWatermark;
HBITMAP m_hbmHeader;
HPALETTE m_hpalWatermark;
HFONT m_hFontBold;
int m_ySubTitle;
};
// Note: we can't subclass from CWnd because the wizard property pages
// are already CWnd's, and we can't have 2 CWnd's for a single HWND.
class CMyPropPage : public CWnd
{
public:
void Release() { CWnd::Release(); };
BOOL Attach(HWND hwnd) {return CWnd::Attach(hwnd); };
static CMyPropPage* FromHandle(HWND hwnd);
LPPROPSHEETPAGE GetPropSheetPage();
protected:
LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
LPPROPSHEETPAGE m_ppspOriginal;
};