2012-12-14 107 views
0

在我的工作線程中,我創建了一條消息發送給我的主對話框。一旦主對話框收到消息並進入我的OnStatusUpdate()函數,我想從LPARAM lParam中提取消息並將其顯示在對話框編輯框中。我得到的消息並不是垃圾。如何將LPARAM lParam轉換爲CString

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; 
} 

回答

2

在你的情況,LPARAM不包含CString。它包含一個指向CString的指針。

所以,你會得到這樣的:

CString *message = (CString*)lParam; 
+0

更正:CString的*消息=(CString的*)lParam的; –

+0

不。在上面的代碼中,'p​​Param'是一個指針。 –

+0

我打算把lParam不是pParam。謝謝你的幫助。 –