1 // A test program for CreateConsoleScreenBuffer / SetConsoleActiveScreenBuffer
10 #include "TestUtil.cc"
14 HANDLE origBuffer = GetStdHandle(STD_OUTPUT_HANDLE);
15 HANDLE childBuffer = CreateConsoleScreenBuffer(
16 GENERIC_READ | GENERIC_WRITE,
17 FILE_SHARE_READ | FILE_SHARE_WRITE,
18 NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
20 SetConsoleActiveScreenBuffer(childBuffer);
24 CONSOLE_SCREEN_BUFFER_INFO info;
26 assert(GetConsoleScreenBufferInfo(origBuffer, &info));
27 trace("child.size=(%d,%d)", (int)info.dwSize.X, (int)info.dwSize.Y);
28 trace("child.cursor=(%d,%d)", (int)info.dwCursorPosition.X, (int)info.dwCursorPosition.Y);
29 trace("child.window=(%d,%d,%d,%d)",
30 (int)info.srWindow.Left, (int)info.srWindow.Top,
31 (int)info.srWindow.Right, (int)info.srWindow.Bottom);
32 trace("child.maxSize=(%d,%d)", (int)info.dwMaximumWindowSize.X, (int)info.dwMaximumWindowSize.Y);
35 sprintf(buf, "%02x\n", ch);
37 WriteFile(childBuffer, buf, strlen(buf), &actual, NULL);
38 if (ch == 0x1b/*ESC*/ || ch == 0x03/*CTRL-C*/)
42 setBufferSize(origBuffer, 40, 25);
43 } else if (ch == 'w') {
44 setWindowPos(origBuffer, 1, 1, 38, 23);
45 } else if (ch == 'c') {
46 setCursorPos(origBuffer, 10, 10);
50 SetConsoleActiveScreenBuffer(origBuffer);