gpt4 book ai didi

c++ - MFC - UpdateData(False) + 线程 + 调试断言失败

转载 作者:太空宇宙 更新时间:2023-11-04 15:18:55 28 4
gpt4 key购买 nike

我使用 Visual Studio 2010,使用 MFC 2008/2010。我对 THREAD 和 UPDATEDATA(FALSE) 有疑问这是初始化函数

BOOL CBkav_btap2_appDlg::OnInitDialog(){
....
AfxBeginThread (MyThreadProc,(LPVOID)GetSafeHwnd());
return TRUE; // return TRUE unless you set the focus to a control

}

这是我的话题

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

CBT2Class 是我之前创建的dll 文件中的类。ec_totalphys 只是一个 edit_control。当我运行时,它返回“Debud Assertion failed”。我不知道为什么。请帮我。谢谢。p/s: 我想我需要使用 SendMessage 来更新 Dialog 的数据,但我到处搜索,但仍然无法工作。

最佳答案

您正在传递一个 HWND 作为线程参数。它不是一个指针,你不应该将它转换为任何东西。您可以使用 HWND 将自定义消息发布到对话框。此自定义消息可以包含 wParam 和 lParam 中的数据。对话框中的消息处理程序在主线程中运行,可以执行 UpdateData 调用。请参阅此处向对话框发布自定义消息的示例:http://vcfaq.mvps.org/mfc/12.htm

关于c++ - MFC - UpdateData(False) + 线程 + 调试断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23951827/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com