«
DuiLib创建表格时显示数据时异常退出

时间:2023-9-6    作者:范文泉    分类: 编程


使用如下代码创建表格行时

CControlUI* pControlUI = CDialogBuilder().Create("test_report\\test_report_table.xml");
if (pControlUI == NULL)
{
::MessageBox(NULL, "创建表格项失败", "错误", MB_ICONERROR);
return;
}

软件会在查找多条数据时,偶尔会直接出现异常访问,后通过百度查询找到如下次资料。

繁调用CDialogBuilder的create接口创建同一个配置文件,会报异常;
正常的处理方式如下:
if (!m_dlgBuilder.GetMarkup()->IsValid())
{
pElement = static_cast<CListContainerElementUI>(m_dlgBuilder.Create(_T("FriendListItem.xml"), \
(UINT)0, NULL, &m_PaintManager));
}
else
{
pElement = static_cast<CListContainerElementUI
>(m_dlgBuilder.Create(NULL, &m_PaintManager));
}

因此通过这个代码,我把代码如下改变

CDialogBuilder m_dlgBuilderTestReportTableRow;
CControlUI* get_test_report_table_row();

CControlUI* ui_test_report::get_test_report_table_row()
{
    CControlUI* pElement = NULL;
    if (!m_dlgBuilderTestReportTableRow.GetMarkup()->IsValid())
    {
        pElement = static_cast<CListContainerElementUI*>(m_dlgBuilderTestReportTableRow.Create("test_report\\test_report_table.xml", (UINT)0, NULL, &m_PaintManager));
    }
    else
    {
        pElement = static_cast<CListContainerElementUI*>(m_dlgBuilderTestReportTableRow.Create(NULL, &m_PaintManager));
    }

    return pElement;
}

CControlUI* pControlUI = get_test_report_table_row();
if (pControlUI == NULL)
{
::MessageBox(NULL, "创建表格项失败", "错误", MB_ICONERROR);
return;
}
m_pListSearchUI->Add(pControlUI);

最终问题解决。

标签: DuiLib 表格 异常