线程中对 LISTBOX操作,该怎么解决
线程中对 LISTBOX操作
基于对话框新建名为 Send工程 对话框IDD_SEND_DIALOG 添加一个按钮 BUTTON1 一个listbox IDC_LIST1
HANDLE hThread; DWORD ThreadID;
问题是 想在点击BUTTON1的时候 在LISTBOX中显示日志
CString strLogMsg;
strLogMsg.Format("welcome");/* 内容必须是CString 型的 日志内容这里用welcome 代替 原先是两个char 数组 timeBuf[100]和 logBuf[100]的组合 */
请写出ThreadFunc具体的代码 ,好几天了,CSDN上问了一圈,没搞明白
------解决方案--------------------
1 ThreadFunc线程函数要通过发送消息给界面让他显示,而不能在线程函数内直接操作listbox
2 显示的数据应该 加锁保护
3 避免使用CreateThread,用MFC的AfxBeginThread来代替
4 使用CreateThread,记得CloseHandle
基于对话框新建名为 Send工程 对话框IDD_SEND_DIALOG 添加一个按钮 BUTTON1 一个listbox IDC_LIST1
- C/C++ code
void CSendDlg::OnButton1() { // TODO: Add your control notification handler code here hThread=CreateThread(NULL, 0,(LPTHREAD_START_ROUTINE)ThreadFunc, NULL, 0, &ThreadID); GetDlgItem(IDC_CONNECT)->EnableWindow(FALSE); GetDlgItem(IDC_DISCONNECT)->EnableWindow(TRUE); }
HANDLE hThread; DWORD ThreadID;
问题是 想在点击BUTTON1的时候 在LISTBOX中显示日志
CString strLogMsg;
strLogMsg.Format("welcome");/* 内容必须是CString 型的 日志内容这里用welcome 代替 原先是两个char 数组 timeBuf[100]和 logBuf[100]的组合 */
请写出ThreadFunc具体的代码 ,好几天了,CSDN上问了一圈,没搞明白
------解决方案--------------------
1 ThreadFunc线程函数要通过发送消息给界面让他显示,而不能在线程函数内直接操作listbox
2 显示的数据应该 加锁保护
3 避免使用CreateThread,用MFC的AfxBeginThread来代替
4 使用CreateThread,记得CloseHandle