C++ 修改WXTEXTCRL值时,wxWidgets调试断言失败,xtree不可延迟

C++ 修改WXTEXTCRL值时,wxWidgets调试断言失败,xtree不可延迟,c++,wxwidgets,C++,Wxwidgets,当我输入wxDialog并将焦点放在一个WXTEXTCRL上时,没有什么不好的事情发生,但只要我修改该文本中的某些内容,例如删除一个字符,应用程序就会崩溃,并显示以下消息: 调试断言失败:映射/集迭代器不可取消引用 我发现的最后一个崩溃前调用的方法是: bool wxWindowMSW::HandleKillFocus(WXHWND hwnd) { #if wxUSE_CARET // Deal with caret if ( m_caret ) { m_care

当我输入wxDialog并将焦点放在一个WXTEXTCRL上时,没有什么不好的事情发生,但只要我修改该文本中的某些内容,例如删除一个字符,应用程序就会崩溃,并显示以下消息:

调试断言失败:映射/集迭代器不可取消引用

我发现的最后一个崩溃前调用的方法是:

bool wxWindowMSW::HandleKillFocus(WXHWND hwnd)
{
#if wxUSE_CARET
// Deal with caret
    if ( m_caret )
    {
        m_caret->OnKillFocus();
    }
#endif // wxUSE_CARET

#if wxUSE_TEXTCTRL
    // If it's a wxTextCtrl don't send the event as it will be done
    // after the control gets to process it.
    wxTextCtrl *ctrl = wxDynamicCastThis(wxTextCtrl);
    if ( ctrl )
    {
        return false;
    }
#endif

    // Don't send the event when in the process of being deleted.  This can
    // only cause problems if the event handler tries to access the object.
    if ( m_isBeingDeleted )
    {
        return false;
    }

    wxFocusEvent event(wxEVT_KILL_FOCUS, m_windowId);
    event.SetEventObject(this);

    // wxFindWinFromHandle() may return NULL, it is ok
    event.SetWindow(wxFindWinFromHandle(hwnd));

    return GetEventHandler()->ProcessEvent(event);
}
在运行应用程序时,此方法被多次调用;ctrl始终具有0x00000000的值,因此在第一个IF子句中不返回false。
在对话框内部并修改文本时,ctrl的值更改为实值0x031194b0;然后它进入IF子句,返回false,然后崩溃。

问题来自另一个代码修改,我仍然不知道它是如何产生这种效果的。wxWidgets库的内部行为可能是什么