【发布时间】:2017-07-21 10:35:24
【问题描述】:
我想在我定义全局或独立函数的多线程函数中访问我的对话框 UI(编辑框)。
CSampleDlg* m_dlg=(CSampleDlg*)_param; 这里是_param 是线程函数的参数。当我尝试这个时它在这里崩溃:ASSERT(::IsWindow(m_hWnd));
//这里是mfc示例代码
UINT MessageThread(LPVOID _param)
{
CServerDlg* m_dlg=(CServerDlg*)_param;
char cChar[1024];
CString strmsg=L"";
while (!stopNow && (currValue < maxValue))
{
m_dlg->m_messagebox.GetWindowTextW(strmsg); //m_messagebox :editbox
sprintf(cChar,"%s",CW2A(strmsg));
char *buff=(char*)&cChar;
m_dlg->m_server.Send(buff,sizeof(cChar));
currValue++;
Sleep(50);
}
return TRUE;
}
【问题讨论】:
-
您是否曾经在
Release模式下构建过您的项目?或者您是否处于Debug模式?请告诉我在将您的项目构建为Release后发生了什么。
标签: multithreading sockets visual-c++ mfc