2010-02-26 161 views
4

我应该使用哪种MFC控件,以及如何使用它来在对话框上显示不断变化的文本(如进度文本)?MFC动态文本控制?

例如,我应该使用静态文本控件吗?但是,你可以通过编程来改变它吗?

回答

3

是的,您可以通过编程方式更改静态控件的内容。将ID更改为,而不是IDC_STATIC,然后您可以为其分配一个成员变量。您可以使用your_var.SetWindowText()设置文本。

编辑:你做了多少变化,速度有多快?我用一个定时器(设置为0的持续时间)做了一个快速测试程序,它在时间触发时对控件进行格式化和写入新字符串,因此它不断更新。下面是它看起来像运行一段时间后:

Test program

这里就是任务管理器显示:

Task Manager

尖峰一个正确的是(至少大部分)从取测试程序的屏幕截图保存,等等。一旦我放弃了这样的事情,CPU使用率就回到了噪声水平(偶尔出现blip)。我离开程序运行 - 大约半小时后,它仍然运行良好,没有明显的CPU使用率(根据任务管理器快速运行,它甚至还没有使用过一秒钟的CPU时间)。

+0

我已经这样做了,出于某种原因它似乎在多次频繁更改后耗尽CPU – Vanwaril 2010-02-26 04:57:00

+0

您是否可以通过编程方式更改静态文本控件的字体和颜色? – Chetan 2010-02-26 09:00:04

+1

@ Chetan:是的。要更改字体,请调用它的'SetFont()'成员。要更改背景颜色,请返回画笔以响应“WM_CTLCOLOR”或“WM_CTLCOLORSTATIC”。要设置文本颜色,请在处理“WM_CTLCOLOR”时为您收到的DC调用“SetTextColor()”。 – 2010-02-26 15:05:50