博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PostThreadMessage
阅读量:6476 次
发布时间:2019-06-23

本文共 1784 字,大约阅读时间需要 5 分钟。

BOOL WINAPI PostThreadMessage(_In_ DWORD idThread,_In_ UINT Msg,_In_ WPARAM wParam,_In_ LPARAM lParam);idThread -      [in] Type: DWORD The identifier of the thread to which the message is to be posted.Msg     -       [in] Type: UINT The type of message to be posted.wParam -        [in] Type: WPARAM Additional message-specific information.lParam -        [in] Type: LPARAM Additional message-specific information.

也就是说为了使用这个API我们只要提供接受线程的线程ID以及相应的参数就行了,如下是代码实现,首先创建worker thread 并且在worker thread中创建消息循环,这样当我们在主线程中PostThreadMessage的时候worker thread就可以对进来的消息进行处理了,我们可以给worker thread发送TALK_MESSAGE,WM_QUIT message, 一旦worker thread收到WM_QUIT message, worker thread将报告给主线程自己要退出了,然后结束自己的生命周期。

 

DWORD ThreadProc(LPVOID lParam){        MSG msg;        while(GetMessage(&msg,0,0,0))        {                if(msg.message == TALK_MESSAGE)                {                        MessageBox(NULL,L"Hi",L"Worker Thread",MB_OK);                }                DispatchMessage(&msg);        }        MessageBox(NULL,L"Thread will close by pressing OK",L"From Worker Thread",MB_OK);        AfxGetApp()->m_pMainWnd->PostMessageW(TALK_MESSAGE+1,0,0);        return 0;}void CPostThreadMSGDlg::OnBnClickedOk(){        CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc,0,0,&m_dwThread);        ::MessageBox(NULL,L"Worker Thread Created!",L"From main Thread",MB_OK);        OnOK();}void CPostThreadMSGDlg::OnBnClickedButtonHi(){        PostThreadMessage(m_dwThread,TALK_MESSAGE,0,0);}void CPostThreadMSGDlg::OnBnClickedButtonCllose(){        PostThreadMessage(m_dwThread,WM_QUIT,0,0);}LONG CPostThreadMSGDlg::OnWorkerThreadQuitFunction(WPARAM wParam, LPARAM lParam){              ::MessageBox(NULL,L"Main thread have known Worker Thread died!",L"From main Thread",MB_OK);        return 0;}
View Code

 

转载地址:http://sjmko.baihongyu.com/

你可能感兴趣的文章
Visual Studio 原生开发的10个调试技巧(二)
查看>>
Windows内核再次出现0Day漏洞 影响win2000到win10所有版本 反病毒软件恐成瞎子
查看>>
H3C品牌刀片系统强势首发
查看>>
激励着我前进
查看>>
我的友情链接
查看>>
npm打包指定本地nexus仓库
查看>>
IP地址简介
查看>>
LDAP服务原理详解
查看>>
【CSS系列】图像映射
查看>>
接口测试用例设计
查看>>
面试系列之-----Java基础面试题
查看>>
陶哲轩实分析 习题11.4.2
查看>>
window下,ubuntu18安装+android环境配置
查看>>
sql添加数据后返回受影响行数据
查看>>
ViewBag的简单使用
查看>>
关于java面试
查看>>
冬季净化室内空气宜采取哪些措施
查看>>
pthread_cond_wait()函数的理解(摘录)
查看>>
Cesium学习笔记(四)Camera ----http://blog.csdn.net/hobhunter/article/details/74909641
查看>>
solr学习三(测试类,含普通与ExtractingRequestHandler测试)
查看>>