CDDS_ITEMPREPAINT GetItem возвращает false для дочернего элемента
Я читаю tv.pszText дочерних элементов в CDDS_ITEMPREPAINT, но он возвращает значение мусора каждый раз, когда я запускаю этот код. Но это прекрасно работает для родительских узлов
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
char achBuf[100];
case WM_NOTIFY:
{
LPNMTREEVIEW pnm = (LPNMTREEVIEW)lParam;
if (pnm->hdr.code == NM_CUSTOMDRAW)
{
LPNMTVCUSTOMDRAW lplvcd = (LPNMTVCUSTOMDRAW)lParam;
switch (lplvcd->nmcd.dwDrawStage)
{
case CDDS_PREPAINT :
return CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT:
hwndTree = GetDlgItem(hWnd,ID_TREEVIEW);
if(lplvcd->iLevel==0)
{
lplvcd->clrText = RGB(0, 255,0);
ZeroMemory(&tv, sizeof(TVITEM));
tv.hItem=(HTREEITEM)lplvcd->nmcd.dwItemSpec;
tv.mask=TVIF_TEXT|TVIF_HANDLE;
tv.cchTextMax=100;
tv.pszText=(LPWSTR)achBuf;
if(TreeView_GetItem(hwndTree,&tv))
{
achBuf;
}
}
if(lplvcd->iLevel==1)
{
ZeroMemory(&tv, sizeof(TVITEM));
tv.hItem=(HTREEITEM)lplvcd->nmcd.dwItemSpec;
tv.mask=TVIF_TEXT|TVIF_HANDLE;
tv.cchTextMax=100;
tv.pszText=(LPWSTR)achBuf;
if(TreeView_GetItem(hwndTree,&tv))
{
achBuf;
}
}
}
}
}
Это нормально для уровня ==0, который является родительским узлом, но для уровня ==1, который является дочерним узлом, он получает значение мусора. Помощь приветствуется!