MFC SendMessage 两个参数只能收到一个

发送代码

        CString cstr1;
        cstr1.Format(_T("%d"), i);//调试有值 cstr1="123"
        CString cstr2 = _T("Hello String.");        
        pWnd->SendMessage(WM_TESTMESSAGE, 1, ((WPARAM)(LPCTSTR)cstr1, (LPARAM)(LPCTSTR)cstr2));

接收代码

LRESULT CTEST2020Dlg::OnReciveMessage(WPARAM wParam, LPARAM lParam)
{
    CString cstr1 = (LPCTSTR)wParam;
    CString cstr2 = (LPCTSTR)lParam;
    TRACE(_T("wParam is: - %s\n"), cstr1);//输出wParam is: - 
    TRACE(_T("lParam is: - %s\n"), cstr2);//输出正常lParam is: Hello String.
    return 1;
}

调试发现,在send时候,两个值正常,只是这一个数字的数据没过来,wParam地址值一直为1,而Lparam这个地址值一直在变20534812354,也就是说这个WPARAM就没发过去,类型错还是调用错了?

franzhong
franzhong 回复Angel OvO: 回答问题,评论的结不了贴 >.<~!
大约 2 个月之前 回复
qq_28024621
Angel OvO 1
大约 2 个月之前 回复
franzhong
franzhong 解决了哦!~SendMessage里的第二个参数,我以为是ID标识符,故此用了1做为参数,其实是错位了,第一个宏就是标识,把1删除,两个参数都能收到了。。。来人接帖~
大约 2 个月之前 回复

1个回答

WM_TESTMESSAGE
你自己定义的消息?
是否跨进程?跨进程用 wm_copydata

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复franzhong: 哦
大约 2 个月之前 回复
franzhong
franzhong 谢谢,不好意思,低级错误,参数错位了多了个1,在线程中,WM_TESTMESSAGE只是自定义的一个宏
大约 2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐