VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 90|回复: 2

问一个PostMessage的问题。

[复制链接]
34_avatar_middle
最佳答案
0 
在线会员 发表于 2020-3-20 13:44:48 | 显示全部楼层 |阅读模式
请教大家一个问题,我写了一函数,全局的,目的是为了给主窗口的一个listbox控件发状态信息。
这个函数有很多地方调用,有线程函数,有回调函数。
函数如下:
void DisplayState(HWND hWnd, CString Msg)
{
        CTime CurTime = CTime::GetCurrentTime();;
        CString strTime = "";
        strTime.Format("%02d-%02d %02d:%02d:%02d: ", CurTime.GetMonth(), CurTime.GetDay(), CurTime.GetHour(), CurTime.GetMinute(), CurTime.GetSecond());
        Msg = strTime + Msg;
        SendMessage(hWnd, WM_DISPLAY_COMDATA, 0, (LPARAM)(LPCTSTR)Msg);
}

我用SendMessage没有问题,用postmessage就出现乱码。现在是我想用postmessage
我知道我的问题是因为sendmessage是同步的,postmessage是异步的,传入的msg参数是局部变量导致的。
但是我不知道怎么修改啊?我记得scy老师讲多线程时留了这么一个作业,但是我不会做,请高手指点指点,非常感谢。




上一篇:GetQueuedCompletionStatus 是怎么排队的?
下一篇:关于服务管理器的一个问题
77_avatar_middle
最佳答案
21 
online_vip 发表于 2020-3-20 14:58:00 | 显示全部楼层
在 WM_DISPLAY_COMDATA 消息的响应函数中用完了别忘记释放 pMsg!
  1. void DisplayState(HWND hWnd, CString Msg)
  2. {
  3.         CTime CurTime = CTime::GetCurrentTime();;
  4.         CString strTime = "";
  5.         strTime.Format("%02d-%02d %02d:%02d:%02d: ", CurTime.GetMonth(), CurTime.GetDay(), CurTime.GetHour(), CurTime.GetMinute(), CurTime.GetSecond());
  6.         Msg = strTime + Msg;

  7.         UINT nMsgLen = Msg.GetLength();
  8.         TCHAR* pMsg = new TCHAR[nMsgLen + 1];
  9.         ZeroMemory(pMsg, (nMsgLen + 1) * sizeof(TCHAR));

  10.         _tcscpy(pMsg, (LPCTSTR)Msg);
  11.         SendMessage(hWnd, WM_DISPLAY_COMDATA, 0, (LPARAM)pMsg);
  12. }
复制代码


34_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-3-20 21:07:18 | 显示全部楼层
LRESULT COffsiteEnforcementDlg::OnDisplayInfo(WPARAM wParam, LPARAM lParam)
{
        TCHAR* pMsg = (TCHAR*)lParam;
        CString strState(pMsg);
        m_StateList.InsertString(0, strState);
        delete[] pMsg;
        return TRUE;
}
这个是WM_DISPLAY_COMDATA的函数,也不知道对不对?测试似乎没有问题了。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-3-30 18:15

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表