windows-nt/Source/XPSP1/NT/shell/themes/themeui/previewth.h
2020-09-26 16:20:57 +08:00

132 lines
4.8 KiB
C++

/*****************************************************************************\
FILE: PreviewTh.h
DESCRIPTION:
This code will display a preview of the currently selected
visual styles.
BryanSt 5/5/2000
Copyright (C) Microsoft Corp 2000-2000. All rights reserved.
\*****************************************************************************/
#ifndef _PREVIEWTHEME_H
#define _PREVIEWTHEME_H
#include <cowsite.h>
#include "classfactory.h"
#define MAX_PREVIEW_ICONS 4
class CPreviewTheme : public CObjectWithSite
, public IThemePreview
{
public:
//////////////////////////////////////////////////////
// Public Interfaces
//////////////////////////////////////////////////////
// *** IUnknown ***
virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj);
virtual STDMETHODIMP_(ULONG) AddRef(void);
virtual STDMETHODIMP_(ULONG) Release(void);
// *** IThemePreview ***
virtual STDMETHODIMP UpdatePreview(IN IPropertyBag * pPropertyBag);
virtual STDMETHODIMP CreatePreview(IN HWND hwndParent, IN DWORD dwFlags, IN DWORD dwStyle, IN DWORD dwExStyle, IN int x, IN int y, IN int nWidth, IN int nHeight, IN IPropertyBag * pPropertyBag, IN DWORD dwCtrlID);
STDMETHODIMP _Init(void);
CPreviewTheme();
protected:
private:
virtual ~CPreviewTheme(void);
// Private Member Variables
long m_cRef;
ITheme * m_pTheme;
IThemeScheme * m_pScheme;
IThemeStyle * m_pStyle;
IThemeSize * m_pSize;
HWND _hwndPrev;
TCHAR _szNone[CCH_NONE]; // this is the '(None)' string
RECT _rcOuter; // Size of double buffer bitmap
RECT _rcInner; // Size of region within the "monitor"
// Double buffering globals
HDC _hdcMem; // memory DC
HPALETTE _hpalMem; // palette that goes with hbmBack bitmap
BOOL _fMemIsDirty; // Dirty flag for image cache
BOOL _fRTL;
// Monitor globals
BOOL _fShowMon;
int _cxMon;
int _cyMon;
HBITMAP _hbmMon;
// Background globals
WCHAR _szBackgroundPath[MAX_PATH];
BOOL _fShowBack;
int _iTileMode;
BOOL _fHTMLBitmap;
int _iNewTileMode; // This is the new value to be used when the images is recieved
DWORD _dwWallpaperID;
HBITMAP _hbmBack; // bitmap image of wallpaper
HBRUSH _hbrBack; // brush for the desktop background
IThumbnail* _pThumb;
IActiveDesktop * _pActiveDesk;
// Visual Style globals
WCHAR _szVSPath[MAX_PATH];
WCHAR _szVSColor[MAX_PATH];
WCHAR _szVSSize[MAX_PATH];
SYSTEMMETRICSALL _systemMetricsAll;
BOOL _fShowVS;
HBITMAP _hbmVS; // bitmp for Visual Style
BOOL _fOnlyActiveWindow;
// Icon globals
BOOL _fShowIcons;
typedef struct ICONLISTtag {
HICON hicon;
WCHAR szName[MAX_PATH];
} ICONLIST;
ICONLIST _iconList[MAX_PREVIEW_ICONS];
// Taskbar globals
BOOL _fShowTaskbar;
BOOL _fAutoHide;
BOOL _fShowClock;
BOOL _fGlomming;
HWND _hwndTaskbar;
// Private Member Functions
BOOL _RegisterThemePreviewClass(HINSTANCE hInst);
static LRESULT ThemePreviewWndProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam);
LRESULT _ThemePreviewWndProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam);
STDMETHODIMP _putBackground(IN BSTR bstrWallpaper, IN BOOL fPattern, IN int iTileMode);
STDMETHODIMP _putVisualStyle(LPCWSTR pszVSPath, LPCWSTR pszVSColor, LPCWSTR pszVSSize, SYSTEMMETRICSALL* psysMet);
STDMETHODIMP _putIcons(IPropertyBag* pPropertyBag);
STDMETHODIMP _ReadPattern(LPTSTR lpStr, WORD FAR *patbits);
STDMETHODIMP _PaletteFromDS(HDC hdc, HPALETTE* phPalette);
STDMETHODIMP _DrawMonitor(HDC hdc);
STDMETHODIMP _DrawBackground(HDC hdc);
STDMETHODIMP _DrawVisualStyle(HDC hdc);
STDMETHODIMP _DrawIcons(HDC hdc);
STDMETHODIMP _DrawTaskbar(HDC hdc);
STDMETHODIMP _Paint(HDC hdc);
STDMETHODIMP _putBackgroundBitmap(HBITMAP hbm);
BOOL _IsNormalWallpaper(LPCWSTR pszFileName);
BOOL _IsWallpaperPicture(LPCWSTR pszWallpaper);
STDMETHODIMP _LoadWallpaperAsync(LPCWSTR pszFile, DWORD dwID, BOOL bHTML);
STDMETHODIMP _GetWallpaperAsync(LPWSTR pszWallpaper);
STDMETHODIMP _GetActiveDesktop(IActiveDesktop ** ppActiveDesktop);
};
#endif // _PREVIEWTHEME_H