xref: /reactos/dll/cpl/desk/desk.h (revision cc439606)
1 #ifndef _DESK_H
2 #define _DESK_H
3 
4 #include <stdarg.h>
5 
6 #define WIN32_NO_STATUS
7 #define _INC_WINDOWS
8 #define COM_NO_WINDOWS_H
9 
10 #define COBJMACROS
11 
12 #include <windef.h>
13 #include <winbase.h>
14 #include <winreg.h>
15 #include <wingdi.h>
16 #include <winuser.h>
17 #include <wincon.h>
18 #include <commdlg.h>
19 #include <cpl.h>
20 #include <tchar.h>
21 #include <setupapi.h>
22 #include <shlobj.h>
23 #include <regstr.h>
24 #include <dll/desk/deskcplx.h>
25 #include <strsafe.h>
26 #include <gdiplus.h>
27 
28 #include "appearance.h"
29 #include "preview.h"
30 #include "draw.h"
31 #include "monslctl.h"
32 
33 #include "resource.h"
34 
35 typedef struct _APPLET
36 {
37     int idIcon;
38     int idName;
39     int idDescription;
40     APPLET_PROC AppletProc;
41 } APPLET, *PAPPLET;
42 
43 typedef struct _DIBITMAP
44 {
45     BITMAPINFO       *info;
46     BYTE             *bits;
47     UINT              width;
48     UINT              height;
49 } DIBITMAP, *PDIBITMAP;
50 
51 extern HINSTANCE hApplet;
52 
53 HMENU
54 LoadPopupMenu(IN HINSTANCE hInstance,
55               IN LPCTSTR lpMenuName);
56 
57 PDIBITMAP DibLoadImage(LPTSTR lpFilename);
58 VOID DibFreeImage(PDIBITMAP lpBitmap);
59 
60 INT AllocAndLoadString(LPTSTR *lpTarget,
61                        HINSTANCE hInst,
62                        UINT uID);
63 
64 ULONG __cdecl DbgPrint(PCCH Format,...);
65 
66 #define MAX_DESK_PAGES        32
67 #define NUM_SPECTRUM_BITMAPS  3
68 
69 /* As slider control can't contain user data, we have to keep an
70  * array of RESOLUTION_INFO to have our own associated data.
71  */
72 typedef struct _RESOLUTION_INFO
73 {
74     DWORD dmPelsWidth;
75     DWORD dmPelsHeight;
76 } RESOLUTION_INFO, *PRESOLUTION_INFO;
77 
78 typedef struct _SETTINGS_ENTRY
79 {
80     struct _SETTINGS_ENTRY *Blink;
81     struct _SETTINGS_ENTRY *Flink;
82     DWORD dmBitsPerPel;
83     DWORD dmPelsWidth;
84     DWORD dmPelsHeight;
85     DWORD dmDisplayFrequency;
86 } SETTINGS_ENTRY, *PSETTINGS_ENTRY;
87 
88 typedef struct _DISPLAY_DEVICE_ENTRY
89 {
90     struct _DISPLAY_DEVICE_ENTRY *Flink;
91     LPTSTR DeviceDescription;
92     LPTSTR DeviceName;
93     LPTSTR DeviceKey;
94     LPTSTR DeviceID;
95     DWORD DeviceStateFlags;
96     PSETTINGS_ENTRY Settings; /* Sorted by increasing dmPelsHeight, BPP */
97     DWORD SettingsCount;
98     PRESOLUTION_INFO Resolutions;
99     DWORD ResolutionsCount;
100     PSETTINGS_ENTRY CurrentSettings; /* Points into Settings list */
101     SETTINGS_ENTRY InitialSettings;
102 } DISPLAY_DEVICE_ENTRY, *PDISPLAY_DEVICE_ENTRY;
103 
104 typedef struct _GLOBAL_DATA
105 {
106     COLORREF desktop_color;
107     LPCWSTR pwszFile;
108     LPCWSTR pwszAction;
109 } GLOBAL_DATA, *PGLOBAL_DATA;
110 
111 extern GLOBAL_DATA g_GlobalData;
112 extern HWND hCPLWindow;
113 
114 BOOL
115 DisplayAdvancedSettings(HWND hWndParent, PDISPLAY_DEVICE_ENTRY DisplayDevice);
116 
117 IDataObject *
118 CreateDevSettings(PDISPLAY_DEVICE_ENTRY DisplayDeviceInfo);
119 
120 HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY,LPCWSTR,UINT,IDataObject*);
121 
122 INT_PTR CALLBACK
123 AdvGeneralPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
124 
125 #endif /* _DESK_H */
126