使用duilib庫寫的界面,listUI加載一定數量的子控制元件,洗掉全部再添加這樣的操作多次后,專案出現崩潰。
不知道原因是啥啊?難道是list控制元件RemoveAll沒洗掉干凈導致的添加失敗?
uj5u.com熱心網友回復:
崩潰的時候在彈出的對話框按相應按鈕進入除錯,按Alt+7鍵查看Call Stack即“呼叫堆疊”里面從上到下列出的對應從里層到外層的函式呼叫歷史。雙擊某一行可將游標定位到此次呼叫的源代碼或匯編指令處,看不懂時雙擊下一行,直到能看懂為止。uj5u.com熱心網友回復:
這個有可能是第三方庫的bug,最好是自己避免uj5u.com熱心網友回復:
如前面所說,要跟蹤一下,是否有記憶體泄露,排除之后,再確定是否是lib的bug。uj5u.com熱心網友回復:
duilib,list控制元件bug,就是在于之前的wm_mousemove訊息有沖突,需要清空m_PaintManager加載的相關資訊,如:void CDuiMainWnd::ClearPaintManagerLog()
{
int count = m_pList->GetCount();
if (count <= 0)
{
return;
}
for (int i = 0; i < count;++i)
{
m_PaintManager.RemoveMouseLeaveNeeded(m_pList->GetItemAt(i));
}
}
uj5u.com熱心網友回復:
m_pList->SetDelayedDestroy(false);m_pList->RemoveAll();
這是最簡單的,之前沒看懂原始碼
uj5u.com熱心網友回復:
使用了這個m_pList->SetDelayedDestroy(false);后,會出現其他例外
uj5u.com熱心網友回復:
bool ViewForm::RemoveClass1(ui::EventArgs* msg){
std::wstring name = msg->pSender->GetName();
this->btn_stop1_;
this->phone1_;
}
為什么會出錯呀??
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/35265.html
標籤:基礎類
