TreeView_EnsureVisibleで、追加した項目が表示されるように反映する。
TreeView_EnsureVisible マクロ (commctrl.h) - Win32 apps | Microsoft Learn
第114章
resource.hは、
とする。
TreeView_EnsureVisible.rcは、
とする。
TreeView_EnsureVisible.cppは、
case WM_COMMAND:
{
switch (LOWORD(wParam)){
case ID_BUTTON1:
{
HWND hTree;
hTree = GetDlgItem(hwndDlg, IDC_TREE1);
HTREEITEM hItem = TreeView_GetSelection(hTree);
TCHAR tszHItem[256] = {0};
_stprintf(tszHItem, _T("hItem = 0x%08x\n"), (unsigned long)hItem);
OutputDebugString(tszHItem);
TreeView_EditLabel(hTree, hItem);
}
break;
case ID_BUTTON2:
{
HWND hTree;
TV_INSERTSTRUCT tvis = {0};
hTree = GetDlgItem(hwndDlg, IDC_TREE1);
HTREEITEM hItem = TreeView_GetSelection(hTree);
tvis.hInsertAfter = TVI_LAST;
tvis.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
tvis.hParent = hItem;
HWND hEdit = GetDlgItem(hwndDlg, ID_EDIT_NAME);
TCHAR tszText[256] = {0};
GetWindowText(hEdit, tszText, 256);
tvis.item.pszText = tszText;
tvis.item.iImage = 1;
tvis.item.iSelectedImage = 1;
HTREEITEM hNewItem = TreeView_InsertItem(hTree, &tvis);
OutputDebugString(_T("TreeView_InsertItem!\n"));
}
break;
default:
break;
}
break;
}
break;
としてみる。
Jiroの子としてSenjiroを追加してみる。Jiroの子としてSenjiroを追加してみる。
Button2を押すと、
デバッグログには出てるけど、反映されてない。デバッグログには出てるけど、反映されてない。
Jiroを選択すると、開閉スイッチが出る。Jiroを選択すると、開閉スイッチが出る。
開くと、Senjiroが入ってる。開くと、Senjiroが入ってる。
そこで、
TreeView_EnsureVisibleを最後に呼ぶようにすると、
ここでButton2を押すと、ここでButton2を押すと、
即座に反映即座に反映
Sample/winapi/TreeView_EnsureVisible/TreeView_EnsureVisible/src/TreeView_EnsureVisible at master · bg1bgst333/Sample · GitHub