|
|
1.1 root 1: #include <windows.h>
2: #include "console.h"
3:
4: /*******************************************************************
5: * FUNCTION: demoFillChar(HANDLE hConOut) *
6: * *
7: * PURPOSE: demonstrate FillConsoleOutputCharacter. Fill the entire *
8: * console with the character that the user hits *
9: * *
10: * INPUT: the output console to fill with characters *
11: ********************************************************************/
12:
13: void demoFillChar(HANDLE hConOut)
14: {
15: HANDLE hStdIn;
16: INPUT_RECORD inputBuf;
17: CHAR c; /* ascii character read from the console */
18: CONSOLE_SCREEN_BUFFER_INFO csbi;
19: COORD coordScreen = {0, 1}; /* location to start the attribute fill */
20: DWORD cCharsWritten;
21: BOOL bSuccess;
22: DWORD cInputEvents;
23:
24: setConTitle(__FILE__);
25: myPuts(hConOut, "Let's fill the console buffer with a given character by\n"
26: "using the FillConsoleOutputCharacter API. Hit a key to \n"
27: "fill the buffer with (hit ESC to return):");
28: hStdIn = GetStdHandle(STD_INPUT_HANDLE);
29: PERR((int) hStdIn != -1, "GetStdHandle");
30: for(;;)
31: {
32: do
33: {
34: /* get input events until you get a key-down event */
35: bSuccess = ReadConsoleInput(hStdIn, &inputBuf, 1, &cInputEvents);
36: PERR(bSuccess, "ReadConsoleInput");
37: } while (inputBuf.EventType != KEY_EVENT ||
38: !inputBuf.Event.KeyEvent.bKeyDown);
39: c = (char) inputBuf.Event.KeyEvent.uChar.AsciiChar;
40: if (inputBuf.Event.KeyEvent.wVirtualKeyCode == VK_ESCAPE)
41: break;
42: /* we need to get the console buffer size */
43: bSuccess = GetConsoleScreenBufferInfo(hConOut, &csbi);
44: PERR(bSuccess, "GetConsoleScreenBufferInfo");
45: bSuccess = FillConsoleOutputCharacter(hConOut, /* screen buffer handle */
46: c, /* character to write */
47: (csbi.dwSize.X * csbi.dwSize.Y) - csbi.dwSize.X, /* number of chars */
48: coordScreen, /* x and y coordinates of first cell */
49: &cCharsWritten); /* receives number of cells written to */
50: PERR(bSuccess, "FillConsoleOutputCharacter");
51: }
52: return;
53: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.