6 #define WIN32_NO_STATUS
8 #define COM_NO_WINDOWS_H
24 #include <dll/desk/deskcplx.h>
28 #include "appearance.h"
35 typedef struct _APPLET
40 APPLET_PROC AppletProc
;
43 typedef struct _DIBITMAP
49 } DIBITMAP
, *PDIBITMAP
;
51 extern HINSTANCE hApplet
;
54 LoadPopupMenu(IN HINSTANCE hInstance
,
55 IN LPCTSTR lpMenuName
);
57 PDIBITMAP
DibLoadImage(LPTSTR lpFilename
);
58 VOID
DibFreeImage(PDIBITMAP lpBitmap
);
60 INT
AllocAndLoadString(LPTSTR
*lpTarget
,
64 ULONG __cdecl
DbgPrint(PCCH Format
,...);
67 * The values in these macros are dependent on the
68 * layout of the monitor image and they must be adjusted
69 * if that image is changed.
71 #define MONITOR_LEFT 20
73 #define MONITOR_RIGHT 140
74 #define MONITOR_BOTTOM 92
76 #define MONITOR_WIDTH (MONITOR_RIGHT-MONITOR_LEFT)
77 #define MONITOR_HEIGHT (MONITOR_BOTTOM-MONITOR_TOP)
79 #define MONITOR_ALPHA 0xFF00FF
81 #define MAX_DESK_PAGES 32
82 #define NUM_SPECTRUM_BITMAPS 3
84 #define NUM_DESKTOP_ICONS 4 /* DesktopIcons array size */
85 #define NUM_CHANGE_ICONS 5 /* IconChange array size */
89 BOOL bHideClassic
; /* Hide icon in Classic mode */
90 BOOL bHideNewStart
; /* Hide icon in Modern Start menu mode */
93 typedef struct _ICON_PATH
95 TCHAR szPath
[MAX_PATH
];
98 typedef struct _ICON_DATA
100 TCHAR szPath
[MAX_PATH
];
104 typedef struct _DESKTOP_DATA
106 BOOL bSettingsChanged
;
107 HIDE_ICON optIcons
[NUM_DESKTOP_ICONS
];
108 BOOL bHideChanged
[NUM_DESKTOP_ICONS
];
109 BOOL bIconChanged
[NUM_CHANGE_ICONS
];
110 ICON_PATH Icon
[NUM_CHANGE_ICONS
];
111 ICON_PATH DefIcon
[NUM_CHANGE_ICONS
];
113 BOOL bLocalSettingsChanged
;
114 BOOL bLocalHideIcon
[NUM_DESKTOP_ICONS
];
115 BOOL bLocalHideChanged
[NUM_DESKTOP_ICONS
];
116 BOOL bLocalIconChanged
[NUM_CHANGE_ICONS
];
117 ICON_DATA LocalIcon
[NUM_CHANGE_ICONS
];
118 HIMAGELIST hLocalImageList
;
120 } DESKTOP_DATA
, *PDESKTOP_DATA
;
122 /* As slider control can't contain user data, we have to keep an
123 * array of RESOLUTION_INFO to have our own associated data.
125 typedef struct _RESOLUTION_INFO
129 } RESOLUTION_INFO
, *PRESOLUTION_INFO
;
131 typedef struct _SETTINGS_ENTRY
133 struct _SETTINGS_ENTRY
*Blink
;
134 struct _SETTINGS_ENTRY
*Flink
;
138 DWORD dmDisplayFrequency
;
139 } SETTINGS_ENTRY
, *PSETTINGS_ENTRY
;
141 typedef struct _DISPLAY_DEVICE_ENTRY
143 struct _DISPLAY_DEVICE_ENTRY
*Flink
;
144 LPTSTR DeviceDescription
;
148 DWORD DeviceStateFlags
;
149 PSETTINGS_ENTRY Settings
; /* Sorted by increasing dmPelsHeight, BPP */
151 PRESOLUTION_INFO Resolutions
;
152 DWORD ResolutionsCount
;
153 PSETTINGS_ENTRY CurrentSettings
; /* Points into Settings list */
154 SETTINGS_ENTRY InitialSettings
;
155 } DISPLAY_DEVICE_ENTRY
, *PDISPLAY_DEVICE_ENTRY
;
157 typedef struct _GLOBAL_DATA
159 COLORREF desktop_color
;
162 HBITMAP hMonitorBitmap
;
165 } GLOBAL_DATA
, *PGLOBAL_DATA
;
167 extern GLOBAL_DATA g_GlobalData
;
168 extern HWND hCPLWindow
;
171 DisplayAdvancedSettings(HWND hWndParent
, PDISPLAY_DEVICE_ENTRY DisplayDevice
);
174 CreateDevSettings(PDISPLAY_DEVICE_ENTRY DisplayDeviceInfo
);
176 HPSXA WINAPI
SHCreatePropSheetExtArrayEx(HKEY
,LPCWSTR
,UINT
,IDataObject
*);
179 AdvGeneralPageProc(HWND hwndDlg
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
182 SwitchDisplayMode(HWND hwndDlg
, PWSTR DeviceName
, PSETTINGS_ENTRY seInit
, PSETTINGS_ENTRY seNew
, OUT PLONG rc
);
185 DesktopPageProc(HWND hwndDlg
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
188 InitDesktopSettings(PDESKTOP_DATA pData
);
191 SaveDesktopSettings(PDESKTOP_DATA pData
);
194 SetDesktopSettings(PDESKTOP_DATA pData
);
197 RegLoadMUIStringW(IN HKEY hKey
,
198 IN LPCWSTR pszValue OPTIONAL
,
199 OUT LPWSTR pszOutBuf
,
201 OUT LPDWORD pcbData OPTIONAL
,
203 IN LPCWSTR pszDirectory OPTIONAL
);