#include <stdio.h>
#include <windows.h>
void ClearScreen(HANDLE hOut);//清屏
int main(void)
{
HANDLE hOut;
HANDLE hIn;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);//获取标准输出设备句柄
hIn = GetStdHandle(STD_INPUT_HANDLE); //获取标准输入设备句柄
WORD att = FOREGROUND_RED| FOREGROUND_INTENSITY | BACKGROUND_BLUE;//蓝色背景,红色文本
SetConsoleTextAttribute(hOut,att);//设置控制台窗口字体颜色和背景色
CONSOLE_CURSOR_INFO iOut;
iOut.bVisible = FALSE;//不显示光标
iOut.dwSize = sizeof(iOut);
SetConsoleCursorInfo(hOut,&iOut);//关闭光标
ClearScreen(hOut);//清屏
INPUT_RECORD mouseRec;//保存鼠标信息
DWORD res;
COORD pos = {0, 0};//保存坐标
while (1)
{
ReadConsoleInput(hIn, &mouseRec, 1, &res);//从输入缓冲区读取数据
if (mouseRec.EventType == MOUSE_EVENT)//鼠标事件
{
//双击鼠标退出循环
if (DOUBLE_CLICK == mouseRec.Event.MouseEvent.dwEventFlags)
break;
pos = mouseRec.Event.MouseEvent.dwMousePosition;
if (FROM_LEFT_1ST_BUTTON_PRESSED == mouseRec.Event.MouseEvent.dwButtonState)
FillConsoleOutputCharacter(hOut, 'o', 1, pos, NULL);//输出字符画图
/*FillConsoleOutputCharacter从指定的坐标开始,将字符写入控制台屏幕缓冲区指定的次数*/
}
}
CloseHandle(hOut);//关闭标准输出设备句柄
CloseHandle(hIn);//关闭标准输入设备句柄
return 0;
}
void ClearScreen(HANDLE hOut)
{
CONSOLE_SCREEN_BUFFER_INFO bInfo;
GetConsoleScreenBufferInfo(hOut,&bInfo);
COORD home = {0,0};//0,0开始填充
unsigned long size = bInfo.dwSize.X * bInfo.dwSize.Y;
FillConsoleOutputAttribute(hOut,bInfo.wAttributes,size,home,NULL);
FillConsoleOutputCharacter(hOut,' ',size,home,NULL);//输出空格填充
}