成功解决此问题后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连接)谢谢!〜
答案 0 :(得分:2)
每条WM_SETTEXT
消息都会覆盖前一条消息。这就是为什么你只观察最终信息的影响。
虽然您声明在发送WM_SETTEXT
消息之前不想连接缓冲区,但这是WM_SETTEXT
唯一的选项。
如果您有编辑控件,则可以使用EM_REPLACESEL
消息插入文本。
答案 1 :(得分:2)
您是否尝试使用多行文本生成一个控制台样式或日志样式的窗口,一个接一个?
如果是这样,最简单的方法是选择一个能够为你完成此操作的控件。像静态(通常用于标签)这样的东西通常一次只对一个字符串有用。如果要显示多行输出,则两个主要选项是:
列表框控件:使用LB_ADDSTRING将项添加到最后。 (您可能希望使用LB_SETCURSEL或类似选项来选择最后一项,以便在项目添加到最后时,它将滚动显示最后一项。)
只读多行编辑控件:使用the technique outlined here on MSDN将文本附加到结尾。请注意,使用此方法,您需要自己提供“\ r \ n”来创建新行。