【问题标题】:Unable to get data from list control无法从列表控件获取数据
【发布时间】:2014-10-08 06:01:29
【问题描述】:

我正在使用 MFC 中的列表控件。我编写了代码来将元素插入到对话框中的列表控件中,如下所示:

int nIndex = 0;

for (int count = 0; count < arrResults.GetSize(); count++)
{
    nIndex = m_cListCtrl.InsertItem(count, _T(arrResults[count].ElementAt(0)));
    m_cListCtrl.SetItemText(nIndex, 1, _T(arrResults[count].ElementAt(1)));
}

但是,当我尝试从m_cListCtrl 检索数据时,它总是返回空白。此外,GetItemCount() 方法还返回 0 项。任何建议表示赞赏。

以下是我写的数据检索代码:

arrResults.SetSize(1);
arrResults[0].Add("Header1");
arrResults[0].Add("Header2");

TestDialog testDlg;
testDlg.FillControlList(arrResults); // This function has above code to add data to control list

EXPECT_EQ("Header1", queryDlg.m_cListCtrl.GetItemText(0, 0));
EXPECT_EQ("Header2", queryDlg.m_cListCtrl.GetItemText(0, 1));

GetItemText 函数返回空白字符串。

【问题讨论】:

  • 我看不出你贴的代码有什么问题,所以问题一定出在你没有贴的代码上。向我们展示更多?
  • 总是检查函数调用的返回值 -- nIndex
  • @RogerRowland - 我已经用代码更新了问题以从控制列表中获取数据
  • @EdwardClements - 是的,我已经定义了列。
  • “GetItemText 函数返回空白字符串” - 您是否通过调试器验证您正在SetItemText 提供有效字符串?我不确定 _T() 宏是否有帮助 - 我之前没有看到,它应该只用于字符串文字。

标签: mfc clistctrl


【解决方案1】:

当您调用 FillControlList() 时,您正在使用 testDlg 对象。但是当您调用 GetItemText() 时,您使用的是 queryDlg 对象。您已在一个对话框中插入项目,并尝试从不同的对象获取数据。请检查一下。

【讨论】:

    猜你喜欢
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多