Как заполнить TreeView в скрипте ресурсов

Я должен сделать C ++, VSPackage, который содержит TreeView. Я добавил его в диалоговое окно по умолчанию сценария ресурсов проекта (* .rc) из окна панели инструментов. Проблема в том, что я не знаю, как добавить элементы к нему.

Я посмотрел на многих сайтах, но у них есть код для C # или других типов проектов.

Я нашел проект, созданный Song Ho Ahn, а также исходный код, который можно найти внизу этого сайта. В виде дерева.

Я попытался перейти в окно свойств TreeView, чтобы увидеть, есть ли что-то, чтобы я мог добавить элементы к нему, а затем найти способ заменить их, но ничего. Я пытался использовать код, который он написал, просто чтобы помочь мне найти решение моей проблемы, но я не смог его найти. Может быть, это «обработчик» и «родитель», которые я не знаю, как использовать.

void set(HWND parent, int id, bool visible=true)
{
this->parent = parent;
handle = GetDlgItem(parent, id);
if(!visible) disable();
}

Хочу отметить, что я новичок в VSPackage и что раньше я не делал такой большой проект.

Если кто-то может объяснить мне, что делать, отправить меня по пути или даже сказать, что я глуп и решение простое, я буду очень признателен.

0

Решение

В размещенном вами фрагменте вы используете собственный API-интерфейс WIN32. Так что вы можете посмотреть в документации TVM_INSERTITEM сообщение.

Вот небольшой фрагмент, чтобы добавить одну запись в элемент управления TreeView (независимо от того, создан ли он скриптом ресурса или вызовом CreateWindow (..)):

TVITEM tvi;
TVINSERTSTRUCT tvins;
HTREEITEM hItem;

/* setup new item */
tvi.mask = TVIF_TEXT;   // just text
tvi.pszText = "Hello TreeView!";
tvi.cchTextMax = 0;    // ignored if creating the item

/* setup insertion structure of item */
tvins.hParent = TVI_ROOT;    // insert item at root level
tvins.item = tvi;            // item description setup above
tvins.hInsertAfter = NULL;   // instert on top of the tree view
hItem = (HTREEITEM)SendMessage(GetDlgItem(hWnd, IDC_TREEVIEW),   // update parameters of GetDlgItem(..) according to your code
TVM_INSERTITEM,
0,
(LPARAM)(LPTVINSERTSTRUCT)&tvins);
if (hItem == NULL)
{
/* something went wrong */
}
0

Другие решения


По вопросам рекламы [email protected]