Changeset 111 for trunk/src/kernel32/console2.h
- Timestamp:
- Jun 17, 1999, 8:22:43 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/console2.h
r99 r111 1 /* $Id: console2.h,v 1. 5 1999-06-10 19:11:30phaller Exp $ */1 /* $Id: console2.h,v 1.6 1999-06-17 18:21:41 phaller Exp $ */ 2 2 3 3 /* … … 16 16 * Remark * 17 17 ***************************************************************************** 18 19 18 */ 20 21 22 /*****************************************************************************23 * Resources *24 *****************************************************************************/25 26 #include "consolerc.h"27 28 19 29 20 /***************************************************************************** … … 31 22 *****************************************************************************/ 32 23 33 //#include <win32type.h> 34 #include "handlemanager.h" 35 #include <console.h> 24 #pragma pack(4) 25 26 #ifndef _OS2WIN_H_ 27 typedef struct _COORD 28 { 29 SHORT X; 30 SHORT Y; 31 } COORD, *PCOORD; 32 #endif 33 34 35 typedef struct _SMALL_RECT 36 { 37 SHORT Left; 38 SHORT Top; 39 SHORT Right; 40 SHORT Bottom; 41 } SMALL_RECT, *PSMALL_RECT; 42 43 44 typedef struct _KEY_EVENT_RECORD 45 { 46 BOOL bKeyDown; 47 WORD wRepeatCount; 48 WORD wVirtualKeyCode; 49 WORD wVirtualScanCode; 50 union 51 { 52 WCHAR UnicodeChar; 53 CHAR AsciiChar; 54 } uChar; 55 DWORD dwControlKeyState; 56 } KEY_EVENT_RECORD, *PKEY_EVENT_RECORD; 57 58 59 // 60 // ControlKeyState flags 61 // 62 63 #define RIGHT_ALT_PRESSED 0x0001 // the right alt key is pressed. 64 #define LEFT_ALT_PRESSED 0x0002 // the left alt key is pressed. 65 #define RIGHT_CTRL_PRESSED 0x0004 // the right ctrl key is pressed. 66 #define LEFT_CTRL_PRESSED 0x0008 // the left ctrl key is pressed. 67 #define SHIFT_PRESSED 0x0010 // the shift key is pressed. 68 #define NUMLOCK_ON 0x0020 // the numlock light is on. 69 #define SCROLLLOCK_ON 0x0040 // the scrolllock light is on. 70 #define CAPSLOCK_ON 0x0080 // the capslock light is on. 71 #define ENHANCED_KEY 0x0100 // the key is enhanced. 72 73 typedef struct _MOUSE_EVENT_RECORD 74 { 75 COORD dwMousePosition; 76 DWORD dwButtonState; 77 DWORD dwControlKeyState; 78 DWORD dwEventFlags; 79 } MOUSE_EVENT_RECORD, *PMOUSE_EVENT_RECORD; 80 81 82 // 83 // ButtonState flags 84 // 85 86 #define FROM_LEFT_1ST_BUTTON_PRESSED 0x0001 87 #define RIGHTMOST_BUTTON_PRESSED 0x0002 88 #define FROM_LEFT_2ND_BUTTON_PRESSED 0x0004 89 #define FROM_LEFT_3RD_BUTTON_PRESSED 0x0008 90 #define FROM_LEFT_4TH_BUTTON_PRESSED 0x0010 91 92 // 93 // EventFlags 94 // 95 96 #define MOUSE_MOVED 0x0001 97 #define DOUBLE_CLICK 0x0002 98 99 typedef struct _WINDOW_BUFFER_SIZE_RECORD 100 { 101 COORD dwSize; 102 } WINDOW_BUFFER_SIZE_RECORD, *PWINDOW_BUFFER_SIZE_RECORD; 103 104 typedef struct _MENU_EVENT_RECORD 105 { 106 UINT dwCommandId; 107 } MENU_EVENT_RECORD, *PMENU_EVENT_RECORD; 108 109 typedef struct _FOCUS_EVENT_RECORD 110 { 111 BOOL bSetFocus; 112 } FOCUS_EVENT_RECORD, *PFOCUS_EVENT_RECORD; 113 114 typedef struct _INPUT_RECORD 115 { 116 WORD EventType; 117 union 118 { 119 KEY_EVENT_RECORD KeyEvent; 120 MOUSE_EVENT_RECORD MouseEvent; 121 WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; 122 MENU_EVENT_RECORD MenuEvent; 123 FOCUS_EVENT_RECORD FocusEvent; 124 } Event; 125 } INPUT_RECORD, *PINPUT_RECORD; 126 127 128 // 129 // EventType flags: 130 // 131 132 #define KEY_EVENT 0x0001 // Event contains key event record 133 #define MOUSE_EVENT 0x0002 // Event contains mouse event record 134 #define WINDOW_BUFFER_SIZE_EVENT 0x0004 // Event contains window change event record 135 #define MENU_EVENT 0x0008 // Event contains menu event record 136 #define FOCUS_EVENT 0x0010 // event contains focus change 137 138 typedef struct _CHAR_INFO 139 { 140 union 141 { 142 WCHAR UnicodeChar; 143 CHAR AsciiChar; 144 } Char; 145 WORD Attributes; 146 } CHAR_INFO, *PCHAR_INFO; 147 148 // 149 // Attributes flags: 150 // 151 152 #define FOREGROUND_BLUE 0x0001 // text color contains blue. 153 #define FOREGROUND_GREEN 0x0002 // text color contains green. 154 #define FOREGROUND_RED 0x0004 // text color contains red. 155 #define FOREGROUND_INTENSITY 0x0008 // text color is intensified. 156 #define BACKGROUND_BLUE 0x0010 // background color contains blue. 157 #define BACKGROUND_GREEN 0x0020 // background color contains green. 158 #define BACKGROUND_RED 0x0040 // background color contains red. 159 #define BACKGROUND_INTENSITY 0x0080 // background color is intensified. 160 161 162 typedef struct _CONSOLE_SCREEN_BUFFER_INFO 163 { 164 COORD dwSize; 165 COORD dwCursorPosition; 166 WORD wAttributes; 167 SMALL_RECT srWindow; 168 COORD dwMaximumWindowSize; 169 } CONSOLE_SCREEN_BUFFER_INFO, *PCONSOLE_SCREEN_BUFFER_INFO; 170 171 typedef struct _CONSOLE_CURSOR_INFO 172 { 173 DWORD dwSize; 174 BOOL bVisible; 175 } CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO; 176 177 // 178 // typedef for ctrl-c handler routines 179 // 180 181 typedef BOOL (* __stdcall PHANDLER_ROUTINE)(DWORD CtrlType); /*PLF Fri 97-06-20 17:17:42*/ 182 183 #define CTRL_C_EVENT 0 184 #define CTRL_BREAK_EVENT 1 185 #define CTRL_CLOSE_EVENT 2 186 // 3 is reserved! 187 // 4 is reserved! 188 #define CTRL_LOGOFF_EVENT 5 189 #define CTRL_SHUTDOWN_EVENT 6 190 191 // 192 // Input Mode flags: 193 // 194 195 #define ENABLE_PROCESSED_INPUT 0x0001 196 #define ENABLE_LINE_INPUT 0x0002 197 #define ENABLE_ECHO_INPUT 0x0004 198 #define ENABLE_WINDOW_INPUT 0x0008 199 #define ENABLE_MOUSE_INPUT 0x0010 200 201 // 202 // Output Mode flags: 203 // 204 205 #define ENABLE_PROCESSED_OUTPUT 0x0001 206 #define ENABLE_WRAP_AT_EOL_OUTPUT 0x0002 207 208 #pragma pack() 36 209 37 210 … … 40 213 *****************************************************************************/ 41 214 42 43 215 #define CONSOLE_TEXTMODE_BUFFER 1 216 217 #define SZ_CONSOLE_CLASS "WIN32CONSOLECLASS" 218 219 220 /* according to the updated AVIO documentation of Warp 4 */ 221 #define MAX_OS2_ROWS 255 222 #define MAX_OS2_COLUMNS 255 223 #define FORMAT_CGA 1 224 #define CONSOLE_TIMER_ID 1 225 #define CONSOLE_INPUTQUEUESIZE 256 226 227 228 #define CONSOLECURSOR_HIDE 1 229 #define CONSOLECURSOR_SHOW 2 230 #define CONSOLECURSOR_BLINK 3 231 #define CONSOLECURSOR_OVERWRITTEN 4 232 233 #define UM_CONSOLE_CREATE WM_USER + 0x1000 234 235 236 /* device request codes for use in the pseudo-device handlers */ 237 #define DRQ_CONSOLE 0x00010000 238 #define DRQ_FILLCONSOLEOUTPUTATTRIBUTE DRQ_CONSOLE + 0 239 #define DRQ_FILLCONSOLEOUTPUTCHARACTERA DRQ_CONSOLE + 1 240 #define DRQ_FILLCONSOLEOUTPUTCHARACTERW DRQ_CONSOLE + 2 241 #define DRQ_FLUSHCONSOLEINPUTBUFFER DRQ_CONSOLE + 3 242 #define DRQ_GETCONSOLECURSORINFO DRQ_CONSOLE + 4 243 #define DRQ_GETCONSOLEMODE DRQ_CONSOLE + 5 244 #define DRQ_GETCONSOLESCREENBUFFERINFO DRQ_CONSOLE + 6 245 #define DRQ_GETLARGESTCONSOLEWINDOWSIZE DRQ_CONSOLE + 7 246 #define DRQ_GETNUMBEROFCONSOLEINPUTEVENTS DRQ_CONSOLE + 8 247 #define DRQ_PEEKCONSOLEINPUTW DRQ_CONSOLE + 9 248 #define DRQ_PEEKCONSOLEINPUTA DRQ_CONSOLE + 10 249 #define DRQ_READCONSOLEA DRQ_CONSOLE + 11 250 #define DRQ_READCONSOLEW DRQ_CONSOLE + 12 251 #define DRQ_READCONSOLEINPUTA DRQ_CONSOLE + 14 252 #define DRQ_READCONSOLEINPUTW DRQ_CONSOLE + 15 253 #define DRQ_READCONSOLEOUTPUTA DRQ_CONSOLE + 16 254 #define DRQ_READCONSOLEOUTPUTW DRQ_CONSOLE + 17 255 #define DRQ_READCONSOLEOUTPUTATTRIBUTE DRQ_CONSOLE + 18 256 #define DRQ_READCONSOLEOUTPUTCHARACTERA DRQ_CONSOLE + 19 257 #define DRQ_READCONSOLEOUTPUTCHARACTERW DRQ_CONSOLE + 20 258 #define DRQ_SCROLLCONSOLESCREENBUFFERA DRQ_CONSOLE + 21 259 #define DRQ_SCROLLCONSOLESCREENBUFFERW DRQ_CONSOLE + 22 260 #define DRQ_SETCONSOLEACTIVESCREENBUFFER DRQ_CONSOLE + 23 261 #define DRQ_SETCONSOLECURSORINFO DRQ_CONSOLE + 24 262 #define DRQ_SETCONSOLECURSORPOSITION DRQ_CONSOLE + 25 263 #define DRQ_SETCONSOLEMODE DRQ_CONSOLE + 26 264 #define DRQ_SETCONSOLESCREENBUFFERSIZE DRQ_CONSOLE + 27 265 #define DRQ_SETCONSOLETEXTATTRIBUTE DRQ_CONSOLE + 28 266 #define DRQ_SETCONSOLEWINDOWINFO DRQ_CONSOLE + 29 267 #define DRQ_WRITECONSOLEA DRQ_CONSOLE + 30 268 #define DRQ_WRITECONSOLEW DRQ_CONSOLE + 31 269 #define DRQ_WRITECONSOLEINPUTA DRQ_CONSOLE + 32 270 #define DRQ_WRITECONSOLEINPUTW DRQ_CONSOLE + 33 271 #define DRQ_WRITECONSOLEOUTPUTA DRQ_CONSOLE + 34 272 #define DRQ_WRITECONSOLEOUTPUTW DRQ_CONSOLE + 35 273 #define DRQ_WRITECONSOLEOUTPUTATTRIBUTE DRQ_CONSOLE + 36 274 #define DRQ_WRITECONSOLEOUTPUTCHARACTERA DRQ_CONSOLE + 37 275 #define DRQ_WRITECONSOLEOUTPUTCHARACTERW DRQ_CONSOLE + 38 276 #define DRQ_INTERNAL_CONSOLEBUFFERMAP DRQ_CONSOLE + 39 277 #define DRQ_INTERNAL_CONSOLECURSORSHOW DRQ_CONSOLE + 40 278 #define DRQ_INTERNAL_CONSOLEADJUSTWINDOW DRQ_CONSOLE + 41 279 280 281 #define COORD2ULONG(c) ((ULONG)( ((ULONG)c.X << 16) + (ULONG)c.Y)) 282 #define ULONG2COORD(c,u) c.X = u >> 16; c.Y = u & 0x0000FFFF; 44 283 45 284 … … 72 311 73 312 313 typedef struct _ConsoleOptions 314 { 315 HMODULE hmodResources; /* module handle for PM resources */ 316 317 BOOL fTerminateAutomatically; /* wait for window termination or not */ 318 BOOL fSpeakerEnabled; /* whether we process BEL 0x07 or not */ 319 ULONG ulSpeakerDuration; /* duration and frequency for speaker beep */ 320 ULONG ulSpeakerFrequency; 321 ULONG ulUpdateLimit; /* when exceeding this line counter, automatic */ 322 /* screen update is performed */ 323 324 BOOL fSetWindowPosition; /* TRUE if window has to be positioned */ 325 326 COORD coordDefaultPosition; /* default position of the console window */ 327 COORD coordDefaultSize; /* default size of the console window */ 328 COORD coordBufferSize; /* size of the console buffer */ 329 330 BOOL fQuickInsert; /* like NT's quick insert mode */ 331 BOOL fInsertMode; /* insert mode */ 332 BOOL fMouseActions; /* like Warp 4's "mouse action" mode */ 333 BOOL fToolbarActive; /* windows95-like toolbar on / off */ 334 335 ULONG ulTabSize; /* tabulator size */ 336 337 UCHAR ucDefaultAttribute; /* the default text attribute */ 338 339 UCHAR ucCursorDivisor; /* cursor timer divisor for blinking */ 340 341 ULONG ulConsoleThreadPriorityClass; /* priority settings for message */ 342 ULONG ulConsoleThreadPriorityDelta; /* thread */ 343 ULONG ulAppThreadPriorityClass; /* priority settings for application */ 344 ULONG ulAppThreadPriorityDelta; /* thread */ 345 346 } ICONSOLEOPTIONS, *PICONSOLEOPTIONS; 347 348 349 350 typedef struct _iConsoleGlobals 351 { 352 TID tidConsole; /* console message thread */ 353 HEV hevConsole; /* console event semaphore */ 354 APIRET rcConsole; /* initialization status of the console */ 355 HAB hab; /* anchor block handle */ 356 HMQ hmq; /* message queue handle for the console window */ 357 QMSG qmsg; /* message for the console window */ 358 ULONG flFrameFlags; /* frame window creation flags */ 359 PSZ pszWindowTitle; /* name of the window */ 360 HWND hwndFrame; /* frame window handle */ 361 HWND hwndClient; /* client window handle */ 362 363 HWND hwndHorzScroll; /* handle of horizontal scroll bar */ 364 HWND hwndVertScroll; /* handle of vertical scroll bar */ 365 BOOL fHasVertScroll; /* indicates if scrollbars are visible */ 366 BOOL fHasHorzScroll; 367 368 HDC hdcConsole; /* console device context */ 369 PFNWP pfnwpFrameOriginal; /* original frame window procedure */ 370 371 HWND hwndMenuConsole; /* console popup menu */ 372 HMODULE hmodResource; /* resources are stored in KERNEL32.DLL */ 373 HPOINTER hPtrConsole; /* console icon */ 374 375 HANDLE hConsoleBuffer; /* handle of the active console buffer */ 376 HANDLE hConsoleBufferDefault; /* handle of the default console buffer */ 377 378 HVPS hvpsConsole; /* console AVIO presentation space */ 379 380 COORD coordMaxWindowPels; /* maximum window size in pixels */ 381 COORD coordWindowSize; /* current console window size */ 382 COORD coordWindowPos; /* scroller's positions */ 383 384 SHORT sCellCX; /* height and width of a avio cell with the current font */ 385 SHORT sCellCY; 386 387 BOOL fUpdateRequired; /* set to TRUE if next WM_TIMER shall update the */ 388 /* AVIO presentation space from the consolebuffer */ 389 390 ULONG idTimer; /* Timer identifier */ 391 ULONG ulTimerFrequency; /* cursor + blitter timer frequency */ 392 ULONG ulTimerCursor; /* cursor loop counter for divisor */ 393 394 ICONSOLEOPTIONS Options; /* the console's options / properties */ 395 396 } ICONSOLEGLOBALS, *PICONSOLEGLOBALS; 397 398 399 typedef struct _iConsoleInput 400 { 401 INPUT_RECORD arrInputRecord[CONSOLE_INPUTQUEUESIZE]; /* packet queue */ 402 HEV hevInputQueue; /* becomes posted if input arrives */ 403 404 /* HMUTEX hmtxInputQueue; if queue corruption should occur ... */ 405 406 ULONG ulIndexFree; /* index of first free event record */ 407 ULONG ulIndexEvent; /* index of first valid event in queue */ 408 ULONG ulEvents; /* number of events in queue */ 409 DWORD dwConsoleMode; /* input console mode */ 410 } ICONSOLEINPUT, *PICONSOLEINPUT; 411 412 74 413 75 414 /***************************************************************************** … … 82 421 83 422 84 DWORD ConsoleInit(void); /* creation of the console subsystem */ 85 86 DWORD ConsoleDevicesRegister(void); /* create console devices */ 87 88 void ConsoleWaitClose(void); /* wait for user to close console */ 89 90 BOOL ConsoleIsActive(void); /* returns TRUE if console window open */ 423 /* console message thread */ 424 VOID _Optlink iConsoleMsgThread (void *pParameters); 425 426 MRESULT EXPENTRY iConsoleWindowProc(HWND hwnd, /* window procedure */ 427 ULONG msg, 428 MPARAM mp1, 429 MPARAM mp2); 430 431 MRESULT EXPENTRY iConsoleFrameWindowProc(HWND hwnd, 432 ULONG msg, 433 MPARAM mp1, 434 MPARAM mp2); 435 436 void iConsoleBufferMap (PCONSOLEBUFFER pConsoleBuffer); 437 438 void iConsoleBufferScrollUp (PCONSOLEBUFFER pConsoleBuffer, 439 ULONG ulLines); 440 441 void iConsoleBufferFillLine (ULONG ulPattern, 442 PUSHORT pusTarget, 443 ULONG ulSize); 444 445 APIRET iConsoleInputEventPush (PINPUT_RECORD pInputRecord); 446 447 APIRET iConsoleInputEventPop (PINPUT_RECORD pInputRecord); 448 449 APIRET iConsoleInputEventPushKey (MPARAM mp1, 450 MPARAM mp2); 451 452 APIRET iConsoleInputEventPushMouse (ULONG ulMessage, 453 MPARAM mp1, 454 MPARAM mp2); 455 456 APIRET iConsoleInputEventPushWindow(COORD coordWindowSize); 457 458 APIRET iConsoleInputEventPushMenu (DWORD dwCommandId); 459 460 APIRET iConsoleInputEventPushFocus (BOOL bSetFocus); 461 462 ULONG iConsoleInputQueryEvents (void); 463 464 void iConsoleCursorShow (PCONSOLEBUFFER pConsoleBuffer, 465 ULONG ulCursorMode); 466 467 APIRET iConsoleFontQuery (void); 468 469 void iConsoleAdjustWindow (PCONSOLEBUFFER pConsoleBuffer); 470 91 471 92 472 #ifndef _OS2WIN_H … … 295 675 #endif // _OS2WIN_H 296 676 297 298 677 #ifdef __cplusplus 299 }678 } 300 679 #endif 301 680 302 303 /*****************************************************************************304 * Forwarders *305 *****************************************************************************/306 307 #ifdef __cplusplus308 309 /*****************************************************************************310 * Win32 Console Subsystem Pseudo-Devices *311 *****************************************************************************/312 313 314 /*****************************************************************************315 * ConsoleInput - manages a queue of window events fro keyboard, mouse, etc. *316 *****************************************************************************/317 318 class HMDeviceConsoleInClass : public HMDeviceHandler319 {320 protected:321 /* input queue */322 DWORD dwNumberOfInputEvents; /* number of unread events in input queue */323 324 public:325 HMDeviceConsoleInClass(LPCSTR lpDeviceName)326 : HMDeviceHandler(lpDeviceName) {}327 328 /* this is a handler method for calls to CreateFile() */329 virtual DWORD CreateFile (LPCSTR lpFileName,330 PHMHANDLEDATA pHMHandleData,331 PVOID lpSecurityAttributes,332 PHMHANDLEDATA pHMHandleDataTemplate);333 334 /* this is a handler method for calls to ReadFile() */335 virtual DWORD ReadFile (PHMHANDLEDATA pHMHandleData,336 LPCVOID lpBuffer,337 DWORD nNumberOfBytesToRead,338 LPDWORD lpNumberOfBytesRead,339 LPOVERLAPPED lpOverlapped);340 341 /* this is a handler method for calls to WriteFile() */342 virtual DWORD WriteFile (PHMHANDLEDATA pHMHandleData,343 LPCVOID lpBuffer,344 DWORD nNumberOfBytesToWrite,345 LPDWORD lpNumberOfBytesWritten,346 LPOVERLAPPED lpOverlapped);347 348 virtual DWORD _DeviceRequest (PHMHANDLEDATA pHMHandleData,349 ULONG ulRequestCode,350 ULONG arg1,351 ULONG arg2,352 ULONG arg3,353 ULONG arg4);354 355 /************************************356 * non-standard console I/O methods *357 ************************************/358 359 virtual BOOL FlushConsoleInputBuffer(PHMHANDLEDATA pHMHandleData);360 361 virtual DWORD GetConsoleMode(PHMHANDLEDATA pHMHandleData,362 LPDWORD lpMode);363 364 virtual BOOL GetNumberOfConsoleInputEvents(PHMHANDLEDATA pHMHandleData,365 LPDWORD lpNumberOfEvents);366 367 virtual DWORD PeekConsoleInputA(PHMHANDLEDATA pHMHandleData,368 PINPUT_RECORD pirBuffer,369 DWORD cInRecords,370 LPDWORD lpcRead);371 372 virtual DWORD PeekConsoleInputW(PHMHANDLEDATA pHMHandleData,373 PINPUT_RECORD pirBuffer,374 DWORD cInRecords,375 LPDWORD lpcRead);376 377 virtual DWORD ReadConsoleA(PHMHANDLEDATA pHMHandleData,378 CONST VOID* lpvBuffer,379 DWORD cchToRead,380 LPDWORD lpcchRead,381 LPVOID lpvReserved);382 383 virtual DWORD ReadConsoleW(PHMHANDLEDATA pHMHandleData,384 CONST VOID* lpvBuffer,385 DWORD cchToRead,386 LPDWORD lpcchRead,387 LPVOID lpvReserved);388 389 virtual DWORD ReadConsoleInputA(PHMHANDLEDATA pHMHandleData,390 PINPUT_RECORD pirBuffer,391 DWORD cInRecords,392 LPDWORD lpcRead);393 394 virtual DWORD ReadConsoleInputW(PHMHANDLEDATA pHMHandleData,395 PINPUT_RECORD pirBuffer,396 DWORD cInRecords,397 LPDWORD lpcRead);398 399 virtual DWORD SetConsoleMode(PHMHANDLEDATA pHMHandleData,400 DWORD dwMode);401 402 virtual DWORD WriteConsoleInputA (PHMHANDLEDATA pHMHandleData,403 PINPUT_RECORD pirBuffer,404 DWORD cInRecords,405 LPDWORD lpcWritten);406 407 virtual DWORD WriteConsoleInputW (PHMHANDLEDATA pHMHandleData,408 PINPUT_RECORD pirBuffer,409 DWORD cInRecords,410 LPDWORD lpcWritten);411 412 };413 414 415 /*****************************************************************************416 * ConsoleOutput - redirects requests to the currently active buffer *417 *****************************************************************************/418 419 class HMDeviceConsoleOutClass : public HMDeviceHandler420 {421 protected:422 HANDLE hConsoleBuffer; /* handle to the active console buffer */423 424 public:425 HMDeviceConsoleOutClass(LPCSTR lpDeviceName)426 : HMDeviceHandler(lpDeviceName) {}427 428 /* this is a handler method for calls to CreateFile() */429 virtual DWORD CreateFile (LPCSTR lpFileName,430 PHMHANDLEDATA pHMHandleData,431 PVOID lpSecurityAttributes,432 PHMHANDLEDATA pHMHandleDataTemplate);433 434 /* this is a handler method for calls to ReadFile() */435 virtual DWORD ReadFile (PHMHANDLEDATA pHMHandleData,436 LPCVOID lpBuffer,437 DWORD nNumberOfBytesToRead,438 LPDWORD lpNumberOfBytesRead,439 LPOVERLAPPED lpOverlapped);440 441 /* this is a handler method for calls to WriteFile() */442 virtual DWORD WriteFile (PHMHANDLEDATA pHMHandleData,443 LPCVOID lpBuffer,444 DWORD nNumberOfBytesToWrite,445 LPDWORD lpNumberOfBytesWritten,446 LPOVERLAPPED lpOverlapped);447 448 449 /* handling non-standard I/O */450 virtual DWORD _DeviceRequest (PHMHANDLEDATA pHMHandleData,451 ULONG ulRequestCode,452 ULONG arg1,453 ULONG arg2,454 ULONG arg3,455 ULONG arg4);456 };457 458 459 /*****************************************************************************460 * ConsoleBuffer - does all the writing to an internal line buffer array *461 * if this buffer is the active one, also does a screen updt *462 *****************************************************************************/463 464 class HMDeviceConsoleBufferClass : public HMDeviceHandler465 {466 public:467 HMDeviceConsoleBufferClass(LPCSTR lpDeviceName)468 : HMDeviceHandler(lpDeviceName) {}469 470 /* this is a handler method for calls to CreateFile() */471 virtual DWORD CreateFile (LPCSTR lpFileName,472 PHMHANDLEDATA pHMHandleData,473 PVOID lpSecurityAttributes,474 PHMHANDLEDATA pHMHandleDataTemplate);475 476 /* this is a handler method for calls to ReadFile() */477 virtual DWORD ReadFile (PHMHANDLEDATA pHMHandleData,478 LPCVOID lpBuffer,479 DWORD nNumberOfBytesToRead,480 LPDWORD lpNumberOfBytesRead,481 LPOVERLAPPED lpOverlapped);482 483 /* this is a handler method for calls to WriteFile() */484 virtual DWORD WriteFile (PHMHANDLEDATA pHMHandleData,485 LPCVOID lpBuffer,486 DWORD nNumberOfBytesToWrite,487 LPDWORD lpNumberOfBytesWritten,488 LPOVERLAPPED lpOverlapped);489 490 virtual DWORD CloseHandle(PHMHANDLEDATA pHMHandleData);491 492 virtual DWORD _DeviceRequest (PHMHANDLEDATA pHMHandleData,493 ULONG ulRequestCode,494 ULONG arg1,495 ULONG arg2,496 ULONG arg3,497 ULONG arg4);498 499 500 /************************************501 * non-standard console I/O methods *502 ************************************/503 504 virtual DWORD FillConsoleOutputAttribute(PHMHANDLEDATA pHMHandleData,505 WORD wAttribute,506 DWORD nLength,507 COORD dwWriteCoord,508 LPDWORD lpNumberOfAttrsWritten);509 510 virtual DWORD FillConsoleOutputCharacterA(PHMHANDLEDATA pHMHandleData,511 UCHAR ucCharacter,512 DWORD nLength,513 COORD dwWriteCoord,514 LPDWORD lpNumberOfCharsWritten);515 516 virtual DWORD FillConsoleOutputCharacterW(PHMHANDLEDATA pHMHandleData,517 WCHAR wcCharacter,518 DWORD nLength,519 COORD dwWriteCoord,520 LPDWORD lpNumberOfCharsWritten);521 522 virtual DWORD GetConsoleCursorInfo(PHMHANDLEDATA pHMHandleData,523 PCONSOLE_CURSOR_INFO pCCI);524 525 virtual DWORD GetConsoleMode(PHMHANDLEDATA pHMHandleData,526 LPDWORD lpMode);527 528 virtual DWORD GetLargestConsoleWindowSize(PHMHANDLEDATA pHMHandleData);529 530 virtual DWORD GetConsoleScreenBufferInfo(PHMHANDLEDATA pHMHandleData,531 PCONSOLE_SCREEN_BUFFER_INFO pCSBI);532 533 virtual DWORD ReadConsoleOutputA(PHMHANDLEDATA pHMHandleData,534 PCHAR_INFO pchiDestBuffer,535 COORD coordDestBufferSize,536 COORD coordDestBufferCoord,537 PSMALL_RECT psrctSourceRect);538 539 virtual DWORD ReadConsoleOutputW(PHMHANDLEDATA pHMHandleData,540 PCHAR_INFO pchiDestBuffer,541 COORD coordDestBufferSize,542 COORD coordDestBufferCoord,543 PSMALL_RECT psrctSourceRect);544 545 virtual DWORD ReadConsoleOutputAttribute(PHMHANDLEDATA pHMHandleData,546 LPWORD lpwAttribute,547 DWORD cReadCells,548 COORD dwReadCoord,549 LPDWORD lpcNumberRead);550 551 virtual DWORD ReadConsoleOutputCharacterA(PHMHANDLEDATA pHMHandleData,552 LPTSTR lpwReadBuffer,553 DWORD cchRead,554 COORD coordReadCoord,555 LPDWORD lpcNumberRead);556 557 virtual DWORD ReadConsoleOutputCharacterW(PHMHANDLEDATA pHMHandleData,558 LPWSTR lpwReadBuffer,559 DWORD cchRead,560 COORD coordReadCoord,561 LPDWORD lpcNumberRead);562 563 virtual DWORD ScrollConsoleScreenBufferA(PHMHANDLEDATA pHMHandleData,564 PSMALL_RECT psrctSourceRect,565 PSMALL_RECT psrctClipRect,566 COORD coordDestOrigin,567 PCHAR_INFO pchiFill);568 569 virtual DWORD ScrollConsoleScreenBufferW(PHMHANDLEDATA pHMHandleData,570 PSMALL_RECT psrctSourceRect,571 PSMALL_RECT psrctClipRect,572 COORD coordDestOrigin,573 PCHAR_INFO pchiFill);574 575 virtual DWORD SetConsoleScreenBufferSize (PHMHANDLEDATA pHMHandleData,576 COORD coordSize);577 578 virtual DWORD SetConsoleCursorInfo(PHMHANDLEDATA pHMHandleData,579 PCONSOLE_CURSOR_INFO pCCI);580 581 virtual DWORD SetConsoleCursorPosition(PHMHANDLEDATA pHMHandleData,582 COORD coordCursorPosition);583 584 virtual DWORD SetConsoleMode(PHMHANDLEDATA pHMHandleData,585 DWORD dwMode);586 587 virtual DWORD SetConsoleTextAttribute (PHMHANDLEDATA pHMHandleData,588 WORD wAttr);589 590 virtual DWORD SetConsoleActiveScreenBuffer(PHMHANDLEDATA pHMHandleData);591 592 virtual BOOL SetConsoleWindowInfo(PHMHANDLEDATA pHMHandleData,593 BOOL fAbsolute,594 PSMALL_RECT psrctWindowRect);595 596 virtual DWORD WriteConsoleA(PHMHANDLEDATA pHMHandleData,597 CONST VOID* lpvBuffer,598 DWORD cchToWrite,599 LPDWORD lpcchWritten,600 LPVOID lpvReserved);601 602 virtual DWORD WriteConsoleW(PHMHANDLEDATA pHMHandleData,603 CONST VOID* lpvBuffer,604 DWORD cchToWrite,605 LPDWORD lpcchWritten,606 LPVOID lpvReserved);607 608 virtual DWORD WriteConsoleOutputA(PHMHANDLEDATA pHMHandleData,609 PCHAR_INFO pchiSrcBuffer,610 COORD coordSrcBufferSize,611 COORD coordSrcBufferCoord,612 PSMALL_RECT psrctDestRect);613 614 virtual DWORD WriteConsoleOutputW(PHMHANDLEDATA pHMHandleData,615 PCHAR_INFO pchiSrcBuffer,616 COORD coordSrcBufferSize,617 COORD coordSrcBufferCoord,618 PSMALL_RECT psrctDestRect);619 620 virtual DWORD WriteConsoleOutputAttribute(PHMHANDLEDATA pHMHandleData,621 LPWORD lpwAttribute,622 DWORD cWriteCells,623 COORD dwWriteCoord,624 LPDWORD lpcWritten);625 626 virtual DWORD WriteConsoleOutputCharacterA(PHMHANDLEDATA pHMHandleData,627 LPTSTR lpWriteBuffer,628 DWORD cchWrite,629 COORD dwWriteCoord,630 LPDWORD lpcWritten);631 632 virtual DWORD WriteConsoleOutputCharacterW(PHMHANDLEDATA pHMHandleData,633 LPWSTR lpWriteBuffer,634 DWORD cchWrite,635 COORD dwWriteCoord,636 LPDWORD lpcWritten);637 };638 639 #endif640 641 642 681 #endif /* _CONSOLESUBSYSTEM_H_ */
Note:
See TracChangeset
for help on using the changeset viewer.