工作线程中如何更新界面

简介: 工作线程中如何更新界面

工作线程在更新程序界面时,很多时候会出现莫名奇妙的错误。我想了很多方法都不行,今天从委托中得到了灵感。那就是触发界面的事件。


主要的流程是:自定义事件消息 如#define WM_SHOWFLASHADV (WM_USER+103)


                   自定义事件函数


//
LRESULT  CAdvisoryWidgetDlg::OnShowFlashAdv(WPARAM wParam, LPARAM lParam)
{
 Advertise * adv=(Advertise*)wParam;
 int nScreenWidth=::GetSystemMetrics(SM_CXSCREEN);
 int nScreenHeight=::GetSystemMetrics(SM_CYSCREEN);     
 int nLen=WideCharToMultiByte(CP_ACP,0,adv->strContent.GetBuffer(),-1,0,0,0,0);
 char * tmp=new char[nLen];
 WideCharToMultiByte(CP_ACP,0,adv->strContent.GetBuffer(),-1,tmp,nLen,0,0);
 m_flashWnd->SetSwfUrl(tmp); 
 ::SetWindowPos(m_flashWnd->m_hWnd,HWND_TOP,nScreenWidth-adv->rightinter-adv->width,nScreenHeight-adv->bottominter-adv->height,adv->width,adv->height,SWP_SHOWWINDOW); 
 delete[] tmp;
 return 1;
}


绑定消息和事件函数ON_MESSAGE(WM_SHOWFLASHADV,OnShowFlashAdv)


在工作线程时按照自己的需要向界面线程发送消息pMain->PostMessage(WM_SHOWFLASHADV,(WPARAM)adv,0);



希望能给困惑中的朋友一些启发

相关文章
|
2月前
|
数据处理
Swing通过后台线程实现页面更新
Swing通过后台线程实现页面更新
22 2
|
12月前
|
SQL
Flowable 流程实例的挂起(暂停)与激活
Flowable 流程实例的挂起(暂停)与激活
Flowable 流程实例的挂起(暂停)与激活
|
Web App开发 JavaScript 前端开发
页面运行中事件频繁触发会阻塞页面吗?
之前看`防抖`和`节流`的时候,看到短时间内大量的事件触发会引起浏览器卡死,浪费浏览器性能,那么为什么事件触发会引起阻塞页面的情况呢?引起页面阻塞的原因真的是因为事件触发太多了吗?
|
SQL 缓存 安全
工作中遇到的小技巧 一(暂停更新)
原来只是在网易博客里整理了一些学习中遇到的小技巧,现在开始在这里慢慢积累希望对大家有所帮助。
工作中遇到的小技巧 一(暂停更新)
为什么有时候在子线程更新UI没报错?
为什么有时候在子线程更新UI没报错?
135 0
为什么有时候在子线程更新UI没报错?