将你的类对象指针当参数传进线程,比如 CTestDialog *dlg = .....; DWORD dwThreadID = 0; CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadTest,dlg ,0,&dwThreadID); DWORD ThreadTest(LPVOID wParam) { CTestDialog *pDlg = (CTestDialog *)wParam; if(pDlg != NULL) { while(...) { ..... } pDlg->PostMessage(.....);线程中通过发送消息给界面进行更新,不要直接更新界面, 否则是不安全调用. } return 0; }
::PostMessage函数的后两个参数就是用于存放向目标窗口发送的数据
以前写的一个线程与窗口互相通信的小程序,希望对你有用哟: http://blog.csdn.net/hjx_1000/article/details/8476092
2楼的方法就可以了 楼主多尝试
在dodataexchange里面操作!
将你的类对象指针当参数传进线程,比如 CTestDialog *dlg = .....; DWORD dwThreadID = 0; CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadTest,dlg ,0,&dwThreadID); DWORD ThreadTest(LPVOID wParam) {……
做一个dialog 用updatedata(true); 更新
如24楼所说,在函数onState里看下句柄的值是否正确。
引用 23 楼 gllg1314 的回复:引用 21 楼 arpnet99 的回复://发送消息代码。这里还没进到线程里,先在起线程的上一级,测试了下。 VOID CDevOper::Get(HWND m_hMainWnd,int flag){ char szBuf[64]={0}; sprintf(szBuf,"%s","hello world")……
1、你先单步执行一下,在函数onState里打个断点看程序是否进入该函数。 2、你的工程是使用的多字节的,而pbuf是char类型的指针,你将char* 修改为WCHAR*
引用 21 楼 arpnet99 的回复://发送消息代码。这里还没进到线程里,先在起线程的上一级,测试了下。 VOID CDevOper::Get(HWND m_hMainWnd,int flag){ char szBuf[64]={0}; sprintf(szBuf,"%s","hello world"); SendMessageA( ……
//发送消息代码。这里还没进到线程里,先在起线程的上一级,测试了下。 VOID CDevOper::Get(HWND m_hMainWnd,int flag){ char szBuf[64]={0}; sprintf(szBuf,"%s","hello world"); SendMessageA( m_hMainWnd,ID_MSG_STA……
15,471
社区成员
49,181
社区内容
加载中
试试用AI创作助手写篇文章吧