2024年C C++最全线程间通讯:PostThreadMessage,2024年最新C C++Apk安装过程

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

3、实际应用中,会用 BEGIN_MESSAGE_MAP 宏定义消息映射表(MFC)


PostThreadMessage是一个Windows API函数,用于向指定线程的消息队列中发送一个消息。

1、PostThreadMessage的函数原型
BOOL PostThreadMessage(
  DWORD  idThread,
  UINT   Msg,
  WPARAM wParam,
  LPARAM lParam
);

参数说明:

  • idThread:要发送消息的目标线程的ID。
  • Msg:要发送的消息类型。
  • wParam:消息的附加参数。
  • lParam:消息的附加参数。

PostThreadMessage函数将消息发送到指定线程的消息队列中,然后立即返回。线程可以通过调用GetMessage或PeekMessage函数来获取并处理该消息。该函数通常用于线程间的通信,可以用来传递自定义消息或系统消息,从而实现线程之间的协作和信息交换。

2、PostThreadMessage一个简单的示例

演示如何使用PostThreadMessage向另一个线程发送消息:

#include <windows.h>
#include <iostream>

DWORD WINAPI ThreadProc(LPVOID lpParam)
{
    MSG msg;
    HWND hWnd = (HWND)lpParam;

    // 等待消息循环
    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (msg.message == WM_USER)
        {
            std::cout << "Received custom message." << std::endl;
        }
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return 0;
}

int main()
{
    // 创建一个新线程
    DWORD threadId;
    HANDLE hThread = CreateThread(NULL, 0, ThreadProc, NULL, 0, &threadId);
    if (hThread == NULL)
    {
        std::cout << "Failed to create thread." << std::endl;
        return 1;
    }

    // 等待一段时间
    Sleep(1000);

    // 向线程发送消息
    if (!PostThreadMessage(threadId, WM_USER, 0, 0))
    {
        std::cout << "Failed to post thread message." << std::endl;
        return 1;
    }

    // 等待线程结束
    WaitForSingleObject(hThread, INFINITE);

    // 关闭线程句柄
    CloseHandle(hThread);

    return 0;
}

在上述示例中,我们创建了一个新的线程,并通过CreateThread函数启动。然后,我们使用PostThreadMessage函数向该线程发送一个自定义消息(WM_USER)。在线程的消息循环中,我们通过GetMessage函数获取消息并进行处理。在本例中,我们判断接收到的消息是否为自定义消息WM_USER,并进行相应的处理。然后,我们等待线程结束并关闭线程句柄。

请注意,上述示例中的线程函数ThreadProc是一个简单的消息循环,用于处理线程收到的消息。在实际应用中,您可能需要根据需要自定义消息处理过程。

3、实际应用中,会用 BEGIN_MESSAGE_MAP 宏定义消息映射表(MFC)

将自定义消息和处理函数一一对应起来

(1)先了解下BEGIN_MESSAGE_MAP

BEGIN_MESSAGE_MAP 是一个宏定义,用于在 MFC(Microsoft Foundation Classes)中定义消息映射表。MFC 是微软提供的一套用于开发 Windows 应用程序的类库,它封装了许多常用的 Windows API 函数和功能,简化了 Windows 应用程序的开发过程。

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

**

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 20
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值