1
votes

Ok this might seem a pretty simple question but I'm new to working with MFC.

My task is simple, I dragged dropped a Tree Control and now I want to populate some data in it.I've followed some online examples like in the link below

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

there's no build errors in the code but when I run the code I get the error Debug Assertion Failed.

Can anyone help me solving this issue or Provide some basic tutorial or online help of populating data into a Tree Control.

1
That Debug Assertion will point you to a filename, a line number, and usually has an expression shown in it. What are they?Roger Lipscombe
Program: C:\Windows\SYSTEM32\mfc120ud.dll File: f:\dd\vctools\vc7libs\ship\atlmfc\include\afxcmn.inl Line:271Omar Iqbal

1 Answers

2
votes

In the example referenced above, TreeView is created manually using p_TreeView->CreateWindow(...)

However this is not needed when using drag and drop in resource editor. Dialog class only needs a reference to the tree control which is already created.

Declare in CMyDialog class:

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

Add this to *.cpp file:

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

Now you can use m_TreeView, for example:

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);