我有一个 MFC 应用程序, 它有工人线条, 我想做的是将工人线条的信息寄到 GUI 主界面线条上, 以更新 GUI 上的一些状态信息。 到目前为止, 我所做的是 < code> 注册了一个新的窗口信息 code>
//custom messages
static UINT FTP_APP_STATUS_UPDATE = ::RegisterWindowMessageA("FTP_APP_STATUS_UPDATE");
将此信件添加到对话框类的信息映射图
ON_MESSAGE(FTP_APP_STATUS_UPDATE, &CMFC_TestApplicationDlg::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;
}
问题是当邮递邮件函数被称为 < code> on Status Update 时, 问题在于该函数应该被调用, 但是没有被调用, 没有例外或断言, 我做错了什么? 我已经尝试了 ON_ REGERED_ MESSAGE
和 ON_ MESSAGE
但是没有成功, 没有帮助吗?