用消息的方式实现线程通信

1.定义一个消息(消息标志)
  #define WM_USERMESSAGE1 WM_USER + 0x100

2.由于按了按钮,执行了响应函数
  在函数中,用PostThreadMessage,把我这个函数中的一些参数(p),借由消息,发给线程(线程ID)
   void CXc009Dlg::OnButton1() 
   {
char *p = new char[MAX_PATH];
strcpy(p, "这是第一个按钮参入的字符串消息!");
PostThreadMessage(m_dwThreadId, WM_USERMESSAGE1, NULL, (LPARAM)p); 
   }

3.把线程函数定义为DWORD WINAPI类型

4.执行线程函数不断监视消息,
   根据消息(标签),和与消息一并传来的参数(lParam),完成函数执行
DWORD WINAPI TestMessageThread(LPVOID pParam)
{
MSG msg;     //MSG消息类型
CString strText;
        while(GetMessage(&msg, NULL, 0U, 0U))
{
switch(msg.message)
{
case WM_USERMESSAGE1:
{
char *p = (char*)msg.lParam;       //需要转换一下
if(p != NULL)
{
strText.Format("收到Button1的消息为:\"%s\"", p);
delete [] p;
AfxMessageBox(strText);
}
}
   break;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值