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;
9915

被折叠的 条评论
为什么被折叠?



