关于WPARAM的乱码有关问题

关于WPARAM的乱码问题
发送消息代码如下:
CString   lstr;
CWnd::GetDlgItemTextA(IDC_EDIT1,lstr);
LPCSTR   lps;
lps   =   _T(lstr);
lps   =   (LPCSTR)lstr;
//lps   =   "aaa ";
::PostMessage(_hNotifyWnd,ON_COM_SENDCOMMOND,(WPARAM)lps,0);

接收消息代码如下:
LPCSTR   t   =   (LPCSTR)wParam;
CString   lstr;
lstr   =   t;

这样从文本框IDC_EDIT1得到的lstr就会被接收成乱码,发送之前得到的lps都没出现乱码的,使用::PostMessage(_hNotifyWnd,ON_COM_SENDCOMMOND,(WPARAM)&lps,0);时依旧是乱码。

但是去掉注释那句   lps   =   "aaa ";后,却能够正确接收到   "aaa "这个字符串。

郁闷,求解。

------解决方案--------------------
lps是一个指针;
lps = "aaa ";---〉没有分配内存空间。

------解决方案--------------------
CString lstr;
你如果在函数内声明并初始化该变量,离开函数,该变量就会被释放,其指针也会指向被释放的地址。

postmessage不会堵塞,投递字符串地址之后就返回了,此时函数结束,指针指向的地址被释放。此时响应此消息的处理是用该指针属于无效调用

如果是sendmessage就不会有这样的问题,因为必须等到该消息被处理了才会返回

至于lps= "aaa ";为什么就可以。楼上的已经说得很清楚了