码迷,mamicode.com
首页 > 编程语言 > 详细

多线程实现消息通信

时间:2016-12-05 16:51:12      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:span   ntp   something   stdio.h   消息   子线程   char   post   winapi   

多线程实现消息通信

在测试学习线程创建及通信过程中,测试多种方式,感觉此种较为简单易懂实用

#include <stdio.h>
#include <windows.h>

struct info
{
    HWND hWnd;
    DWORD dwThreadId;
    char* thing;
};

DWORD  WINAPI ThreadFun(LPVOID lpParam);// Main Thread
DWORD  WINAPI Thread1(LPVOID lpParam);    // Sub Thread

int main()
{
    info Info;
    char th[] = "somthing";
    Info.hWnd = GetActiveWindow();//GetSafeHwnd(); // get current HWND
    Info.thing = th;
    DWORD dwThreadID;
    HANDLE hThread = CreateThread(NULL,0, ThreadFun,&Info, NULL,&dwThreadID);
    Info.dwThreadId = dwThreadID;
    WaitForSingleObject(hThread, INFINITE);
    CloseHandle(hThread);
    HANDLE hCurrentProc = GetCurrentProcess();
    printf("%08X %08X\n", hThread, hCurrentProc);
    
    return 0;
}

DWORD  WINAPI ThreadFun(LPVOID lpParam)
{
    info* Info = (info*)lpParam;//传递的消息结构体
    printf("Thread Start!!!!!\n");
    
    printf("ThreadID %d\n", Info->dwThreadId);//
    MSG msg;
    
    info mInfo;
    mInfo.dwThreadId = GetCurrentThreadId();
    
    HANDLE hThread1 = CreateThread(NULL,0, Thread1, &mInfo, NULL, NULL);
    printf("SomeThing %s\n", Info->thing);

//主线程实现消息检测循环,当接收退出信息退出循环
while(1) { PeekMessage(&msg, NULL, 0, 0, PM_REMOVE); if(msg.message == WM_QUIT) { printf("\nGet message(Quit) from Thread1\n\n"); CloseHandle(hThread1); break; } } printf("Thread Over!\n"); return 0; } //子线程 DWORD WINAPI Thread1(LPVOID lpParam) { info* Info = (info*)lpParam; printf("\n\tThread1 Start!!!!!\n"); printf("\tThis ThreadID(%d) is MainThreadID!!!!!\n", Info->dwThreadId); printf("\tThread1ID %d\n", GetCurrentThreadId()); int ret = PostThreadMessage(Info->dwThreadId, WM_QUIT, NULL, NULL); if(ret == ERROR_INVALID_THREAD_ID) printf("\tpostthreadmessage Fail!!!!!\n"); else printf("\tret: 0x%08x\n", ret); return 0; }

 

多线程实现消息通信

标签:span   ntp   something   stdio.h   消息   子线程   char   post   winapi   

原文地址:http://www.cnblogs.com/dedeblog/p/6134395.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!