Sync to trunk revision 61757.
[reactos.git] / win32ss / user / winsrv / consrv / frontends / gui / guisettings.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Console Server DLL
4 * FILE: win32ss/user/winsrv/consrv/guisettings.h
5 * PURPOSE: GUI front-end settings management
6 * PROGRAMMERS: Johannes Anderwald
7 * Hermes Belusca-Maito (hermes.belusca@sfr.fr)
8 *
9 * NOTE: Also used by console.dll
10 */
11
12 #pragma once
13
14 #ifndef WM_APP
15 #define WM_APP 0x8000
16 #endif
17 #define PM_APPLY_CONSOLE_INFO (WM_APP + 100)
18
19 /* STRUCTURES *****************************************************************/
20
21 typedef struct _GUI_CONSOLE_INFO
22 {
23 // FONTSIGNATURE FontSignature;
24 WCHAR FaceName[LF_FACESIZE];
25 UINT FontFamily;
26 DWORD FontSize;
27 DWORD FontWeight;
28 BOOL UseRasterFonts;
29
30 BOOL FullScreen; /* Whether the console is displayed in full-screen or windowed mode */
31 // ULONG HardwareState; /* _GDI_MANAGED, _DIRECT */
32
33 WORD ShowWindow;
34 BOOL AutoPosition;
35 POINT WindowOrigin;
36 } GUI_CONSOLE_INFO, *PGUI_CONSOLE_INFO;
37
38 #ifndef CONSOLE_H__ // If we aren't included by console.dll
39
40 typedef struct _GUI_CONSOLE_DATA
41 {
42 CRITICAL_SECTION Lock;
43 BOOL WindowSizeLock;
44 HANDLE hGuiInitEvent;
45
46 POINT OldCursor;
47
48 LONG_PTR WndStyle;
49 LONG_PTR WndStyleEx;
50 BOOL IsWndMax;
51 WINDOWPLACEMENT WndPl;
52
53 HWND hWindow; /* Handle to the console's window */
54 HDC hMemDC; /* Memory DC holding the console framebuffer */
55 HBITMAP hBitmap; /* Console framebuffer */
56 HPALETTE hSysPalette; /* Handle to the original system palette */
57
58 HICON hIcon; /* Handle to the console's icon (big) */
59 HICON hIconSm; /* Handle to the console's icon (small) */
60
61 /*** The following may be put per-screen-buffer !! ***/
62 HCURSOR hCursor; /* Handle to the mouse cursor */
63 INT MouseCursorRefCount; /* The reference counter associated with the mouse cursor. >= 0 and the cursor is shown; < 0 and the cursor is hidden. */
64 BOOL IgnoreNextMouseSignal; /* Used in cases where we don't want to treat a mouse signal */
65
66 BOOL IsCloseButtonEnabled; /* TRUE if the Close button and the corresponding system menu item are enabled (default), FALSE otherwise */
67 UINT cmdIdLow ; /* Lowest menu id of the user-reserved menu id range */
68 UINT cmdIdHigh; /* Highest menu id of the user-reserved menu id range */
69
70 // COLORREF Colors[16];
71
72 // PVOID ScreenBuffer; /* Hardware screen buffer */
73
74 HFONT Font;
75 UINT CharWidth;
76 UINT CharHeight;
77 /*****************************************************/
78
79 PCONSOLE Console; /* Pointer to the owned console */
80 PCONSOLE_SCREEN_BUFFER ActiveBuffer; /* Pointer to the active screen buffer (then maybe the previous Console member is redundant?? Or not...) */
81
82 GUI_CONSOLE_INFO GuiInfo; /* GUI terminal settings */
83 } GUI_CONSOLE_DATA, *PGUI_CONSOLE_DATA;
84
85 /* FUNCTIONS ******************************************************************/
86
87 BOOL
88 GuiConsoleReadUserSettings(IN OUT PGUI_CONSOLE_INFO TermInfo,
89 IN LPCWSTR ConsoleTitle,
90 IN DWORD ProcessId);
91 BOOL
92 GuiConsoleWriteUserSettings(IN OUT PGUI_CONSOLE_INFO TermInfo,
93 IN LPCWSTR ConsoleTitle,
94 IN DWORD ProcessId);
95 VOID
96 GuiConsoleGetDefaultSettings(IN OUT PGUI_CONSOLE_INFO TermInfo,
97 IN DWORD ProcessId);
98 VOID
99 GuiConsoleShowConsoleProperties(PGUI_CONSOLE_DATA GuiData,
100 BOOL Defaults);
101 NTSTATUS
102 GuiApplyUserSettings(PGUI_CONSOLE_DATA GuiData,
103 HANDLE hClientSection,
104 BOOL SaveSettings);
105
106 #endif
107
108 /* EOF */