lex*_*_9x 0 c++ mfc multithreading visual-studio-2010
我使用Visual Studio 2010,使用MFC 2008/2010.我有THREAD和UPDATEDATA的问题(FALSE)这是init函数
BOOL CBkav_btap2_appDlg::OnInitDialog(){
....
AfxBeginThread (MyThreadProc,(LPVOID)GetSafeHwnd());
return TRUE; // return TRUE unless you set the focus to a control
}
Run Code Online (Sandbox Code Playgroud)
这是我的线索
UINT __cdecl MyThreadProc( LPVOID pParam )
{
DWORD totalphys;
DWORD availablephys;
DWORD memoload;
CBT2Class* pObject = (CBT2Class*)pParam;
pObject->GetRAMandCPUInfo(totalphys,availablephys,memoload );
CBkav_btap2_appDlg dlgObject;
dlgObject.ec_totalphys = totalphys;
dlgObject.UpdateData(FALSE);<--- Can not update data
return 0;
}
Run Code Online (Sandbox Code Playgroud)
CBT2Class是我之前创建的dll文件中的类.ec_totalphys只是一个edit_control.当我运行时,它返回"Debud Assertion failed".我不知道为什么.请帮我.Thankss.p/s:我想我需要使用SendMessage更新Dialog的数据,但我搜索每个地方但仍无法工作.
您正在传递HWND作为线程参数.它不是指针,你不应该把它投射到任何东西.您可以使用HWND将自定义消息发布到对话框.此自定义消息可以包含wParam和lParam中的数据.对话框中的消息处理程序在主线程中运行,可以执行UpdateData调用.请参阅此处的示例,以便向对话框发布自定义消息:http: //vcfaq.mvps.org/mfc/12.htm