子线程处理数据,主线程更新界面的有关问题

子线程处理数据,主线程更新界面的问题
我一个程序的UI里有一个listView,用来显示程序运行过程中的消息和日志
因为日志很多,因此滚动很快,这让程序看上去运行的很卡,有时甚至看不到更新日志了,因为来不及刷新界面了
因此想把程序内部的处理放到子线程,而让主线程只负责处理UI刷新
目前我写的一个更新listView的函数是:
SetEventLog(int Level, int IcoIndex, CString MsgType, CString Msg)
参数分别是:消息的级别、图标的ID、消息类型、消息文本
虽然在子线程里可以通过主线程句柄调用这个函数,但这样是不是不能解决问题,因为子线程还是要等到函数返回了才继续执行
所以我想是不是可以通过给主线程发送一个消息的方式来做?消息要带4个参数,要如何来做呢?请高手指点,最好是给一个小例子,谢谢。
------解决方案--------------------
可以的,将你相关的信息封装一下,然后PostMessage给UI线程即可。
typedef struct XXX
{
 int Level;
 int IconIndex;
 TCHAR szMsgType[XXXXX];
 TCHAR szMsg[XXXXXX];
}XXX, *PXXX;
------解决方案--------------------
子线程给主线程发送消息,送一个结构体等数据过去,主线程解析数据,更新界面