我试图在 Windows 上使用windows.h
.
在对 msdn 进行一些研究后,我想出了这个:
`
//Free current console
if ( FreeConsole() == 0 ) return GetLastError();
//Get clean console
if ( AllocConsole() == 0 ) return GetLastError();
HANDLE buffer1 = GetStdHandle( STD_OUTPUT_HANDLE );
HANDLE buffer2 = CreateConsoleScreenBuffer( GENERIC_WRITE,
0,
NULL,
CONSOLE_TEXTMODE_BUFFER,
NULL );
COORD begin;
begin.X = 0;
begin.Y = 0;
SetConsoleCursorPosition(buffer1, begin);
DWORD writen;
WriteConsole( buffer1,
L"Milk\n",
5,
&writen,
NULL );
WriteConsole( buffer2,
L"Melk\n",
5,
&writen,
NULL );
system("PAUSE");
SetConsoleActiveScreenBuffer( buffer2 );
WriteConsole( buffer2,
L"Malk\n",
5,
&writen,
NULL );
WriteConsole( buffer1,
L"Mulk\n",
5,
&writen,
NULL );
system("PAUSE");
SetConsoleActiveScreenBuffer( buffer1 );
system("PAUSE");
CloseHandle( buffer2 );
return 0; //End of main
值得庆幸的是,这正在按预期工作。
首先屏幕输出只是:
Milk
然后是:
Melk
Malk
并完成:
Milk
Mulk
我对此有几个问题:
1)开头的FreeConsole()
and真的有必要吗?AllocConsole()
2)我也应该使用CloseHandle()
缓冲区1吗?或者我什至不应该将它用于buffer2?
3) 任何你认为重要的要指出的地方。
PS:这是我的第一个问题,我希望我没有违反任何准则。
PS²:我只是system("PAUSE")
因为这是一个测试而使用它,你不应该担心我在实际软件中使用它。