Win32 C控制台清除屏幕没有闪烁
发布时间:2020-12-14 01:53:25 所属栏目:Windows 来源:网络整理
导读:我见过一些控制台游戏,屏幕刷新/清除,没有烦人的眨眼.我尝试了很多解决方案,这就是我现在所获得的解决方案: while(true){ if(screenChanged) //if something needs to be drawn on new position { COORD coordScreen = { 0,0 }; DWORD cCharsWritten; CONSO
我见过一些控制台游戏,屏幕刷新/清除,没有烦人的眨眼.我尝试了很多解决方案,这就是我现在所获得的解决方案:
while(true) { if(screenChanged) //if something needs to be drawn on new position { COORD coordScreen = { 0,0 }; DWORD cCharsWritten; CONSOLE_SCREEN_BUFFER_INFO csbi; DWORD dwConSize; HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); GetConsoleScreenBufferInfo(hConsole,&csbi); dwConSize = csbi.dwSize.X * csbi.dwSize.Y; FillConsoleOutputCharacter(hConsole,TEXT(' '),dwConSize,coordScreen,&cCharsWritten); GetConsoleScreenBufferInfo(hConsole,&csbi); FillConsoleOutputAttribute(hConsole,csbi.wAttributes,&cCharsWritten); SetConsoleCursorPosition(hConsole,coordScreen); } ///printf all the time graphics on their right position with SetConsoleCursorPosition Sleep(33.3f); } 尽管如此,我还是得到了一些微小的眨眼.有人有主意吗? 解决方法
之所以发生这种情况,是因为显示屏会在您清除控制台屏幕和实际绘制屏幕之间刷新.通常这种情况发生得如此之快,以至于你永远都看不到它,但偶尔你会在正确的时间进行,并且你会遇到闪烁.
一个很好的选择是创建一个与控制台屏幕大小和宽度相同的屏幕外缓冲区,完成所有文本输出并在那里更新,然后使用 BOOL WINAPI WriteConsoleOutput( _In_ HANDLE hConsoleOutput,_In_ const CHAR_INFO *lpBuffer,_In_ COORD dwBufferSize,_In_ COORD dwBufferCoord,_Inout_ PSMALL_RECT lpWriteRegion ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Windows运行时 – 在Windows Store应用程序上实现下划线超链
- 调用FileHelperEngine构造函数时,在PresentationFramework.
- 如何使用PowerShell比较两台Windows服务器之间的已安装修补
- 是否有类似Microsoft Windows Server DFS for Linux的东西?
- windows – 无法使用buildozer编译python脚本
- powershell – 捕获上周所有访问过共享文件夹的人?
- 发布Windows Azure网站时无法加载文件或程序集“msshrtmi”
- 工作流基础 – Windows工作流服务 – 它们是什么?
- Windows中的活动窗口和QWidget :: activateWindow()
- Windows系统CPU内存网络性能统计第四篇 CPU 多核CPU各核使用
推荐文章
站长推荐
热点阅读