消息和事件的区别 VC++解惑
来源:互联网 发布:淘宝鞋子关键词 编辑:程序博客网 时间:2024/04/29 02:15
(一) 利用用户定义的消息通信
#define WM_USERMSG WMUSER+100;在需要的时候,在一个线程中调用::PostMessage((HWND)param,WM_USERMSG,0,0)或CwinThread::PostThradMessage()来向另外一个线程发送这个消息,上述函数的四个参数分别是消息将要发送到的目的窗口的句柄、要发送的消息标志符、消息的参数WPARAM和LPARAM。
UINT ThreadFunction(LPVOID pParam)
{
while(!bend)
{
Beep(100,100);
Sleep(1000);
}
::PostMessage(hWnd,WM_USERMSG,0,0);
return 0;
}
////////WM_USERMSG消息的响应函数为OnThreadended(WPARAM wParam,LPARAM lParam)
LONG CTestView::OnThreadended(WPARAM wParam,LPARAM lParam)
{ AfxMessageBox("Thread ended."); Retrun 0;}
(二)用事件对象实现通信
在线程之间传递信号进行通信比较复杂的方法是使用事件对象,用MFC的Cevent类的对象来表示。事件对象处于两种状态之一:有信号和无信号,线程可以监视处于有信号状态的事件,以便在适当的时候执行对事件的操作。上述例子代码修改如下: ////////////////////////////////////////////////////////////////////
Cevent threadStart ,threadEnd;
UINT ThreadFunction(LPVOID pParam)
{
::WaitForSingleObject(threadStart.m_hObject,INFINITE);
AfxMessageBox("Thread start.");
while(!bend)
{
Sleep(1000);
Int result=::WaitforSingleObject(threadEnd.m_hObject,0); //等待threadEnd事件有信号,无信号时线程在这里悬停
}
::PostMessage(hWnd,WM_USERMSG,0,0);
return 0;
}
///////////////////////////////////////////////////////////
/Void CtestView::OninitialUpdate()
{ hWnd=GetSafeHwnd();
threadStart.SetEvent();//threadStart事件有信号
pThread=AfxBeginThread(ThreadFunction,hWnd);//启动线程
pThread->m_bAutoDelete=FALSE;
Cview::OnInitialUpdate);
}
////////////////////////////////////////////////////////////////
Void CtestView::OnDestroy()
{ threadEnd.SetEvent();
WaitForSingleObject(pThread->m_hThread,INFINITE);
d elete pThread;
Cview::OnDestroy();
}
- 消息和事件的区别 VC++解惑
- 消息和事件的区别 VC++解惑
- (2012.05.26)消息和事件的区别 VC++解惑
- Windows消息和事件的区别 VC++解惑
- 事件和消息的区别 - VC框架
- 事件和消息的区别 - VC框架
- vc 消息与事件的区别
- vc 消息与事件的区别 转载
- vc 消息与事件的区别
- 事件和消息的区别
- 事件和消息的区别
- 事件和消息的区别
- 事件和消息的区别
- 【小宝解惑】VC++中delete和delete [] 的区别
- windows中消息和事件的区别
- 【小宝解惑】vc下debug版本和release版本的区别
- vc 6.0和vs2008中添加自定义消息的区别
- Java 解惑:Comparable 和 Comparator 的区别
- [Tomcat剖析] 1 Tomcat整体架构
- Androdi平台camera的相关知识总结
- 不能将参数 1 从“const char [11]”转换为“LPCWSTR”
- HDU 6208 The Dominator of Strings (kkkkkk....mp)
- redis持久化存储
- 消息和事件的区别 VC++解惑
- Android 布局XML性能优化
- weight-init.lua
- 应用SSH增强产品竞争力
- BZOJ 3730: 震波 动态树分治 线段树 lca
- 好用html5-api:classList
- mvc
- IntelliJ Idea使用
- StringUtils用法+StringUtils详细介绍