[CONSOLE.CPL][CONSRV]
[reactos.git] / win32ss / user / winsrv / consrv / frontends / gui / guisettings.h
index efc8f0d..df95bdc 100644 (file)
 #ifndef WM_APP
     #define WM_APP 0x8000
 #endif
-#define PM_APPLY_CONSOLE_INFO (WM_APP + 100)
+/* Message sent by ReactOS' console.dll for applying console info */
+#define PM_APPLY_CONSOLE_INFO   (WM_APP + 100)
+
+/*
+ * Undocumented message sent by Windows' console.dll for applying console info.
+ * See http://www.catch22.net/sites/default/source/files/setconsoleinfo.c
+ * and http://www.scn.rain.com/~neighorn/PDF/MSBugPaper.pdf
+ * for more information.
+ */
+#define WM_SETCONSOLEINFO       (WM_USER + 201)
 
 /* STRUCTURES *****************************************************************/
 
@@ -22,10 +31,9 @@ typedef struct _GUI_CONSOLE_INFO
 {
     // FONTSIGNATURE FontSignature;
     WCHAR FaceName[LF_FACESIZE];
-    UINT  FontFamily;
-    DWORD FontSize;
-    DWORD FontWeight;
-    BOOL  UseRasterFonts;
+    ULONG FontFamily;
+    COORD FontSize;
+    ULONG FontWeight;
 
     BOOL  FullScreen;       /* Whether the console is displayed in full-screen or windowed mode */
 //  ULONG HardwareState;    /* _GDI_MANAGED, _DIRECT */
@@ -35,6 +43,46 @@ typedef struct _GUI_CONSOLE_INFO
     POINT WindowOrigin;
 } GUI_CONSOLE_INFO, *PGUI_CONSOLE_INFO;
 
+/*
+ * Undocumented structure used by Windows' console.dll for setting console info.
+ * See http://www.catch22.net/sites/default/source/files/setconsoleinfo.c
+ * and http://www.scn.rain.com/~neighorn/PDF/MSBugPaper.pdf
+ * for more information.
+ */
+#pragma pack(push, 1)
+typedef struct _CONSOLE_STATE_INFO
+{
+    ULONG       cbSize;
+    COORD       ScreenBufferSize;
+    COORD       WindowSize;
+    POINT       WindowPosition; // WindowPosX and Y
+
+    COORD       FontSize;
+    ULONG       FontFamily;
+    ULONG       FontWeight;
+    WCHAR       FaceName[LF_FACESIZE];
+
+    ULONG       CursorSize;
+    BOOL        FullScreen;
+    BOOL        QuickEdit;
+    BOOL        AutoPosition;
+    BOOL        InsertMode;
+
+    USHORT      ScreenColors;   // ScreenAttributes
+    USHORT      PopupColors;    // PopupAttributes
+    BOOL        HistoryNoDup;
+    ULONG       HistoryBufferSize;
+    ULONG       NumberOfHistoryBuffers;
+
+    COLORREF    ColorTable[16];
+
+    ULONG       CodePage;
+    HWND        HWnd;
+
+    WCHAR       ConsoleTitle[256];
+} CONSOLE_STATE_INFO, *PCONSOLE_STATE_INFO;
+#pragma pack(pop)
+
 #ifndef CONSOLE_H__ // If we aren't included by console.dll
 
 #include "conwnd.h"
@@ -55,10 +103,13 @@ GuiConsoleGetDefaultSettings(IN OUT PGUI_CONSOLE_INFO TermInfo,
 VOID
 GuiConsoleShowConsoleProperties(PGUI_CONSOLE_DATA GuiData,
                                 BOOL Defaults);
-NTSTATUS
+VOID
 GuiApplyUserSettings(PGUI_CONSOLE_DATA GuiData,
                      HANDLE hClientSection,
                      BOOL SaveSettings);
+VOID
+GuiApplyWindowsConsoleSettings(PGUI_CONSOLE_DATA GuiData,
+                               HANDLE hClientSection);
 
 #endif