1 /* 2 * COPYRIGHT: See COPYING in the top level directory 3 * PROJECT: ReactOS Console Server DLL 4 * FILE: win32ss/user/winsrv/consrv/frontends/gui/conwnd.h 5 * PURPOSE: GUI Console Window Class 6 * PROGRAMMERS: G� van Geldorp 7 * Johannes Anderwald 8 * Jeffrey Morlan 9 * Hermes Belusca-Maito (hermes.belusca@sfr.fr) 10 */ 11 12 #pragma once 13 14 /* GUI Console Window Class name */ 15 #define GUI_CONWND_CLASS L"ConsoleWindowClass" 16 17 #ifndef WM_APP 18 #define WM_APP 0x8000 19 #endif 20 #define PM_RESIZE_TERMINAL (WM_APP + 3) 21 #define PM_CONSOLE_BEEP (WM_APP + 4) 22 #define PM_CONSOLE_SET_TITLE (WM_APP + 5) 23 24 /* Flags for GetKeyState */ 25 #define KEY_TOGGLED 0x0001 26 #define KEY_PRESSED 0x8000 27 28 /* 29 typedef struct _CONSOLE_FONT 30 { 31 HFONT Font; 32 ULONG Flag; 33 } CONSOLE_FONT, *PCONSOLE_FONT; 34 */ 35 #define FONT_NORMAL 0x00 36 #define FONT_BOLD 0x01 37 #define FONT_UNDERLINE 0x02 38 #define FONT_MAXNO 0x04 39 40 typedef struct _GUI_CONSOLE_DATA 41 { 42 CRITICAL_SECTION Lock; 43 BOOL WindowSizeLock; 44 HANDLE hGuiInitEvent; 45 HANDLE hGuiTermEvent; 46 47 // HANDLE InputThreadHandle; 48 ULONG_PTR InputThreadId; 49 HWINSTA WinSta; 50 HDESK Desktop; 51 52 BOOLEAN IsWindowVisible; 53 54 POINT OldCursor; 55 56 LONG_PTR WndStyle; 57 LONG_PTR WndStyleEx; 58 BOOL IsWndMax; 59 WINDOWPLACEMENT WndPl; 60 61 HWND hWindow; /* Handle to the console's window */ 62 HDC hMemDC; /* Memory DC holding the console framebuffer */ 63 HBITMAP hBitmap; /* Console framebuffer */ 64 HPALETTE hSysPalette; /* Handle to the original system palette */ 65 66 HICON hIcon; /* Handle to the console's icon (big) */ 67 HICON hIconSm; /* Handle to the console's icon (small) */ 68 69 /*** The following may be put per-screen-buffer !! ***/ 70 HCURSOR hCursor; /* Handle to the mouse cursor */ 71 INT MouseCursorRefCount; /* The reference counter associated with the mouse cursor. >= 0 and the cursor is shown; < 0 and the cursor is hidden. */ 72 BOOL IgnoreNextMouseEvent; /* Used when we need to not process a mouse event */ 73 74 BOOL HackCORE8394IgnoreNextMove; /* HACK FOR CORE-8394. See conwnd.c!OnMouse for more details. */ 75 76 HMENU hSysMenu; /* Handle to the console window system menu */ 77 BOOL IsCloseButtonEnabled; /* TRUE if the Close button and the corresponding system menu item are enabled (default), FALSE otherwise */ 78 UINT CmdIdLow ; /* Lowest menu id of the user-reserved menu id range */ 79 UINT CmdIdHigh; /* Highest menu id of the user-reserved menu id range */ 80 81 // COLORREF Colors[16]; 82 83 // PVOID ScreenBuffer; /* Hardware screen buffer */ 84 85 HFONT Font[FONT_MAXNO]; 86 UINT CharWidth; /* The character width and height should be the same for */ 87 UINT CharHeight; /* both normal and bold/underlined fonts... */ 88 /*****************************************************/ 89 90 PCONSRV_CONSOLE Console; /* Pointer to the owned console */ 91 PCONSOLE_SCREEN_BUFFER ActiveBuffer; /* Pointer to the active screen buffer (then maybe the previous Console member is redundant?? Or not...) */ 92 CONSOLE_SELECTION_INFO Selection; /* Contains information about the selection */ 93 COORD dwSelectionCursor; /* Selection cursor position, most of the time different from Selection.dwSelectionAnchor */ 94 BOOL LineSelection; /* TRUE if line-oriented selection (a la *nix terminals), FALSE if block-oriented selection (default on Windows) */ 95 96 GUI_CONSOLE_INFO GuiInfo; /* GUI terminal settings */ 97 } GUI_CONSOLE_DATA, *PGUI_CONSOLE_DATA; 98