132 lines
4.9 KiB
C++
132 lines
4.9 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
|