最近在做一个测试程序时,需要将程序的一些信息输出到Edit Control之中,以便于观察被测试程序的运行状态。在输出信息过程中发现,Edit Control默认是不会自动滚动,并将最新的信息显示到Edit Control中。
由于无法看到最新的显示信息,造成了我在第一时间没有办法看到程序的运行状态,所以我决定仿造VS的输出窗口,在输出信息时让滚动条自动滚动,以便我能够在第一时间看到程序的运行状态。
首先,为了使Edit Control能够接收多行文本,你必须使用代码或,者使用VS的界面设计器将Edit Control的Multline属性设置为true,为了使Edit Control更接近于VS的输出窗口,你还可以将Read Only以及Vertical Scroll属性设置为true。
下面就是实现自动滚动功能了,于是我打开MSDN,发现了EM_LINESCROLL消息能够让我们将Edit Control水平滚动多少字符或者垂直滚动多少行。当我兴奋的觉得问题解决了的时候,发现我还需要知道Edit Control中有多少行信息,才能让Edit Control滚动到新信息的出现位置。再次查询MSDN,发现EM_GETLINECOUNT可以获取到Edit Control中所包含字符的行数。让Edit Control滚动的具体的代码如下所示: