TMemo添加数据的问题
在CSDN中搜到如下代码,是季老大写的.
void __fastcall ComThread::AppendToMemo(TMemo* Memo, LPCSTR text)
{
int nPos, nNum;
if (Memo==NULL || text==NULL) return;
nNum = Memo-> Perform(EM_GETLINECOUNT, 0, 0);
nPos = Memo-> Perform(EM_LINEINDEX, nNum-1, 0);
nNum = Memo-> Perform(EM_LINELENGTH, nPos, 0);
Memo-> Perform(EM_SETSEL, nPos+nNum, nPos+nNum);
Memo-> Perform(EM_REPLACESEL, 0, (long)text);
}
我的程序中创建了另一个线程,有个全局变量指向memo1,如:gmemo = memo1,
在另一个线程中用这个全局变量向memo1中循环添加数据,如:
while( true )
{
AppendToMemo( gmemo, "字符串 " );
}
这样数据是添加到memo1中了,但背景色变了,像是被选中一样,如果拿鼠标选一遍或是改变窗体大小就会好,这是怎么回事?应该怎么解决??
如果在主程序中用timer,循环向memo1中添加数据就不会有此问题.
[解决办法]
需要让Memo失效一下,以便重绘
[解决办法]
不清楚,我在delphi中测试这样的代码不会像你这样,你改一下函数,然后用Synchronize调用看看效果。
[解决办法]
试试在循环中加入
UpdateWindow(Memo-> Handle,true);