第一步:定义消息
#define WM_PROCESS_MESSAGE WM_USER+100
DWORD m_ThreadID,m_ThreadID2;
HANDLE m_hThread,m_hThread2;
第二步:实现线程执行函数:
//1.先在主线程中创建一个工作者线程 GetProcessMessage(LPVOID pParam)用于接收其他线程传过来的消息
//和一个工作者线程 SendProcessMessage(LPVOID pParam)用于向工作者线程发送消息
//接收消息工作者线程主体:
UINT GetProcessMessage(LPVOID pParam)
{
MSG msg;
while(1)
{
::GetMessage(&msg, NULL, 0, 0);
switch(msg.message)
{
case WM_PROCESS_MESSAGE: //截获WM_PROCESS_MESSAGE消息
dosomething;
break;
default:
break;
}
}
return 0;
}
//发送消息工作者线程主体
UINT SendProcessMessage(LPVOID pParam)
{
while(1)
{
Sleep(5000); //隔5秒自动向接收消息的工作者线程发送消息
::PostThreadMessage((DWORD)pParam, WM_PROCESS_MESSAGE, 0, 0);
}
return 0;
}
第三步:创建线程
// TODO: 在此添加控件通知处理程序代码
m_hThread1 = CreateThread(NULL, 0,(LPTHREAD_START_ROUTINE)GetProcessMessage, NULL, 0, &m_ThreadID1);
if ((m_hThread1 == NULL))//无法创建从线程
{
MessageBox(L"从线程创建失败!");
exit(-1);
}
m_hThread2 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)SendProcessMessage, (LPVOID)m_ThreadID1, 0, &m_ThreadID2); //注意红色部分的参数为接收消息线程的ID
if ((m_hThread2 == NULL))//无法创建从线程
{
MessageBox(L"从线程创建失败2!");
exit(