COORD和CONSOLE_SCREEN_BUFFER_ INFO是wincon.h定义的控制台结构体类型,其原型如下:
// 控制台窗口信息结构体typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
COORD dwSize // 缓冲区大小
COORD dwCursorPosition // 当前光标位置
WORD wAttributes // 字符属性
SMALL_RECT srWindow // 当前窗口显示的大小和位置
COORD dwMaximumWindowSize // 最大的窗口缓冲区大小
} CONSOLE_SCREEN_BUFFER_INFO
举个简单的例子:
#include <windows.h>#include <stdio.h>
#include <conio.h>
int main(void)
{
HANDLE hOut
CONSOLE_SCREEN_BUFFER_INFO bInfo // 存储窗口信息
COORD pos = {0, 0}
// 获取标准输出设备句柄
hOut = GetStdHandle(STD_OUTPUT_HANDLE)
// 获取窗口信息
GetConsoleScreenBufferInfo(hOut, &bInfo )
printf("\n\nThe soul selects her own society\n")
printf("Then shuts the door\n")
printf("On her devine majority\n")
printf("Obtrude no more\n\n")
_getch()
// 向窗口中填充字符以获得清屏的效果
FillConsoleOutputCharacter(hOut,' ', bInfo.dwSize.X * bInfo.dwSize.Y, pos, NULL)
// 关闭标准输出设备句柄
CloseHandle(hOut)
return 0
}
不想调用控制台入口换winmain底层的编译,在编译成目标文件之后,不要链接成可执行文件,生成别的
二进制文件
或者。。像
Linux内核
一样,编译成可执行文件,装载入内存,然后用内存镜像拷贝出纯二进制文件。。等等方法
至于编译驱动有另外更加专业的方法咯。。