में वर्कर थ्रेड से मुख्य विंडो में पोस्टमेसेज मेरे पास एक एमएफसी एप्लीकेशन है, जिसमें एक वर्कर थ्रेड है, जो मैं करना चाहता हूं वह है कि कार्यकर्ता थ्रेड से मुख्य जीयूआई थ्रेड में संदेश पोस्ट करने के लिए जीयूआई पर कुछ स्टेटस संदेश अपडेट करें। क्या मैं अब तक क्या किया है Registered a new window message
एमएफसी
//custom messages
static UINT FTP_APP_STATUS_UPDATE = ::RegisterWindowMessageA("FTP_APP_STATUS_UPDATE");
संवाद वर्ग के संदेश नक्शा
ON_MESSAGE(FTP_APP_STATUS_UPDATE, &CMFC_TestApplicationDlg::OnStatusUpdate)
OnStatusUpdate
के प्रोटोटाइप
afx_msg LRESULT OnStatusUpdate(WPARAM, LPARAM);
है को यह संदेश है जोड़ा और परिभाषा
हैLRESULT CMFC_TestApplicationDlg::OnStatusUpdate(WPARAM wParam, LPARAM lParam)
{
//This function is not called at all.
return 0;
}
और कार्यकर्ता धागा बुला कोड
void CMFC_TestApplicationDlg::OnBnClickedMfcbutton1()
{
ThreadParams params;
params.m_hWnd = m_hWnd;
params.FTPHost = "test_host";
params.FTPUsername = "test";
params.FTPPassword = "test";
AfxBeginThread(FTPConnectThread,¶ms);
}
है और कार्यकर्ता धागा कोड
//child thread function
UINT FTPConnectThread(LPVOID pParam)
{
if(pParam == NULL)
{
return 0;
}
ThreadParams *params = (ThreadParams*)pParam;
OutputDebugString(params->FTPHost);
Sleep(4000); //simulating a network call
CString * message = new CString("Conencted");
PostMessage(params->m_hWnd,FTP_APP_STATUS_UPDATE,0,(LPARAM)message);
//PostMessage do nothing? what I am doing wrong?
return 1;
}
जब PostMessage समारोह OnStatusUpdate
बुलाया जाना चाहिए कहा जाता है समस्या यह है है, लेकिन यह नहीं कहा जा रहा है, कोई अपवाद या दावा फेंक दिया गया है, मैं क्या गलत कर रहा हूँ? मैंने ON_REGISTERED_MESSAGE
और ON_MESSAGE
की कोशिश की है लेकिन कोई सफलता नहीं, कोई मदद?
धन्यवाद आपकी मदद के लिए एक बहुत, एक मामूली परिवर्तन के साथ अपने कोड काम किया, यह काम किया जब मैं 'ON_REGISTERED_MESSAGE' साथ यह प्रयोग किया जाता –