I am looking for a win32 api function that clears the console, much like the cls
command
Thanks!
Devjeet
Asked
Active
Viewed 2.5k times
5

devjeetroy
- 1,855
- 6
- 26
- 43
2 Answers
18
This is pretty old, but should still work. Conversion to assembly language is left as an exercise for the reader, but shouldn't be terribly difficult (most of it is just function calls, and the multiplication is trivial):
#include <windows.h>
void clear_screen(char fill = ' ') {
COORD tl = {0,0};
CONSOLE_SCREEN_BUFFER_INFO s;
HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(console, &s);
DWORD written, cells = s.dwSize.X * s.dwSize.Y;
FillConsoleOutputCharacter(console, fill, cells, tl, &written);
FillConsoleOutputAttribute(console, s.wAttributes, cells, tl, &written);
SetConsoleCursorPosition(console, tl);
}

Jerry Coffin
- 476,176
- 80
- 629
- 1,111
-
:O Assembly got voids :D Really, though, conversion is indeed trivial. – Spyros May 03 '11 at 07:56
-
1Last 2 statements, attrib isn't defined and neither is console. I'm guessing console is screen? But what is attrib? Thanks. – Bradley Weston Dec 06 '14 at 21:39
-
@UkownUser: It looks like the code still had a couple minor of bits left over from the program I was writing when I originally wrote this code. I've edited in code that works standalone. Thanks for the heads-up. – Jerry Coffin Dec 06 '14 at 22:10
5
There is no Win32 API which directly clears the console - you need to use something like FillConsoleOutputCharacter.