[MSTSC] Fix image corruption in 24bpp mode CORE-13224
[reactos.git] / reactos / base / applications / mstsc / precomp.h
1 #ifndef _MSTSC_PCH_
2 #define _MSTSC_PCH_
3
4 #include <stdarg.h>
5
6 #define WIN32_NO_STATUS
7 #define _INC_WINDOWS
8 #define COM_NO_WINDOWS_H
9
10 #include <windef.h>
11 #include <winbase.h>
12 #include <wingdi.h>
13 #include <wincon.h>
14 #include <shlobj.h>
15 #include <stdio.h>
16 #include <wincrypt.h>
17
18 #include "rdesktop.h"
19 #include "resource.h"
20
21 #ifndef __TODO_MSTSC_H
22 #define __TODO_MSTSC_H
23
24 #define RDP_LOGON_NORMAL (RDP_INFO_MOUSE | RDP_INFO_DISABLECTRLALTDEL | RDP_INFO_UNICODE | RDP_INFO_MAXIMIZESHELL)
25
26 #define IS_PERSISTENT(id) (id < 8 && g_pstcache_fd[id] > 0)
27
28 #define MAXKEY 256
29 #define MAXVALUE 256
30 #define NUM_SETTINGS 6
31 extern LPWSTR lpSettings[];
32
33 typedef struct _SETTINGS
34 {
35 WCHAR Key[MAXKEY];
36 WCHAR Type; // holds 'i' or 's'
37 union {
38 INT i;
39 WCHAR s[MAXVALUE];
40 } Value;
41 } SETTINGS, *PSETTINGS;
42
43 typedef struct _RDPSETTINGS
44 {
45 PSETTINGS pSettings;
46 INT NumSettings;
47 } RDPSETTINGS, *PRDPSETTINGS;
48
49 /* As slider control can't contain user data, we have to keep an
50 * array of RESOLUTION_INFO to have our own associated data.
51 */
52 typedef struct _RESOLUTION_INFO
53 {
54 DWORD dmPelsWidth;
55 DWORD dmPelsHeight;
56 } RESOLUTION_INFO, *PRESOLUTION_INFO;
57
58 typedef struct _SETTINGS_ENTRY
59 {
60 struct _SETTINGS_ENTRY *Blink;
61 struct _SETTINGS_ENTRY *Flink;
62 DWORD dmBitsPerPel;
63 DWORD dmPelsWidth;
64 DWORD dmPelsHeight;
65 } SETTINGS_ENTRY, *PSETTINGS_ENTRY;
66
67 typedef struct _DISPLAY_DEVICE_ENTRY
68 {
69 struct _DISPLAY_DEVICE_ENTRY *Flink;
70 LPWSTR DeviceDescription;
71 LPWSTR DeviceName;
72 LPWSTR DeviceKey;
73 LPWSTR DeviceID;
74 DWORD DeviceStateFlags;
75 PSETTINGS_ENTRY Settings; /* sorted by increasing dmPelsHeight, BPP */
76 DWORD SettingsCount;
77 PRESOLUTION_INFO Resolutions;
78 DWORD ResolutionsCount;
79 PSETTINGS_ENTRY CurrentSettings; /* Points into Settings list */
80 SETTINGS_ENTRY InitialSettings;
81 } DISPLAY_DEVICE_ENTRY, *PDISPLAY_DEVICE_ENTRY;
82
83 typedef struct _INFO
84 {
85 PRDPSETTINGS pRdpSettings;
86 PDISPLAY_DEVICE_ENTRY DisplayDeviceList;
87 PDISPLAY_DEVICE_ENTRY CurrentDisplayDevice;
88 HWND hSelf;
89 HWND hTab;
90 HWND hGeneralPage;
91 HWND hDisplayPage;
92 HBITMAP hHeader;
93 BITMAP headerbitmap;
94 HICON hMstscSm;
95 HICON hMstscLg;
96 HICON hLogon;
97 HICON hConn;
98 HICON hRemote;
99 HICON hColor;
100 HBITMAP hSpectrum;
101 BITMAP bitmap;
102 } INFO, *PINFO;
103
104 BOOL InitRdpSettings(PRDPSETTINGS pRdpSettings);
105 BOOL OpenRDPConnectDialog(HINSTANCE hInstance, PRDPSETTINGS pRdpSettings);
106 BOOL LoadRdpSettingsFromFile(PRDPSETTINGS pRdpSettings, LPWSTR lpFile);
107 BOOL SaveRdpSettingsToFile(LPWSTR lpFile, PRDPSETTINGS pRdpSettings);
108 INT GetIntegerFromSettings(PRDPSETTINGS pSettings, LPWSTR lpValue);
109 LPWSTR GetStringFromSettings(PRDPSETTINGS pSettings, LPWSTR lpValue);
110 BOOL SetIntegerToSettings(PRDPSETTINGS pRdpSettings, LPWSTR lpKey, INT Value);
111 BOOL SetStringToSettings(PRDPSETTINGS pRdpSettings, LPWSTR lpKey, LPWSTR lpValue);
112 VOID SaveAllSettings(PINFO pInfo);
113
114 #endif /* __TODO_MSTSC_H */
115
116 #endif /* _MSTSC_PCH_ */