mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
Replaced Windows console with freeware console implementation. Activate in windowed mode with \ Added error and quit if JA2 started in window mode in >16bpp color depth Fix to enemy sector investigation: Was deducting from redshirts when elites investigated Fix AWOL militia (need additional fix to prevent them from being redistributed during after reinforcements) Fix to tanks to add them in their original spot when a new one cannot be found. Should modify to remove old wreckage in this case. AI no longer tries to fire mortar when no room for it Tanks no longer try to throw knives git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@1030 3b4a5df2-a311-0410-b5c6-a8a6f20db521
745 lines
19 KiB
C++
745 lines
19 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Copyright (C) 2001-2004 by Marko Bozikovic
|
|
// All rights reserved
|
|
//
|
|
// This program is free software; you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation; either version 2 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program; if not, write to the Free Software
|
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
//
|
|
// Send bug reports, bug fixes, enhancements, requests, flames, etc., and
|
|
// I'll try to keep a version up to date. I can be reached as follows:
|
|
// marko.bozikovic@alterbox.net
|
|
// bozho@kset.org
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Console.h - console class declaration
|
|
|
|
#pragma once
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
using namespace std;
|
|
|
|
//#include "include/FreeImagePlus.h"
|
|
|
|
typedef basic_string<TCHAR> tstring;
|
|
|
|
#define WM_INPUTREADY WM_USER + 1
|
|
|
|
// tray icon message
|
|
#define WM_TRAY_NOTIFY WM_USER + 0x123
|
|
|
|
#define TRAY_ICON_ID 1
|
|
|
|
// timer #defines
|
|
#define TIMER_REPAINT_CHANGE 42 // timer that is started after there
|
|
// were some changes in the console
|
|
|
|
#define TIMER_REPAINT_MASTER 43 // master timer (needed to repaint
|
|
// for some DOS programs, can be
|
|
// disabled for lower CPU usage)
|
|
|
|
#define TIMER_SHOW_HIDE_CONSOLE 100 // used to hide console window when
|
|
// starting shell process after a
|
|
// defined period of time (some
|
|
// shells, like 4NT need console
|
|
// window visible during startup for
|
|
// all init options to work properly
|
|
|
|
// transparency #defines
|
|
#define TRANSPARENCY_NONE 0
|
|
#define TRANSPARENCY_ALPHA 1
|
|
#define TRANSPARENCY_COLORKEY 2
|
|
#define TRANSPARENCY_FAKE 3
|
|
|
|
// cusror style #defines
|
|
#define CURSOR_STYLE_NONE 0
|
|
#define CURSOR_STYLE_XTERM 1
|
|
#define CURSOR_STYLE_BLOCK 2
|
|
#define CURSOR_STYLE_NBBLOCK 3
|
|
#define CURSOR_STYLE_PULSEBLOCK 4
|
|
#define CURSOR_STYLE_BAR 5
|
|
#define CURSOR_STYLE_CONSOLE 6
|
|
#define CURSOR_STYLE_NBHLINE 7
|
|
#define CURSOR_STYLE_HLINE 8
|
|
#define CURSOR_STYLE_VLINE 9
|
|
#define CURSOR_STYLE_RECT 10
|
|
#define CURSOR_STYLE_NBRECT 11
|
|
#define CURSOR_STYLE_PULSERECT 12
|
|
#define CURSOR_STYLE_FADEBLOCK 13
|
|
|
|
// docking #defines
|
|
#define DOCK_NONE 0
|
|
#define DOCK_TOP_LEFT 1
|
|
#define DOCK_TOP_RIGHT 2
|
|
#define DOCK_BOTTOM_RIGHT 3
|
|
#define DOCK_BOTTOM_LEFT 4
|
|
|
|
// Z-order #defines
|
|
#define Z_ORDER_REGULAR 0
|
|
#define Z_ORDER_ONTOP 1
|
|
#define Z_ORDER_ONBOTTOM 2
|
|
|
|
// window border defines
|
|
#define BORDER_NONE 0
|
|
#define BORDER_REGULAR 1
|
|
#define BORDER_THIN 2
|
|
|
|
// window background style
|
|
#define BACKGROUND_STYLE_RESIZE 0
|
|
#define BACKGROUND_STYLE_CENTER 1
|
|
#define BACKGROUND_STYLE_TILE 2
|
|
|
|
// taskbar button defines
|
|
#define TASKBAR_BUTTON_NORMAL 0
|
|
#define TASKBAR_BUTTON_HIDE 1
|
|
#define TASKBAR_BUTTON_TRAY 2
|
|
|
|
// new configuration auto-reload defines
|
|
#define RELOAD_NEW_CONFIG_PROMPT 0
|
|
#define RELOAD_NEW_CONFIG_YES 1
|
|
#define RELOAD_NEW_CONFIG_NO 2
|
|
|
|
#define TEXT_SELECTION_NONE 0
|
|
#define TEXT_SELECTION_SELECTING 1
|
|
#define TEXT_SELECTION_SELECTED 2
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Console class
|
|
|
|
class Console {
|
|
public: // ctor/dtor
|
|
|
|
Console(LPCTSTR szConfigFile, LPCTSTR szShellCmdLine, LPCTSTR szConsoleTitle, LPCTSTR pszReloadNewConfig);
|
|
~Console();
|
|
|
|
public:
|
|
|
|
// creates and shows Console window
|
|
BOOL Create(TCHAR* pszConfigPath);
|
|
|
|
private:
|
|
|
|
////////////////////
|
|
// message handlers
|
|
////////////////////
|
|
|
|
////////////////////////////////
|
|
// windows destruction messages
|
|
|
|
// destroys GDI stuff and posts a quit message
|
|
void OnDestroy();
|
|
// deletes Console object
|
|
void OnNcDestroy();
|
|
|
|
|
|
/////////////////////
|
|
// painting messages
|
|
|
|
// handles painting from off-screen buffers
|
|
void OnPaint();
|
|
|
|
// handles master and 'change' timers
|
|
void OnPaintTimer();
|
|
|
|
// handles cursor timer (for animated cursors)
|
|
void OnCursorTimer();
|
|
|
|
|
|
/////////////////////////
|
|
// window state messages
|
|
|
|
// handles window position changes (for snapping to desktop edges)
|
|
void OnWindowPosChanging(WINDOWPOS* lpWndPos);
|
|
|
|
// handles activation message (used for setting alpha transparency and cursor states)
|
|
void OnActivateApp(BOOL bActivate, DWORD dwFlags);
|
|
|
|
// handles vertical scrolling
|
|
void OnVScroll(WPARAM wParam);
|
|
|
|
// handles keyboard layout change, posts the same message to the windows console window
|
|
void OnInputLangChangeRequest(WPARAM wParam, LPARAM lParam);
|
|
|
|
|
|
//////////////////
|
|
// mouse messages
|
|
|
|
// handles text selection start and window mouse drag start
|
|
void OnLButtonDown(UINT uiFlags, POINTS points);
|
|
|
|
// handles text selection end, window mouse drag end and text copy
|
|
void OnLButtonUp(UINT uiFlags, POINTS points);
|
|
|
|
// toggles always on top flag
|
|
void OnLButtonDblClick(UINT uiFlags, POINTS points);
|
|
|
|
// pops up the Console menu
|
|
void OnRButtonUp(UINT uiFlags, POINTS points);
|
|
|
|
// pastes text from clipboard
|
|
void OnMButtonDown(UINT uiFlags, POINTS points);
|
|
|
|
// handles mouse movement for text selection and window mouse drag
|
|
void OnMouseMove(UINT uiFlags, POINTS points);
|
|
|
|
// handles start/stop mouse drag for window border
|
|
void OnSetCursor(WORD wHitTest, WORD wMouseMessage);
|
|
|
|
// handles text input
|
|
void OnChar(WORD mychar);
|
|
|
|
wstring Input;
|
|
|
|
//////////////////
|
|
// other messages
|
|
|
|
// called before the Console menu or system menu pops up
|
|
// (populates config files submenu with filenames)
|
|
void OnInitMenuPopup(HMENU hMenu, UINT uiPos, BOOL bSysMenu);
|
|
|
|
// handles drag-n-dropped filenames
|
|
void OnDropFiles(HDROP hDrop);
|
|
|
|
// handles commands from the Console popup menu
|
|
BOOL OnCommand(WPARAM wParam, LPARAM lParam);
|
|
|
|
// handles commands from the system popup menu
|
|
BOOL OnSysCommand(WPARAM wParam, LPARAM lParam);
|
|
|
|
// handles tray icon messages
|
|
void OnTrayNotify(WPARAM wParam, LPARAM lParam);
|
|
|
|
// handles WM_SETTINGCHANGE (we handle only wallpaper changes here)
|
|
// void OnWallpaperChanged(const TCHAR* pszFilename);
|
|
|
|
|
|
private:
|
|
|
|
///////////////////////////////////////////
|
|
// Console window creation/setup functions
|
|
///////////////////////////////////////////
|
|
|
|
// gets Console options
|
|
BOOL GetOptions();
|
|
|
|
// registers Console window classes
|
|
BOOL RegisterWindowClasses();
|
|
|
|
// adds stuff to system and popup menus
|
|
BOOL SetupMenus();
|
|
|
|
// creates Console window
|
|
BOOL CreateConsoleWindow();
|
|
|
|
// creates new Console font
|
|
void CreateNewFont();
|
|
|
|
// creates new background brush
|
|
void CreateNewBrush();
|
|
|
|
// creates the cursor
|
|
void CreateCursor();
|
|
|
|
// creates offscreen painting buffers
|
|
void CreateOffscreenBuffers();
|
|
|
|
// creates background bitmap
|
|
void CreateBackgroundBitmap();
|
|
|
|
// called by the ::EnumDisplayMonitors to create background for each display
|
|
// static BOOL CALLBACK BackgroundEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData);
|
|
|
|
// gets character width and height
|
|
void GetTextSize();
|
|
|
|
// gets window borders (X, Y and caption sizes)
|
|
void GetBordersDimensions();
|
|
|
|
// calculates window and client area sizes
|
|
void CalcWindowSize();
|
|
|
|
// sets up window transparency (alpha, color key, fake)
|
|
// void SetWindowTransparency();
|
|
|
|
// sets scrollbar stuff
|
|
void SetScrollbarStuff();
|
|
|
|
// sets default console colors
|
|
void SetDefaultConsoleColors();
|
|
|
|
// sets window size and position
|
|
void SetWindowSizeAndPosition();
|
|
|
|
// sets Console's big, small and tray icons
|
|
void SetWindowIcons();
|
|
|
|
// sets up traybar icon
|
|
BOOL SetTrayIcon(DWORD dwMessage);
|
|
|
|
// destroys Console cursor
|
|
void DestroyCursor();
|
|
|
|
// opens the configuration file in a text editor
|
|
void EditConfigFile();
|
|
|
|
// reloads Console settings
|
|
void ReloadSettings();
|
|
|
|
|
|
/////////////////////////////
|
|
// windows console functions
|
|
/////////////////////////////
|
|
|
|
// allocates the console and starts the command shell
|
|
BOOL StartShellProcess();
|
|
|
|
// refreshes m_hStdOutFresh handle
|
|
void RefreshStdOut();
|
|
|
|
// gets a fresh console output
|
|
void RefreshScreenBuffer();
|
|
|
|
// sets initial windows console size
|
|
void InitConsoleWndSize(DWORD dwColumns);
|
|
|
|
// resizes the windows console
|
|
void ResizeConsoleWindow();
|
|
|
|
// Allocates the screen buffer
|
|
void AllocateBuffer();
|
|
|
|
|
|
//////////////////////
|
|
// painting functions
|
|
//////////////////////
|
|
|
|
// repaints the memory hdc
|
|
void RepaintWindow();
|
|
|
|
// repaints the memory hdc (paint only changes)
|
|
void RepaintWindowChanges();
|
|
|
|
// draws the cursor
|
|
void DrawCursor(BOOL bOnlyCursor = FALSE);
|
|
|
|
// two helper functions for DrawCursor method
|
|
|
|
// returns cursor rectangle
|
|
inline void GetCursorRect(RECT& rectCursor);
|
|
// draws cursor background and returns the cursor rectangle
|
|
inline void DrawCursorBackground(RECT& rectCursor);
|
|
|
|
// clears text selection
|
|
void ClearSelection();
|
|
|
|
// returns the console text change rate since the last painting
|
|
// (using this value we decide whether to repaint entire window
|
|
// or just the changes)
|
|
DWORD GetChangeRate();
|
|
|
|
|
|
//////////////////////////
|
|
// window state functions
|
|
//////////////////////////
|
|
|
|
// shows/hides Console window
|
|
void ShowHideWindow();
|
|
|
|
// shows/hides windows console window
|
|
void ShowHideConsole();
|
|
|
|
// shows/hides windows console window after a timeout (used during
|
|
// shell startup)
|
|
void ShowHideConsoleTimeout();
|
|
|
|
// toggles 'always on top' status
|
|
void ToggleWindowOnTop();
|
|
|
|
|
|
//////////////////
|
|
// menu functions
|
|
//////////////////
|
|
|
|
// called by OnCommand and OnSysCommand to handle menu commands
|
|
BOOL HandleMenuCommand(DWORD dwID);
|
|
|
|
// updates popup and system menus for 'always on top' status
|
|
void UpdateOnTopMenuItem();
|
|
|
|
// updates popup and system menus for 'hide console' status
|
|
void UpdateHideConsoleMenuItem();
|
|
|
|
// updates configuration files submenu
|
|
void UpdateConfigFilesSubmenu();
|
|
|
|
|
|
///////////////////////
|
|
// clipboard functions
|
|
///////////////////////
|
|
|
|
// copies selected text to the clipboard
|
|
void CopyTextToClipboard();
|
|
|
|
// pastes text from the clipboard
|
|
void PasteClipoardText();
|
|
|
|
//////////////////
|
|
// misc functions
|
|
//////////////////
|
|
|
|
// shows Readme.txt file
|
|
void ShowReadmeFile();
|
|
|
|
// shows about dialog
|
|
void About();
|
|
|
|
// sends text to the windows console
|
|
void SendTextToConsole(const wchar_t *pszText);
|
|
|
|
// returns the full filename
|
|
tstring GetFullFilename(const tstring& strFilename);
|
|
|
|
// gets a desktop rectangle
|
|
void GetDesktopRect(RECT& rectDesktop);
|
|
|
|
// Pulls the text from the stdout or stderr handle (both are the same) and sends it to the console
|
|
void AddOutput();
|
|
|
|
|
|
///////////////////////
|
|
// 'gearbox' functions
|
|
///////////////////////
|
|
|
|
// Console window procedure
|
|
static LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
|
|
|
// shell activities monitor
|
|
static DWORD WINAPI MonitorThreadStatic(LPVOID lpParam);
|
|
DWORD MonitorThread();
|
|
|
|
// CTRL+C, CTRL+BREAK handler
|
|
static BOOL WINAPI CtrlHandler(DWORD dwCtrlType);
|
|
|
|
|
|
public: // public data
|
|
|
|
// Console window handle
|
|
HWND m_hWnd;
|
|
|
|
// console colors
|
|
COLORREF m_arrConsoleColors[16];
|
|
|
|
private: // private data
|
|
|
|
// readem filename
|
|
tstring m_strReadmeFile;
|
|
|
|
BOOL m_bInitializing;
|
|
BOOL m_bReloading;
|
|
|
|
tstring m_strConfigFile;
|
|
tstring m_strConfigEditor;
|
|
tstring m_strConfigEditorParams;
|
|
|
|
// one of the RELOAD_NEW_CONFIG_* constants
|
|
// - specifies relaod behaviour when a new configuration is selected
|
|
// (auto reload, don't reload, ask user)
|
|
DWORD m_dwReloadNewConfigDefault;
|
|
DWORD m_dwReloadNewConfig;
|
|
|
|
tstring m_strShell;
|
|
tstring m_strShellCmdLine;
|
|
|
|
// handle to invisible window - used for hiding the taskbar button in tray and 'hidden' modes
|
|
HWND m_hwndInvisParent;
|
|
|
|
// memory device context that holds console output image
|
|
HDC m_hdcConsole;
|
|
// memory device context for an off-screen window buffer (used to
|
|
// compose an image from m_hdcConsole and m_hdcSelection if text
|
|
// selection is active)
|
|
HDC m_hdcWindow;
|
|
|
|
// a bitmap used for drawing in the console memory DC
|
|
HBITMAP m_hbmpConsole;
|
|
HBITMAP m_hbmpConsoleOld;
|
|
|
|
// a bitmap used for drawing in the window memory DC
|
|
HBITMAP m_hbmpWindow;
|
|
HBITMAP m_hbmpWindowOld;
|
|
|
|
// brush for painting background
|
|
HBRUSH m_hBkBrush;
|
|
|
|
// master repaint timer interval (runs independent of changes in the
|
|
// console)
|
|
DWORD m_dwMasterRepaintInt;
|
|
|
|
// change repaint timer interval (when a change occurs, repainting
|
|
// will be postponed for this interval)
|
|
DWORD m_dwChangeRepaintInt;
|
|
|
|
// icon filename
|
|
tstring m_strIconFilename;
|
|
// program icons
|
|
HICON m_hSmallIcon;
|
|
HICON m_hBigIcon;
|
|
|
|
// popup menu
|
|
HMENU m_hPopupMenu;
|
|
|
|
// system (taskbar button) menu
|
|
HMENU m_hSysMenu;
|
|
|
|
// submenu for the XML (config) files
|
|
HMENU m_hConfigFilesMenu;
|
|
|
|
// set to TRUE if the popup menu is disabled
|
|
BOOL m_bPopupMenuDisabled;
|
|
|
|
// Console window title variables
|
|
// holds the default console title ("console" or the one passed in the cmdline param)
|
|
tstring m_strWindowTitleDefault;
|
|
// holds the window title (default title, or the one from the config file)
|
|
tstring m_strWindowTitle;
|
|
// holds the current window title
|
|
tstring m_strWindowTitleCurrent;
|
|
|
|
// font data
|
|
tstring m_strFontName;
|
|
DWORD m_dwFontSize;
|
|
BOOL m_bBold;
|
|
BOOL m_bItalic;
|
|
BOOL m_bUseFontColor;
|
|
COLORREF m_crFontColor;
|
|
HFONT m_hFont;
|
|
HFONT m_hFontOld;
|
|
|
|
// window X and Y positions
|
|
int m_nX;
|
|
int m_nY;
|
|
|
|
// client area inside border (gives a more 'relaxed' look to windows)
|
|
int m_nInsideBorder;
|
|
|
|
// window width and height
|
|
int m_nWindowWidth;
|
|
int m_nWindowHeight;
|
|
|
|
// window border sizes
|
|
int m_nXBorderSize;
|
|
int m_nYBorderSize;
|
|
int m_nCaptionSize;
|
|
|
|
// client area widht/height
|
|
int m_nClientWidth;
|
|
int m_nClientHeight;
|
|
|
|
// char height and width (used in window repainting)
|
|
// Note: width is used only for fixed-pitch fonts to speed up
|
|
// repainting
|
|
int m_nCharHeight;
|
|
int m_nCharWidth;
|
|
|
|
// window border type
|
|
// 0 - none
|
|
// 1 - regular window
|
|
// 2 - 1-pixel thin border
|
|
DWORD m_dwWindowBorder;
|
|
|
|
// scrollbar stuff
|
|
BOOL m_bShowScrollbar;
|
|
int m_nScrollbarStyle;
|
|
COLORREF m_crScrollbarColor;
|
|
int m_nScrollbarWidth;
|
|
int m_nScrollbarButtonHeight;
|
|
int m_nScrollbarThunmbHeight;
|
|
|
|
// what to do with the taskbar button
|
|
// if the taskbar button is hidden, or placed in the traybar, you
|
|
// can't ALT-TAB to console (take care when using with color key
|
|
// transparency :-)
|
|
// 0 - nothing
|
|
// 1 - hide it
|
|
// 2 - put icon to traybar
|
|
DWORD m_dwTaskbarButton;
|
|
|
|
// set to TRUE if the window can be dragged by left-click hold
|
|
BOOL m_bMouseDragable;
|
|
|
|
// snap distance
|
|
int m_nSnapDst;
|
|
|
|
// window docking position
|
|
// 0 - no dock
|
|
// 1 - top left
|
|
// 2 - top right
|
|
// 3 - bottom right
|
|
// 4 - bottom left
|
|
DWORD m_dwDocked;
|
|
|
|
// window Z-ordering
|
|
// 0 - regular
|
|
// 1 - always on top
|
|
// 2 - always on bottom
|
|
DWORD m_dwOriginalZOrder;
|
|
DWORD m_dwCurrentZOrder;
|
|
|
|
// Win2000/XP transparency
|
|
// 0 - none
|
|
// 1 - alpha blending
|
|
// 2 - colorkey
|
|
// 3 - fake transparency
|
|
DWORD m_dwTransparency;
|
|
|
|
// alpha value for alpha blending (Win2000 and later only!)
|
|
BYTE m_byAlpha;
|
|
|
|
// alpha value for inactive window
|
|
BYTE m_byInactiveAlpha;
|
|
|
|
COLORREF m_crBackground;
|
|
COLORREF m_crConsoleBackground;
|
|
|
|
// this is used for tinting background images and fake transparencies
|
|
BOOL m_bTintSet;
|
|
BYTE m_byTintOpacity;
|
|
BYTE m_byTintR;
|
|
BYTE m_byTintG;
|
|
BYTE m_byTintB;
|
|
|
|
// used when background is an image
|
|
BOOL m_bBitmapBackground;
|
|
tstring m_strBackgroundFile;
|
|
HDC m_hdcBackground;
|
|
HBITMAP m_hbmpBackground;
|
|
HBITMAP m_hbmpBackgroundOld;
|
|
|
|
// background attributes
|
|
|
|
// one of BACKGROUND_STYLE_ #defines
|
|
DWORD m_dwBackgroundStyle;
|
|
// set to true for relative background
|
|
BOOL m_bRelativeBackground;
|
|
// set to true to extend the background to all monitors
|
|
BOOL m_bExtendBackground;
|
|
|
|
// offsets used for multiple monitors and relative backgrounds (fake transparency, too)
|
|
int m_nBackgroundOffsetX;
|
|
int m_nBackgroundOffsetY;
|
|
|
|
// used for showing/hiding main window
|
|
BOOL m_bHideWindow;
|
|
// set to TRUE when the real console is hidden
|
|
BOOL m_bHideConsole;
|
|
|
|
// timeout used when hiding console window for the first time (some
|
|
// shells need console window visible during startup)
|
|
DWORD m_dwHideConsoleTimeout;
|
|
|
|
// if set to TRUE, Console will be started minimized
|
|
BOOL m_bStartMinimized;
|
|
|
|
|
|
// cursor style
|
|
// 0 - none
|
|
// 1 - XTerm
|
|
// 2 - block cursor
|
|
// 3 - bar cursor
|
|
// 4 - console cursor
|
|
// 5 - horizontal line
|
|
// 6 - vertical line
|
|
// 7 - pulse rect
|
|
// 8 - fading block
|
|
DWORD m_dwCursorStyle;
|
|
|
|
COLORREF m_crCursorColor;
|
|
|
|
// console screen buffer info for cursor
|
|
CONSOLE_SCREEN_BUFFER_INFO m_csbiCursor;
|
|
|
|
// wether console cursor is visible or not
|
|
BOOL m_bCursorVisible;
|
|
|
|
class Cursor* m_pCursor;
|
|
|
|
// mouse cursor offset within the window (used for moving the window)
|
|
POINT m_mouseCursorOffset;
|
|
|
|
/////////////////////
|
|
// console stuff
|
|
|
|
// console window handle
|
|
HWND m_hWndConsole;
|
|
|
|
// console screen buffer info for console repainting
|
|
CONSOLE_SCREEN_BUFFER_INFO m_csbiConsole;
|
|
|
|
// console stdouts
|
|
HANDLE m_hStdOut;
|
|
HANDLE m_hStdOutFresh;
|
|
|
|
// set when quitting the application
|
|
HANDLE m_hQuitEvent;
|
|
|
|
// set by monitor thread when detects console process exit
|
|
HANDLE m_hConsoleProcess;
|
|
|
|
// handle to monitor thread
|
|
HANDLE m_hMonitorThread;
|
|
|
|
// console rows & columns
|
|
DWORD m_dwRows;
|
|
DWORD m_dwColumns;
|
|
DWORD m_dwBufferRows;
|
|
BOOL m_bUseTextBuffer;
|
|
|
|
// set to one of TEXT_SELECTION_ #defines
|
|
int m_nTextSelection;
|
|
|
|
// X Windows style copy-on-select
|
|
BOOL m_bCopyOnSelect;
|
|
|
|
// Inverse the shift behaviour for selecting and dragging
|
|
BOOL m_bInverseShift;
|
|
|
|
COORD m_coordSelOrigin;
|
|
RECT m_rectSelection;
|
|
HDC m_hdcSelection;
|
|
HBITMAP m_hbmpSelection;
|
|
HBITMAP m_hbmpSelectionOld;
|
|
HBRUSH m_hbrushSelection;
|
|
|
|
CHAR_INFO* m_pScreenBuffer;
|
|
CHAR_INFO* m_pScreenBufferNew;
|
|
|
|
DWORD m_nTextColor;
|
|
DWORD m_nTextBgColor;
|
|
|
|
// Console window class names
|
|
static const TCHAR m_szConsoleClass[];
|
|
static const TCHAR m_szHiddenParentClass[];
|
|
|
|
// win console window title
|
|
static const tstring m_strWinConsoleTitle;
|
|
};
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|