既有适合小白学习的零基础资料,也有适合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 应用程序的开发过程。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新