首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

TMemo添加数据的有关问题

2012-02-04 
TMemo添加数据的问题在CSDN中搜到如下代码,是季老大写的.void__fastcallComThread::AppendToMemo(TMemo*Me

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);

热点排行