如何在窗口中打印多个格式字符串?

时间:2011-05-05 03:28:20

标签: c++ windows winapi

成功解决此问题后how to print a format string into window,另一个问题出现在我身上。

如果有多种格式字符串,如何将它们打印到窗口中?例如下面:

sprintf(buf, formatString-1...);
SendMessage(hwnd, WM_SETTEXT, NULL, (LPARAM)buf);
...
sprintf(buf, formatString-2...);
SendMessage(hwnd, WM_SETTEXT, NULL, (LPARAM)buf);
...
sprintf(buf, formatString-3...);
SendMessage(hwnd, WM_SETTEXT, NULL, (LPARAM)buf);
...

请注意,只将formatString-3打印到窗口,而我想将它们全部放入窗口。怎么做?(PS:请不要使用buf连接)谢谢!〜

2 个答案:

答案 0 :(得分:2)

每条WM_SETTEXT消息都会覆盖前一条消息。这就是为什么你只观察最终信息的影响。

虽然您声明在发送WM_SETTEXT消息之前不想连接缓冲区,但这是WM_SETTEXT唯一的选项。

如果您有编辑控件,则可以使用EM_REPLACESEL消息插入文本。

答案 1 :(得分:2)

您是否尝试使用多行文本生成一个控制台样式或日志样式的窗口,一个接一个?

如果是这样,最简单的方法是选择一个能够为你完成此操作的控件。像静态(通常用于标签)这样的东西通常一次只对一个字符串有用。如果要显示多行输出,则两个主要选项是:

  • 列表框控件:使用LB_ADDSTRING将项添加到最后。 (您可能希望使用LB_SETCURSEL或类似选项来选择最后一项,以便在项目添加到最后时,它将滚动显示最后一项。)

  • 只读多行编辑控件:使用the technique outlined here on MSDN将文本附加到结尾。请注意,使用此方法,您需要自己提供“\ r \ n”来创建新行。