1

これはかなり単純な質問に思えるかもしれませんが、私は MFC を初めて使用します。

私のタスクは単純です。ツリー コントロールをドラッグ アンド ドロップし、その中にいくつかのデータを入力したいと考えています。以下のリンクのようなオンラインの例に従いました。

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

コードにビルド エラーはありませんが、コードを実行すると、Debug Assertion Failed というエラーが表示されます。

誰でもこの問題を解決するのを手伝ったり、ツリー コントロールにデータを入力するための基本的なチュートリアルやオンライン ヘルプを提供したりできますか。

4

1 に答える 1

2

上記の例では、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);
于 2015-09-03T16:49:20.853 に答える