我有一个C ++ Windows API程序,该程序使用TextOut函数显示文本
TCHAR buffer[] = _T("Hello");
TCHAR buffer1[] = _T("How to clear this one\?");
TextOut(hdc,200,170,buffer,_tcslen(buffer));
TextOut(hdc, 200, 185, buffer1, _tcslen(buffer1));
如何清除上一个并添加此。
我发现在这样的相同位置上执行TextOut功能
TextOut(hdc,200,170,buffer,_tcslen(buffer));
TextOut(hdc, 200, 170, buffer1, _tcslen(buffer1));
将取代上一个,但由于其他一些原因,我无法执行此操作,这是清除屏幕的实际方法。像system(“ cls”)这样的Windows窗口中是否有用于控制台的内容,谢谢
这个问题提出得不当,因为您似乎认为窗口的可绘制表面某种程度上是持久的-并非如此,系统可以自由地忽略其所有内容,并调用WM_PAINT
处理程序以将其重新绘制回窗口。说明它在哪里。因此,这个问题感到很奇怪:不是您要擦除已经存在的某些内容(窗口内容是短暂的),而是要安排您的绘制代码不再绘制您不需要的内容并强制重新绘制。
所以,如果你正在做的图形中WM_PAINT
应该像你,你应该设置一些种类标志(或者可能是,清除存储的元素绘制数据结构),它告诉你的重绘代码没有绘制文本,做一个InvalidateRect(hwnd, TRUE)
有您的窗口背景被重新粉刷,并且您WM_PAINT
被称为。
但是,我担心的是您没有按照要求进行绘画WM_PAINT
,而是使用GetDC
诸如此类的东西分散在其他地方(提示:在正常的应用中,几乎没有需要GetDC
或的地方CreateDC
);在这种情况下,您已经做错了(通过最小化和还原窗口可以看到),并且应该在继续之前学习正确的操作方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句