【问题标题】:MFC C++ Populate data in Tree ControlMFC C++ 在树控件中填充数据
【发布时间】:2015-09-03 15:59:06
【问题描述】:

好的,这似乎是一个非常简单的问题,但我是使用 MFC 的新手。

我的任务很简单,我拖放了一个树控件,现在我想在其中填充一些数据。我按照下面链接中的一些在线示例进行操作

http://www.functionx.com/visualc/controls/treectrl.htm

代码中没有构建错误,但是当我运行代码时,我收到错误 Debug Assertion Failed。

谁能帮我解决这个问题或提供一些将数据填充到树控件中的基本教程或在线帮助。

【问题讨论】:

  • 调试断言将指向一个文件名、一个行号,并且通常会显示一个表达式。它们是什么?
  • 程序:C:\Windows\SYSTEM32\mfc120ud.dll 文件:f:\dd\vctools\vc7libs\ship\atlmfc\include\afxcmn.inl 行:271

标签: c++ mfc treecontrol


【解决方案1】:

在上面引用的示例中,TreeView 是使用p_TreeView->CreateWindow(...) 手动创建的

但是在资源编辑器中使用拖放时不需要这样做。对话框类只需要引用已经创建的树控件。

CMyDialog类中声明:

class CMyDialog : public CDialogEx
{
    ...
    CTreeCtrl m_TreeView;
    void DoDataExchange(CDataExchange* pDX);
};

将此添加到 *.cpp 文件中:

void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_TREE1, m_TreeView);
}

现在可以使用m_TreeView,例如:

m_TreeView.InsertItem("Test");
HTREEITEM level_1 = m_TreeView.InsertItem("level 1");
m_TreeView.InsertItem("level 2 a", level_1);
m_TreeView.InsertItem("level 2 b", level_1);
HTREEITEM level_2_c = m_TreeView.InsertItem("level 2 c", level_1);
m_TreeView.InsertItem("level 3 c", level_2_c);

m_TreeView.Expand(level_1, TVM_EXPAND);

【讨论】:

  • 得到以下构建错误 错误 1 ​​错误 LNK2019: 引用了无法解析的外部符号“public: __thiscall CMFCApplicationDlg::CMFCApplicationDlg(class CWnd *)”(??0CMFCApplicationDlg@@QAE@PAVCWnd@@@Z)在函数“公共:虚拟 int __thiscall CMFCApplicationApp::InitInstance(void)”(?InitInstance@CMFCApplicationApp@@UAEHXZ) C:\Users\omar.iqbal\Desktop\Shared\Adobe CS6\Adobe Illustrator CS6 SDK\samplecode\MFCApplication\ MFCApplication.obj MFCApplication
  • 好的,我创建了一个新项目并按照您的步骤进行操作,并且成功了。谢谢 :) 你能告诉我如何指定父节点和子节点数据
  • 我添加了一些例子,另见msdn.microsoft.com/en-us/library/ettyybhw.aspx
  • 非常感谢 Barmak 的帮助,我想在 InsertItem 中添加一个小东西,在字符串之前您还必须添加“L”,例如: m_TreeView.InsertItem(L"测试");否则它会给出不兼容的类型错误。
  • 你是对的。我将 ANSI 字符串用于非 unicode 版本,但这已经过时了。对于任何最新的项目,它都应该有 L 前缀。
猜你喜欢
  • 2010-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
相关资源
最近更新 更多