返回> 网站首页
线程间通信
yoours2015-03-02 13:53:19
简介一边听听音乐,一边写写文章。
// 线程间通信.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <Windows.h> #define WM_USER_MSG WM_USER+102 COPYDATASTRUCT SendText; DWORD WINAPI Thread(LPVOID lpParameter) { COPYDATASTRUCT re_SendText; char re_size[100]; MSG msg; BOOL bRet; while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0) { if(bRet == -1) { //异常情况 } else { switch(msg.message) { case WM_QUIT: //退出消息循环 break; case WM_USER_MSG: printf("接收到消息\n"); memcpy(&re_SendText, (const void *)msg.lParam, sizeof(COPYDATASTRUCT)); memcpy(re_size, (const void *)re_SendText.lpData, re_SendText.cbData); printf("消息内容是:%s\n", re_size); break; default: break; } } } } int _tmain(int argc, _TCHAR *argv[]) { DWORD m_dwID; COPYDATASTRUCT SendText; char name[100] = "hello"; SendText.dwData = 3; SendText.lpData = name; SendText.cbData = strlen(name) + 1; HANDLE m_hThread = CreateThread(NULL, 0, Thread, 0, 0, &m_dwID); Sleep(1000);//这里不延迟,就收不到消息 PostThreadMessage(m_dwID, WM_USER_MSG, 0, (LPARAM)&SendText); Sleep(1000);//这里不延迟,就收不到消息 getchar(); return 0; } |
文章评论
1799人参与,0条评论