|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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去控制控件
|
|