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, который является дочерним узлом, он получает значение мусора. Помощь приветствуется!

0 ответов

Другие вопросы по тегам