我有一个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));
将取代之前的那个,但由于其他原因,我不能这样做 什么是清除屏幕的实际方式。 窗口中有什么像系统(“cls”)的控制台 谢谢
答案 0 :(得分:4)
这个问题是不正确的,因为你似乎认为窗口的可绘制表面是某种持久性的 - 它不是,系统可以自由地忘记它的所有内容并调用你的{{1处理程序让它重新绘制回原来的状态。出于这个原因,这个问题很奇怪:不是你删除了已经存在的一些内容(窗口内容是短暂的),你安排好让你的油漆代码不再描绘你不想要的东西并强制重绘。
所以,如果你正在使用WM_PAINT
进行绘图,你应该设置某种标记(或者可能清除存储要绘制的元素的数据结构),告诉你的重绘代码不要绘制文本并执行WM_PAINT
以重新绘制窗口背景并调用InvalidateRect(hwnd, TRUE)
。
然而,我担心你没有按照WM_PAINT
画画,而是使用WM_PAINT
等散布在其他地方(提示:在正常的应用程序中,几乎没有您需要的地方GetDC
或GetDC
);在这种情况下,你已经做错了(正如你可以通过最小化和恢复窗口看到的那样),你应该{I} learn how to do it properly才能继续。