线程函数CreateThread(funProc)中其中这个funProc是函数地址,但对此要求是静态或者全局的函数。
那么如果我想让这个funProc函数能动态显示文本信息,比如其中的编辑框变量m_edit就不是静态或全局变量了,这时候我的程序就会报错。那么我如何使得线程下的函数可以动态显示信息呢,是需要跳转到另一个函数,还是如何实现?
那么如果我想让这个funProc函数能动态显示文本信息,比如其中的编辑框变量m_edit就不是静态或全局变量了,这时候我的程序就会报错。那么我如何使得线程下的函数可以动态显示信息呢,是需要跳转到另一个函数,还是如何实现?
必须要这么做的
线程中试图对GUI线程进行UpdateData都是会崩溃的在线程中给窗口发送自定义消息,由消息响应函数去显示更新
CloseHandle(Thread);UINT TimerProc(WPARAM wParam,LPARAM lParam)
{
CMyView *pView=(CMyView*)wParam; // 传类指针进来就可以,
// 直接调用View 中的函数更新数据没问题 的!
while(1)
{
...........
..........
Sleep(1);
}
}
//自定义消息
#define WM_MY_MSG WM_USER+1//线程函数
DWORD MyThreadProc(LPVOID *lpParam)
{
HWND hWnd=(HWND)wParam;
//发送自定义消息
SendMessage(hWnd, WM_MY_MSG, 0, 0);
}
//创建工作线程
HANDLE Thread=CreateThread(NULL,0,MyThreadProc,(LPVOID)m_hWnd,0,NULL);在接收窗口处理自定义消息大概思路就是这样的