|
发表于 2013-7-18 23:21:31
|
显示全部楼层
编程难 发表于 2013-7-18 16:40
控制台有对应的接口吧!可以google一下,看下这个api可以么 ReadConsoleOutput
http://msdn.microsoft.c ...
帮你把代码贴出来:- #include <windows.h>
- #include <stdio.h>
- int main( void )
- {
- HANDLE hStdout;
- CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
- SMALL_RECT srctScrollRect, srctClipRect;
- CHAR_INFO chiFill;
- COORD coordDest;
- int i;
- printf("\nPrinting 20 lines for reference. ");
- printf("Notice that line 6 is discarded during scrolling.\n");
- for(i=0; i<=20; i++)
- printf("%d\n", i);
-
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- if (hStdout == INVALID_HANDLE_VALUE)
- {
- printf("GetStdHandle failed with %d\n", GetLastError());
- return 1;
- }
-
- // Get the screen buffer size.
-
- if (!GetConsoleScreenBufferInfo(hStdout, &csbiInfo))
- {
- printf("GetConsoleScreenBufferInfo failed %d\n", GetLastError());
- return 1;
- }
-
- // The scrolling rectangle is the bottom 15 rows of the
- // screen buffer.
-
- srctScrollRect.Top = csbiInfo.dwSize.Y - 16;
- srctScrollRect.Bottom = csbiInfo.dwSize.Y - 1;
- srctScrollRect.Left = 0;
- srctScrollRect.Right = csbiInfo.dwSize.X - 1;
-
- // The destination for the scroll rectangle is one row up.
-
- coordDest.X = 0;
- coordDest.Y = csbiInfo.dwSize.Y - 17;
-
- // The clipping rectangle is the same as the scrolling rectangle.
- // The destination row is left unchanged.
-
- srctClipRect = srctScrollRect;
-
- // Fill the bottom row with green blanks.
-
- chiFill.Attributes = BACKGROUND_GREEN | FOREGROUND_RED;
- chiFill.Char.AsciiChar = (char)' ';
-
- // Scroll up one line.
-
- if(!ScrollConsoleScreenBuffer(
- hStdout, // screen buffer handle
- &srctScrollRect, // scrolling rectangle
- &srctClipRect, // clipping rectangle
- coordDest, // top left destination cell
- &chiFill)) // fill character and color
- {
- printf("ScrollConsoleScreenBuffer failed %d\n", GetLastError());
- return 1;
- }
- return 0;
- }
复制代码 |
|