PostMessage CString
场景:用postmessage传递CString信息的有关问题
用postmessage传递CString信息的问题
在程序的一个线程中为了在指定的窗口添加文字内容,采用postmeaasge来传递信息给窗口。
线程通过调用p_WriteLog函数来添加文字信息,现在消息已经可以正在触发,可是
m_ListBox.AddString显示出来的内容是乱码。求解决,谢谢。
有如下的定义
------解决思路----------------------
CString* tmp = (CString*)lParam;
delete (CString*)lParam;
哪能这样呢?你delete了,当然会出问题了
在return 0前delete
用postmessage传递CString信息的问题
在程序的一个线程中为了在指定的窗口添加文字内容,采用postmeaasge来传递信息给窗口。
线程通过调用p_WriteLog函数来添加文字信息,现在消息已经可以正在触发,可是
m_ListBox.AddString显示出来的内容是乱码。求解决,谢谢。
有如下的定义
ON_MESSAGE(WM_USER_WRITE_LOG, &Cnew_oneDlg::p_writeLog)
void p_WriteLog(HWND hWnd,CString text){
CString *stra = new CString(text);
PostMessage(hWnd, WM_USER_WRITE_LOG, 0, (LPARAM)stra);
}
LONG Cnew_oneDlg::p_writeLog(WPARAM wParam, LPARAM lParam){
CString* tmp = (CString*)lParam;
delete (CString*)lParam;
int sel = m_ListBox.GetCurSel();
m_ListBox.SetCurSel(sel + 1);
m_ListBox.AddString(CString(*tmp));
return 0;
}
------解决思路----------------------
CString* tmp = (CString*)lParam;
delete (CString*)lParam;
哪能这样呢?你delete了,当然会出问题了
在return 0前delete