Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

245 lines
12 KiB

  1. #ifndef _DUTIL_H_
  2. #define _DUTIL_H_
  3. #include "local.h"
  4. #include "deskstat.h"
  5. extern "C" LONG g_cRefThisDll;
  6. typedef struct _EnumMonitorsArea
  7. {
  8. int iMonitors;
  9. RECT rcWorkArea[LV_MAX_WORKAREAS];
  10. RECT rcMonitor[LV_MAX_WORKAREAS];
  11. RECT rcVirtualMonitor;
  12. RECT rcVirtualWorkArea; //Excluding the tray/toolbar areas
  13. } EnumMonitorsArea;
  14. void SaveDefaultFolderSettings();
  15. BOOL GetFileName(HWND hdlg, LPTSTR pszFileName, int iSize, int iTypeId[], DWORD dwFlags[]);
  16. void PatternToDwords(LPTSTR psz, DWORD *pdwBits);
  17. void PatternToWords(LPTSTR psz, WORD *pwBits);
  18. BOOL IsValidPattern(LPCTSTR pszPat);
  19. BOOL IsNormalWallpaper(LPCTSTR pszFileName);
  20. BOOL IsWallpaperPicture(LPCTSTR pszWallpaper);
  21. void CheckAndResolveLocalUrlFile(LPTSTR pszFileName, int cchFileName);
  22. void GetMyCurHomePageStartPos(int *piLeft, int *piTop, DWORD *pdwWidth, DWORD *pdwHeight);
  23. BOOL AddRemoveDesktopComponentNoUI(BOOL fAdd, DWORD dwApplyFlags, LPCTSTR pszUrl, LPCTSTR pszFriendlyName, int iCompType, int iLeft, int iTop, int iWidth, int iHeight, BOOL fChecked, DWORD dwCurItemState, BOOL fNoScroll = FALSE, BOOL fCanResize = TRUE);
  24. void InitDeskHtmlGlobals(void);
  25. HBITMAP LoadMonitorBitmap(void);
  26. void PositionComponent(COMPONENTA *pcomp, COMPPOS *pcp, int iCompType, BOOL fCheckItemState);
  27. BOOL UpdateDesktopPosition(LPTSTR pszCompId, int iLeft, int iTop, DWORD dwWidth, DWORD dwHeight, int izIndex, BOOL fSaveState, BOOL fSaveOriginal, DWORD dwNewState);
  28. BOOL GetSavedStateInfo(LPTSTR pszCompId, LPCOMPSTATEINFO pCompState, BOOL fRestoredState);
  29. DWORD GetCurrentState(LPTSTR pszCompId);
  30. BOOL UpdateComponentFlags(LPCTSTR pszCompId, DWORD dwMask, DWORD dwNewFlags);
  31. void GetRegLocation(LPTSTR lpszResult, DWORD cchResult, LPCTSTR lpszKey, LPCTSTR lpszScheme);
  32. BOOL ValidateFileName(HWND hwnd, LPCTSTR pszFilename, int iTypeString);
  33. void EnableADifHtmlWallpaper(HWND hwnd);
  34. void GetWallpaperDirName(LPTSTR lpszWallPaperDir, int iBuffSize);
  35. BOOL _AddDesktopComponentA(HWND hwnd, LPCSTR pszUrlA, int iCompType, int iLeft, int iTop, int iWidth, int iHeight, DWORD dwFlags);
  36. void GetMonitorSettings(EnumMonitorsArea* ema);
  37. int GetWorkAreaIndex(COMPPOS *pcp, LPCRECT prect, int crect, LPPOINT lpptVirtualTopLeft);
  38. int GetWorkAreaIndexFromPoint(POINT pt, LPCRECT prect, int crect);
  39. void ReadWallpaperStyleFromReg(LPCTSTR pszRegKey, DWORD *pdwWallpaperStyle, BOOL fIgnorePlatforms);
  40. void GetWallpaperWithPath(LPCTSTR szWallpaper, LPTSTR szWallpaperWithPath, int iBufSize);
  41. BOOL GetViewAreas(LPRECT lprcViewAreas, int* pnViewAreas);
  42. BOOL GetZoomRect(BOOL fFullScreen, BOOL fAdjustListview, int tridentLeft, int tridentTop, DWORD componentWidth, DWORD componentHeight, LPRECT prcZoom, LPRECT prcWork);
  43. void GetNextComponentPosition(COMPPOS *pcp);
  44. void IncrementComponentsPositioned(void);
  45. void ValidateComponentPosition(COMPPOS *pcp, DWORD dwComponentState, int iComponentType, bool *pbChangedPosition, bool *pbChangedSize);
  46. int GetcyCaption();
  47. BOOL IsICWCompleted(void);
  48. void LaunchICW(void);
  49. BOOL IsLocalPicture(LPCTSTR pszURL);
  50. BOOL DisableUndisplayableComponents(IActiveDesktop *pIAD);
  51. void PathUnExpandEnvStringsWrap(LPTSTR pszString, DWORD cchSize);
  52. void PathExpandEnvStringsWrap(LPTSTR pszString, DWORD cchSize);
  53. // Top level reg keys
  54. #define REG_DESKCOMP TEXT("Software\\Microsoft\\Internet Explorer\\Desktop")
  55. #define REG_DESKCOMP_GENERAL TEXT("Software\\Microsoft\\Internet Explorer\\Desktop%sGeneral")
  56. #define REG_DESKCOMP_GENERAL_SUFFIX TEXT("General")
  57. #define REG_DESKCOMP_COMPONENTS TEXT("Software\\Microsoft\\Internet Explorer\\Desktop%sComponents")
  58. #define REG_DESKCOMP_COMPONENTS_SUFFIX TEXT("Components")
  59. #define REG_DESKCOMP_SAFEMODE TEXT("Software\\Microsoft\\Internet Explorer\\Desktop\\SafeMode")
  60. #define REG_DESKCOMP_SAFEMODE_SUFFIX TEXT("SafeMode")
  61. #define REG_DESKCOMP_SAFEMODE_SUFFIX_L L"SafeMode"
  62. #define REG_DESKCOMP_SCHEME TEXT("Software\\Microsoft\\Internet Explorer\\Desktop\\Scheme")
  63. #define REG_DESKCOMP_SCHEME_LOCATION TEXT("Software\\Microsoft\\Internet Explorer\\Desktop\\Scheme\\Location")
  64. #define REG_DESKCOMP_SCHEME_SUFFIX TEXT("Scheme")
  65. #define REG_DESKCOMP_COMPONENTS_ROOT TEXT("Software\\Microsoft\\Internet Explorer\\Desktop\\Components")
  66. #define REG_DESKCOMP_GENERAL_ROOT TEXT("Software\\Microsoft\\Internet Explorer\\Desktop\\General")
  67. #define REG_DESKCOMP_OLDWORKAREAS TEXT("Software\\Microsoft\\Internet Explorer\\Desktop\\Old WorkAreas")
  68. #define REG_DESKCOMP_ADMINCOMP_ROOT TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\ActiveDesktop\\AdminComponent")
  69. // values for toplevel (misc)
  70. #define REG_VAL_MISC_CHANNELSIZE TEXT("ChannelSize")
  71. // values for General
  72. #define REG_VAL_GENERAL_CCOMPPOS TEXT("ComponentsPositioned")
  73. #define REG_VAL_GENERAL_DESKTOPFILE TEXT("HTMLFile")
  74. #define REG_VAL_GENERAL_TILEWALLPAPER TEXT("TileWallpaper")
  75. #define REG_VAL_GENERAL_WALLPAPER TEXT("Wallpaper")
  76. #define REG_VAL_GENERAL_BACKUPWALLPAPER TEXT("BackupWallpaper")
  77. #define REG_VAL_GENERAL_WALLPAPERTIME TEXT("WallpaperFileTime")
  78. #define REG_VAL_GENERAL_WALLPAPERLOCALTIME TEXT("WallpaperLocalFileTime")
  79. #define REG_VAL_GENERAL_WALLPAPERSTYLE TEXT("WallpaperStyle")
  80. #define REG_VAL_GENERAL_VISITGALLERY TEXT("VisitGallery")
  81. #define REG_VAL_GENERAL_RESTRICTUPDATE TEXT("RestrictChannelUI")
  82. // values for Components
  83. #define REG_VAL_COMP_VERSION TEXT("DeskHtmlVersion")
  84. #define REG_VAL_COMP_MINOR_VERSION TEXT("DeskHtmlMinorVersion")
  85. #define REG_VAL_COMP_GENFLAGS TEXT("GeneralFlags")
  86. #define REG_VAL_COMP_SETTINGS TEXT("Settings")
  87. #define REG_VAL_COMP_UPGRADED_FROM TEXT("UpgradedFrom")
  88. // values for each component entry
  89. #define REG_VAL_COMP_FLAGS TEXT("Flags")
  90. #define REG_VAL_COMP_NAME TEXT("FriendlyName")
  91. #define REG_VAL_COMP_POSITION TEXT("Position")
  92. #define REG_VAL_COMP_SOURCE TEXT("Source")
  93. #define REG_VAL_COMP_SUBSCRIBED_URL TEXT("SubscribedURL")
  94. #define REG_VAL_COMP_CURSTATE TEXT("CurrentState")
  95. #define REG_VAL_COMP_ORIGINALSTATEINFO TEXT("OriginalStateInfo")
  96. #define REG_VAL_COMP_RESTOREDSTATEINFO TEXT("RestoredStateInfo")
  97. // values for Scheme
  98. #define REG_VAL_SCHEME_DISPLAY TEXT("Display")
  99. #define REG_VAL_SCHEME_EDIT TEXT("Edit")
  100. // values for old work areas
  101. #define REG_VAL_OLDWORKAREAS_COUNT TEXT("NoOfOldWorkAreas")
  102. #define REG_VAL_OLDWORKAREAS_RECTS TEXT("OldWorkAreaRects")
  103. // values for Admin Component
  104. #define REG_VAL_ADMINCOMP_ADD TEXT("Add")
  105. #define REG_VAL_ADMINCOMP_DELETE TEXT("Delete")
  106. TCHAR g_szNone[];
  107. EXTERN_C const TCHAR c_szPatterns[];
  108. EXTERN_C const TCHAR c_szComponentPreview[];
  109. EXTERN_C const TCHAR c_szRegDeskHtmlProp[];
  110. EXTERN_C const TCHAR c_szBackgroundPreview2[];
  111. EXTERN_C const TCHAR c_szZero[];
  112. EXTERN_C const TCHAR c_szWallpaper[];
  113. #define EnableApplyButton(hdlg) PropSheet_Changed(GetParent(hdlg), hdlg)
  114. // Note: Incrementing the CUR_DESKHTML_VERSION will blow away all the existing
  115. // components already in the registry. So, do this with caution!
  116. #define CUR_DESKHTML_VERSION 0x110
  117. // Note: Incrementing the CUR_DESKHTM_MINOR_VERSION can be used to do two things:
  118. // 1. It will simply set the dirty bit sothat the desktop.htt gets re-generated.
  119. // For example, do this whenever template file deskmovr.htt changes.
  120. // 2. It can be used to add a new default component (for example "MyCurrentHome") without
  121. // destroying any of the existing components in the user's registry.
  122. //
  123. #define CUR_DESKHTML_MINOR_VERSION 0x0005
  124. //The following are the Major and minor version numbers stamped on the registry for IE4.0x
  125. #define IE4_DESKHTML_VERSION 0x010e
  126. #define IE4_DESKHTML_MINOR_VERSION 0x0001
  127. //The following are the Major and minor version numbers stamped on the registry for IE5.0x
  128. #define IE5_DESKHTML_VERSION 0x010f
  129. #define IE5_DESKHTML_MINOR_VERSION 0x0001
  130. //The following are the Major and minor version numbers stamped on the registry for NT5 (W2K)
  131. #define NT5_DESKHTML_VERSION 0x0110
  132. #define NT5_DESKHTML_MINOR_VERSION 0x0003
  133. //The following major & minor version is the only version where desktop v2 was present
  134. //as a component.
  135. #define DESKV2_DESKHTML_VERSION 0x0110
  136. #define DESKV2_DESKHTML_MINOR_VERSION 0x0004
  137. #define COMPON_FILENAME TEXT("\\Web\\Compon.htm")
  138. #define COMPONENTHTML_FILENAME TEXT("\\Web\\TryIt.htm")
  139. #define DESKTOPHTML_DEFAULT_SAFEMODE TEXT("\\Web\\SafeMode.htt")
  140. #define DESKTOPHTML_DEFAULT_WALLPAPER TEXT("Wallpapr.htm")
  141. #define DESKTOPHTML_DEFAULT_MEMPHIS_WALLPAPER TEXT("Windows98.htm")
  142. #define DESKTOPHTML_DEFAULT_NT5_WALLPAPER TEXT("Active Desktop Wallpaper.htm")
  143. //#define DESKTOPHTML_DEFAULT_NT5_WALLPAPER TEXT("Windows 2000 Wallpaper.bmp")
  144. #define PREVIEW_PICTURE_FILENAME TEXT("PrePict.htm")
  145. #define DESKTOPHTML_WEB_DIR TEXT("\\Web")
  146. #define GFN_PICTURE 0x00000001
  147. #define GFN_LOCALHTM 0x00000002 // local *.htm and *.html files only
  148. #define GFN_URL 0x00000004
  149. #define GFN_CDF 0x00000008
  150. #define GFN_LOCALMHTML 0x00000010 // local *.mht and *.mhtml files only
  151. #define GFN_ALL (GFN_PICTURE | GFN_LOCALHTM | GFN_URL | GFN_CDF | GFN_LOCALMHTML)
  152. #define CXYDESKPATTERN 8
  153. // Valid bits for REG_VAL_COMP_SETTINGS
  154. #define COMPSETTING_ENABLE 0x00000001
  155. //
  156. // Dimensions of the monitor contents in the monitor bitmap.
  157. // Used in the desk property sheet "preview" controls.
  158. //
  159. #define MON_X 16
  160. #define MON_Y 17
  161. #define MON_DX 152
  162. #define MON_DY 112
  163. //
  164. // Attributes of default components.
  165. //
  166. #define EGG_LEFT 130
  167. #define EGG_TOP 180
  168. #define EGG_WIDTH 160
  169. #define EGG_HEIGHT 160
  170. #define CBAR_SOURCE TEXT("131A6951-7F78-11D0-A979-00C04FD705A2")
  171. #define CBAR_TOP 6
  172. #define CBAR_WIDTH 84
  173. #define CBAR_BUTTON_HEIGHT 35 // height of one button
  174. // My Current Home page component's default values.
  175. #define MY_HOMEPAGE_SOURCE TEXT("About:Home")
  176. #define MY_HOMEPAGE_SOURCEW L"About:Home"
  177. #define MYCURHOME_TOP 6
  178. #define MYCURHOME_WIDTH 160
  179. #define MYCURHOME_HEIGHT 160
  180. #define COMPONENT_PER_ROW 3
  181. #define COMPONENT_PER_COL 2
  182. int SHLoadString(HINSTANCE hInstance, UINT uID, LPTSTR szBuffer, int nBufferMax);
  183. #define LoadMenuPopup(id) SHLoadMenuPopup(HINST_THISDLL, id)
  184. #define VALIDATESTATE(x) ((((x) & ~IS_VALIDSTATEBITS) == 0) && ((((x) & IS_VALIDSIZESTATEBITS) == IS_NORMAL) || (((x) & IS_VALIDSIZESTATEBITS) == IS_SPLIT) || (((x) & IS_VALIDSIZESTATEBITS) == IS_FULLSCREEN)))
  185. #define ISZOOMED(x) (((x)->dwCurItemState & IS_SPLIT) || ((x)->dwCurItemState & IS_FULLSCREEN))
  186. #define IsZoomedState(itemState) ((((itemState) & IS_SPLIT) != 0) || (((itemState) & IS_FULLSCREEN) != 0))
  187. // dvutil.cpp
  188. #include <webcheck.h>
  189. #include <mshtml.h>
  190. typedef struct IHTMLElement IHTMLElement;
  191. HRESULT CSSOM_TopLeft(IHTMLElement * pIElem, POINT * ppt);
  192. HRESULT GetHTMLElementStrMember(IHTMLElement *pielem, LPTSTR pszName, DWORD cchSize, BSTR bstrMember);
  193. HRESULT IElemCheckForExistingSubscription(IHTMLElement *pielem);
  194. HRESULT IElemCloseDesktopComp(IHTMLElement *pielem);
  195. HRESULT IElemGetSubscriptionsDialog(IHTMLElement *pielem, HWND hwnd);
  196. HRESULT IElemSubscribeDialog(IHTMLElement *pielem, HWND hwnd);
  197. HRESULT IElemUnsubscribe(IHTMLElement *pielem);
  198. HRESULT IElemUpdate(IHTMLElement *pielem);
  199. HRESULT IElemOpenInNewWindow(IHTMLElement *pielem, IOleClientSite *piOCSite, BOOL fShowFrame, LONG width, LONG height);
  200. HRESULT ShowSubscriptionProperties(LPCTSTR pszUrl, HWND hwnd);
  201. HRESULT CreateSubscriptionsWizard(SUBSCRIPTIONTYPE subType, LPCTSTR pszUrl, SUBSCRIPTIONINFO *pInfo, HWND hwnd);
  202. BOOL CheckForExistingSubscription(LPCTSTR lpcszURL);
  203. void ZoomComponent(COMPPOS * pcp, DWORD dwItemState, BOOL fAdjustListview);
  204. #define GET_CYCAPTION (GetcyCaption())
  205. #define GET_CXSIZE (GetSystemMetrics(SM_CXSIZEFRAME) - GetSystemMetrics(SM_CXBORDER))
  206. #define GET_CYSIZE (GetSystemMetrics(SM_CYSIZEFRAME) - GetSystemMetrics(SM_CYBORDER))
  207. #endif // _DUTIL_H_