C++ 如何将LPRAM转换为CString

C++ 如何将LPRAM转换为CString,c++,visual-studio,worker-thread,C++,Visual Studio,Worker Thread,在我的工作线程中,我创建了一条发送到主对话框的消息。一旦主对话框接收到消息并进入OnStatusUpdate()函数,我想从LPARAM LPARAM中提取消息并将其显示在对话框编辑框中。我得到的不是我的信息,而是垃圾 UINT CGDC74xDlg::LeakTstThread( LPVOID pParam ) { HWND *phObjectHandle = static_cast<HWND *>(pParam); CString strTmp = "It wor

在我的工作线程中,我创建了一条发送到主对话框的消息。一旦主对话框接收到消息并进入OnStatusUpdate()函数,我想从LPARAM LPARAM中提取消息并将其显示在对话框编辑框中。我得到的不是我的信息,而是垃圾

UINT CGDC74xDlg::LeakTstThread( LPVOID pParam )
{
    HWND *phObjectHandle = static_cast<HWND *>(pParam);
    CString strTmp = "It works!";
    CString * message = new CString(strTmp);
    ::PostMessage(*phObjectHandle, WM_LEAK_TEST_THREAD, 0, (LPARAM)message);
    ::Sleep(5000);
    delete phObjectHandle;
    return( 0 );
}

LRESULT CGDC74xDlg::OnStatusUpdate(WPARAM wParam, LPARAM lParam)
{
    LPTSTR lpMessage = (LPTSTR)lParam;
    CString s = lpMessage;
    delete lpMessage;
    GetDlgItem(IDC_EDIT_LEAK_TEST_RESULTS)->SetWindowText(s);
    return 0;
}
UINT CGDC74xDlg::LeakTstThread(LPVOID pParam) { HWND*phObjectHandle=静态转换(pParam); CString strTmp=“它有效!”; CString*消息=新的CString(strTmp); ::PostMessage(*phObjectHandle,WM_LEAK_TEST_THREAD,0,(LPARAM)消息); ::睡眠(5000); 删除对象句柄; 返回(0); } LRESULT CGDC74xDlg::OnStatusUpdate(WPARAM WPARAM,LPARAM LPARAM) { LPTSTR lpMessage=(LPTSTR)lpram; CString s=lpMessage; 删除消息; GetDlgItem(IDC编辑泄漏测试结果)->SetWindowText; 返回0; }
在您的情况下,
LPARAM
不包含
CString
。它包含指向
CString
的指针

所以你可以这样得到它:

CString *message = (CString*)lParam;

更正:CString消息=(CString)lParam;我的意思是放lParam而不是pParam。谢谢你的帮助。