我从DLL上下文中调用此函数,
void CmodguiApp::ReportStatusBarImageCount() {
CMainFrame *frm = nullptr;
auto app = AfxGetApp();
if (nullptr != app) {
frm = (CMainFrame*)app->GetMainWnd();
}
assert(frm);
frm->setStatusBarImageCount(L"Text");
}
一切都好。 frm
不是nullptr。
然后,在下面描述的setStatusBarImageCount
内,软件会导致断言错误
可能出现什么问题?
void CMainFrame::setStatusBarImageCount(const wchar_t *str) {
m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_STATUSBAR_IMAGECOUNT), str);
}
此应用已动态链接MFC。请允许我强调,setStatusBarImageCount
函数是从DLL中调用的,而不是从主MFC应用程序调用的。
答案 0 :(得分:1)
这是因为我从自定义线程(https://msdn.microsoft.com/en-us/library/975t8ks0.aspx)
调用MFC API这应该使用自定义消息实现来完成,这是线程安全的(https://msdn.microsoft.com/en-us/library/k35k2bfs.aspx)