马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本人新手,刚写了一个倒计时小程序,有点不明白的事,求大神指教。
执行GetStdHandle()获取了hOutput 句柄之后,必须得关闭吗?为什么在最后关闭时,系统会闪过“句柄无效”?多谢啦!#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<windows.h>
int Pos(HANDLE hOutput,int time_end)//设置光标位置
{
CONSOLE_SCREEN_BUFFER_INFO bInfo; // 窗口缓冲区信息
int i = 0;
if (time_end<0)
{
return -1;
}
printf("距离程序结束还有:");
GetConsoleScreenBufferInfo(hOutput, &bInfo);
for (i = time_end; i > 0; i--)
{
SetConsoleCursorPosition(hOutput, bInfo.dwCursorPosition);
printf("%2ds", i);
Sleep(1000);
}
SetConsoleCursorPosition(hOutput, bInfo.dwCursorPosition);
printf("程序结束!");
return 0;
}
int main()
{
HANDLE hOutput;
char *title = "倒计时小程序";
int color = 11;
SetConsoleTitle(title);
hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hOutput, color);
Pos(hOutput,10);
printf("\n");
CloseHandle(hOutput);//?
system("pause");
return 0;
}
CloseHandle我没记错的话这个主要在线程中才会使用
获取界面的句柄是不需要用到CloseHandle的
你担心内存泄露 你可以最后加上hOutput =NULL
个人比较喜欢用HWND这个类型或者CWND去控制控件
|