From 56c36e3dc74e6c208c3ea1ae2f43e01aaf0becfc Mon Sep 17 00:00:00 2001 From: Francois Boisvert Date: Sat, 24 Jul 1999 12:14:51 +0000 Subject: [PATCH] Implemented TREEVIEW_InsertItemW. --- dlls/comctl32/treeview.c | 53 ++++++++++++++++++++++++++++++++++++++-- dlls/shell32/brsfolder.c | 2 +- include/commctrl.h | 7 +++--- 3 files changed, 55 insertions(+), 7 deletions(-) diff --git a/dlls/comctl32/treeview.c b/dlls/comctl32/treeview.c index 8aacb307c8f..3f3c05a242d 100644 --- a/dlls/comctl32/treeview.c +++ b/dlls/comctl32/treeview.c @@ -1870,7 +1870,55 @@ TREEVIEW_InsertItemA (HWND hwnd, WPARAM wParam, LPARAM lParam) return (LRESULT) iItem; } +static LRESULT +TREEVIEW_InsertItemW(HWND hwnd, WPARAM wParam, LPARAM lParam) +{ + TVINSERTSTRUCTW *tvisW; + TVINSERTSTRUCTA tvisA; + LRESULT lRes; + tvisW = (LPTVINSERTSTRUCTW)lParam; + + tvisA.hParent = tvisW->hParent; + tvisA.hInsertAfter = tvisW->hInsertAfter; + + tvisA.DUMMYUNIONNAME.item.mask = tvisW->DUMMYUNIONNAME.item.mask; + tvisA.DUMMYUNIONNAME.item.hItem = tvisW->DUMMYUNIONNAME.item.hItem; + tvisA.DUMMYUNIONNAME.item.state = tvisW->DUMMYUNIONNAME.item.state; + tvisA.DUMMYUNIONNAME.item.stateMask = tvisW->DUMMYUNIONNAME.item.stateMask; + tvisA.DUMMYUNIONNAME.item.cchTextMax = tvisW->DUMMYUNIONNAME.item.cchTextMax; + + if(tvisW->DUMMYUNIONNAME.item.pszText) + { + if (tvisW->DUMMYUNIONNAME.item.pszText!=LPSTR_TEXTCALLBACKW) + { + int len = lstrlenW (tvisW->DUMMYUNIONNAME.item.pszText)+1; + tvisA.DUMMYUNIONNAME.item.pszText = COMCTL32_Alloc (len); + lstrcpyWtoA (tvisA.DUMMYUNIONNAME.item.pszText, + tvisW->DUMMYUNIONNAME.item.pszText ); + } + else + { + tvisA.DUMMYUNIONNAME.item.pszText = LPSTR_TEXTCALLBACKA; + tvisA.DUMMYUNIONNAME.item.cchTextMax = 0; + } + } + + tvisA.DUMMYUNIONNAME.item.iImage = tvisW->DUMMYUNIONNAME.item.iImage; + tvisA.DUMMYUNIONNAME.item.iSelectedImage = tvisW->DUMMYUNIONNAME.item.iSelectedImage; + tvisA.DUMMYUNIONNAME.item.cChildren = tvisW->DUMMYUNIONNAME.item.cChildren; + tvisA.DUMMYUNIONNAME.item.lParam = tvisW->DUMMYUNIONNAME.item.lParam; + + lRes = TREEVIEW_InsertItemA(hwnd,wParam,(LPARAM)&tvisA); + + if (tvisA.DUMMYUNIONNAME.item.pszText!=LPSTR_TEXTCALLBACKA) + { + COMCTL32_Free(tvisA.DUMMYUNIONNAME.item.pszText); + } + + return lRes; + +} @@ -3458,8 +3506,7 @@ TREEVIEW_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) return TREEVIEW_InsertItemA (hwnd, wParam, lParam); case TVM_INSERTITEMW: - FIXME("Unimplemented msg TVM_INSERTITEM32W\n"); - return 0; + return TREEVIEW_InsertItemW(hwnd,wParam,lParam);; case TVM_DELETEITEM: return TREEVIEW_DeleteItem (hwnd, wParam, lParam); @@ -3716,3 +3763,5 @@ TREEVIEW_Unregister (void) UnregisterClassA (WC_TREEVIEWA, (HINSTANCE)NULL); } + + diff --git a/dlls/shell32/brsfolder.c b/dlls/shell32/brsfolder.c index 3a069d83a6f..19b2bbc4687 100644 --- a/dlls/shell32/brsfolder.c +++ b/dlls/shell32/brsfolder.c @@ -150,7 +150,7 @@ static void FillTreeView(IShellFolder * lpsf, LPITEMIDLIST pidl, HTREEITEM hPar tvins.hInsertAfter = hPrev; tvins.hParent = hParent; - hPrev = (HTREEITEM)TreeView_InsertItemA (hwndTreeView, &tvins); + hPrev = (HTREEITEM)TreeView_InsertItemW (hwndTreeView, &tvins); } } diff --git a/include/commctrl.h b/include/commctrl.h index a7cccc21a66..3ddeb9a8d0f 100644 --- a/include/commctrl.h +++ b/include/commctrl.h @@ -1994,13 +1994,12 @@ typedef struct tagNMTVGETINFOTIPW - - - - #define TreeView_InsertItemA(hwnd, phdi) \ (INT)SendMessageA((hwnd), TVM_INSERTITEMA, 0, \ (LPARAM)(LPTVINSERTSTRUCTA)(phdi)) +#define TreeView_InsertItemW(hwnd,phdi) \ + (INT)SendMessageW((hwnd), TVM_INSERTITEMW, 0, \ + (LPARAM)(LPTVINSERTSTRUCTW)(phdi)) #define TreeView_DeleteItem(hwnd, hItem) \ (BOOL)SendMessageA((hwnd), TVM_DELETEITEM, 0, (LPARAM)(HTREEITEM)(hItem)) #define TreeView_DeleteAllItems(hwnd) \