修订1:
我无法很好地掌握WinAPI的AllocConsole();
功能。我要么需要选项一,要么选择2.最好同时拥有两个:)。提前致谢。这是选项1:
单击BUTTON_1时,从WinAPI程序创建一个控制台窗口。控制台需要能够输出文本(如cout
),以及睡眠/延迟文本的打印。 (类似于Sleep()
)
选项2:
程序不会像在选项1中那样将文本打印到控制台窗口,而是将文本打印到用户无法访问的编辑框。这也需要能够使用类似Sleep()
的内容来延迟打印文本。
答案 0 :(得分:0)
假设您将字符串附加到编辑控件,可能是为了记录某个冗长过程中的TTY样式输出:
使用EM_SETSEL
消息选择最后一个字符后面的范围,然后使用EM_REPLACESEL
将其替换为要追加的字符串。发生这种情况时,编辑控件会滚动。例如,如果hEdit
是编辑控件的句柄,str
是以0结尾的字符串追加:
int idx=GetWindowTextLength(hEdit);
SendMessage(hEdit,EM_SETSEL,idx,idx);
SendMessage(hEdit,EM_REPLACESEL,0,(LPARAM)str);
这是知识库文章推荐的过程:http://support.microsoft.com/kb/109550
答案 1 :(得分:0)
我的建议是使用
SendMessage(hEditBox,EM_SETSEL,-2,-2);
将插入符号移动到编辑控件中的文本末尾。它为您节省了一个函数调用,并且可以正常工作。
关于睡眠相关部分,我认为最好使用定时器,这应该没有任何问题。
实施例
// somewhere in the code where you decide to make changes to the edit control
...
SetTimer(hWnd,TIMER_ID,1000,0); // TIMER_ID is arbitrary, the delay is set to 1000 ms
...
// main procedure message
switch (uMsg) {
...
case WM_TIMER:
SendMessage(hEditBox,EM_SETSEL,-2,-2);
SendMessage(hEditBox,EM_REPLACESEL,0,buffer);
KillTimer(hWnds,TIMER_ID);
...
}
您可能希望在此方面投入更多工作,例如重用SetTimer调用。