FILLCHAR.C
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

  1. /******************************************************************************
  2. *       This is a part of the Microsoft Source Code Samples. 
  3. *       Copyright (C) 1993-1997 Microsoft Corporation.
  4. *       All rights reserved. 
  5. *       This source code is only intended as a supplement to 
  6. *       Microsoft Development Tools and/or WinHelp documentation.
  7. *       See these sources for detailed information regarding the 
  8. *       Microsoft samples programs.
  9. ******************************************************************************/
  10. #include <windows.h>
  11. #include "console.h"
  12. /*******************************************************************
  13. * FUNCTION: demoFillChar(HANDLE hConOut)                           *
  14. *                                                                  *
  15. * PURPOSE: demonstrate FillConsoleOutputCharacter. Fill the entire *
  16. *          console with the character that the user hits           *
  17. *                                                                  *
  18. * INPUT: the output console to fill with characters                *
  19. ********************************************************************/
  20. void demoFillChar(HANDLE hConOut)
  21. {
  22.   HANDLE hStdIn;
  23.   INPUT_RECORD inputBuf;
  24.   CHAR c; /* ascii character read from the console */
  25.   CONSOLE_SCREEN_BUFFER_INFO csbi;
  26.   COORD coordScreen = {0, 1}; /* location to start the attribute fill */
  27.   DWORD cCharsWritten;
  28.   BOOL bSuccess; 
  29.   DWORD cInputEvents;
  30.   setConTitle(__FILE__);
  31.   myPuts(hConOut, "Let's fill the console buffer with a given character byn"
  32.                   "using the FillConsoleOutputCharacter API. Hit a key to n"
  33.                   "fill the buffer with (hit ESC to return):");
  34.   hStdIn = GetStdHandle(STD_INPUT_HANDLE);
  35.   PERR(hStdIn != INVALID_HANDLE_VALUE, "GetStdHandle");
  36.   for(;;)
  37.     {
  38.     do
  39.       {
  40.       /* get input events until you get a key-down event */
  41.       bSuccess = ReadConsoleInput(hStdIn, &inputBuf, 1, &cInputEvents);
  42.       PERR(bSuccess, "ReadConsoleInput");
  43.       } while (inputBuf.EventType != KEY_EVENT ||
  44.             !inputBuf.Event.KeyEvent.bKeyDown);
  45.     c = (char) inputBuf.Event.KeyEvent.uChar.AsciiChar;
  46.     if (inputBuf.Event.KeyEvent.wVirtualKeyCode == VK_ESCAPE)
  47.       break;
  48.     /* we need to get the console buffer size */
  49.     bSuccess = GetConsoleScreenBufferInfo(hConOut, &csbi);
  50.     PERR(bSuccess, "GetConsoleScreenBufferInfo");
  51.     bSuccess = FillConsoleOutputCharacter(hConOut, /* screen buffer handle */
  52.         c, /* character to write */
  53.         (csbi.dwSize.X * csbi.dwSize.Y) - csbi.dwSize.X, /* number of chars */
  54.         coordScreen, /* x and y coordinates of first cell */
  55.         &cCharsWritten); /* receives number of cells written to */
  56.     PERR(bSuccess, "FillConsoleOutputCharacter");
  57.   }
  58.   return;
  59. }