如何将 LPARAM lParam 转换为 CString

How to convert a LPARAM lParam to a CString

本文关键字:转换 CString lParam LPARAM      更新时间:2023-10-16

在我的工作线程中,我创建了一个发送到主对话框的消息。 一旦主对话框收到消息并进入我的 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;
}

在您的情况下,LPARAM不包含CString。它包含一个指向CString的指针。

所以你会像这样获得它:

CString *message = (CString*)lParam;