none
TreeView RRS feed

  • Pergunta

  •  

      Olás

    Preciso urgentemente saber como fazer uma TreeView no Visual Studio C++. No ToolBox tem a opção TreeView mas não sei como inserir o nome e comandos dos diretórios e seus respectivos filhos, Alguem saberia por favor me dá uma direção, pois estou completamente perdida

    Desde já

    Obrigadíssima!!!

     

    quarta-feira, 23 de agosto de 2006 14:23

Respostas

  • bom, como nao sei exatamente a qual "treeview" que vc se refere, vou supor que eh a CTreeCtrl (e nao a CTreeView, que no caso envolve o suporte a document/view architecture).

     

    nesse caso, vc vai trabalhar com HTREEITEM. (e a adição de todos os nodes eh feita programaticamente, no caso dos eventos vc pode trabalhar com o mfc classwizard.).

     

    segue alguns exemplos e referencias do proprio msdn.

     

    codigo:

    // Gain a pointer to our tree control

    CTreeCtrl* pCtrl = (CTreeCtrl*) GetDlgItem(IDC_TREE1);

    ASSERT(pCtrl != NULL);

    // Insert a root item using the structure. We must

    // initialize a TVINSERTSTRUCT structure and pass its

    // address to the call.

    TVINSERTSTRUCT tvInsert;

    tvInsert.hParent = NULL;

    tvInsert.hInsertAfter = NULL;

    tvInsert.item.mask = TVIF_TEXT;

    tvInsert.item.pszText = _T("United States");

    HTREEITEM hCountry = pCtrl->InsertItem(&tvInsert);

    // Insert subitems of that root. Pennsylvania is

    // a state in the United States, so its item will be a child

    // of the United States item. We won't set any image or states,

    // so we supply only the TVIF_TEXT mask flag. This

    // override provides nearly complete control over the

    // insertion operation without the tedium of initializing

    // a structure. If you're going to add lots of items

    // to a tree, you might prefer the structure override

    // as it affords you a performance win by allowing you

    // to initialize some fields of the structure only once,

    // outside of your insertion loop.

    HTREEITEM hPA = pCtrl->InsertItem(TVIF_TEXT,

    _T("Pennsylvania"), 0, 0, 0, 0, 0, hCountry, NULL);

    // Insert the "Washington" item and assure that it is

    // inserted after the "Pennsylvania" item. This override is

    // more appropriate for conveniently inserting items with

    // images.

    HTREEITEM hWA = pCtrl->InsertItem(_T("Washington"), 0, 0, hCountry, hPA);

    // We'll add some cities under each of the states.

    // The override used here is most appropriate

    // for inserting text-only items.

    pCtrl->InsertItem(_T("Pittsburgh"), hPA, TVI_SORT);

    pCtrl->InsertItem(_T("Harrisburg"), hPA, TVI_SORT);

    pCtrl->InsertItem(_T("Altoona"), hPA, TVI_SORT);

    pCtrl->InsertItem(_T("Seattle"), hWA, TVI_SORT);

    pCtrl->InsertItem(_T("Kalaloch"), hWA, TVI_SORT);

    pCtrl->InsertItem(_T("Yakima"), hWA, TVI_SORT);

     

    link:

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/HTML/_core_using_ctreectrl.asp

    best regards.

    quarta-feira, 23 de agosto de 2006 18:10

Todas as Respostas

  • bom, como nao sei exatamente a qual "treeview" que vc se refere, vou supor que eh a CTreeCtrl (e nao a CTreeView, que no caso envolve o suporte a document/view architecture).

     

    nesse caso, vc vai trabalhar com HTREEITEM. (e a adição de todos os nodes eh feita programaticamente, no caso dos eventos vc pode trabalhar com o mfc classwizard.).

     

    segue alguns exemplos e referencias do proprio msdn.

     

    codigo:

    // Gain a pointer to our tree control

    CTreeCtrl* pCtrl = (CTreeCtrl*) GetDlgItem(IDC_TREE1);

    ASSERT(pCtrl != NULL);

    // Insert a root item using the structure. We must

    // initialize a TVINSERTSTRUCT structure and pass its

    // address to the call.

    TVINSERTSTRUCT tvInsert;

    tvInsert.hParent = NULL;

    tvInsert.hInsertAfter = NULL;

    tvInsert.item.mask = TVIF_TEXT;

    tvInsert.item.pszText = _T("United States");

    HTREEITEM hCountry = pCtrl->InsertItem(&tvInsert);

    // Insert subitems of that root. Pennsylvania is

    // a state in the United States, so its item will be a child

    // of the United States item. We won't set any image or states,

    // so we supply only the TVIF_TEXT mask flag. This

    // override provides nearly complete control over the

    // insertion operation without the tedium of initializing

    // a structure. If you're going to add lots of items

    // to a tree, you might prefer the structure override

    // as it affords you a performance win by allowing you

    // to initialize some fields of the structure only once,

    // outside of your insertion loop.

    HTREEITEM hPA = pCtrl->InsertItem(TVIF_TEXT,

    _T("Pennsylvania"), 0, 0, 0, 0, 0, hCountry, NULL);

    // Insert the "Washington" item and assure that it is

    // inserted after the "Pennsylvania" item. This override is

    // more appropriate for conveniently inserting items with

    // images.

    HTREEITEM hWA = pCtrl->InsertItem(_T("Washington"), 0, 0, hCountry, hPA);

    // We'll add some cities under each of the states.

    // The override used here is most appropriate

    // for inserting text-only items.

    pCtrl->InsertItem(_T("Pittsburgh"), hPA, TVI_SORT);

    pCtrl->InsertItem(_T("Harrisburg"), hPA, TVI_SORT);

    pCtrl->InsertItem(_T("Altoona"), hPA, TVI_SORT);

    pCtrl->InsertItem(_T("Seattle"), hWA, TVI_SORT);

    pCtrl->InsertItem(_T("Kalaloch"), hWA, TVI_SORT);

    pCtrl->InsertItem(_T("Yakima"), hWA, TVI_SORT);

     

    link:

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/HTML/_core_using_ctreectrl.asp

    best regards.

    quarta-feira, 23 de agosto de 2006 18:10
  • Então Wagner eu preciso fazer algo parecido com o windows explorer.

    Eu preciso saber como colocar um desenho, como fazer diretórios e filhos.

    Obrigada

    quarta-feira, 23 de agosto de 2006 19:41