shell32: Make the shell view control Unicode.

This commit is contained in:
Mikołaj Zalewski 2007-09-25 23:56:57 -07:00 committed by Alexandre Julliard
parent 70c20d7d4e
commit 212c36048a
2 changed files with 28 additions and 28 deletions

View File

@ -68,6 +68,8 @@
WINE_DEFAULT_DEBUG_CHANNEL(shell); WINE_DEFAULT_DEBUG_CHANNEL(shell);
static const WCHAR SV_CLASS_NAME[] = {'S','H','E','L','L','D','L','L','_','D','e','f','V','i','e','w',0};
typedef struct typedef struct
{ BOOL bIsAscending; { BOOL bIsAscending;
INT nHeaderID; INT nHeaderID;
@ -324,8 +326,8 @@ static BOOL ShellView_CreateList (IShellViewImpl * This)
if (This->FolderSettings.fFlags & FWF_NOCLIENTEDGE) if (This->FolderSettings.fFlags & FWF_NOCLIENTEDGE)
dwExStyle &= ~WS_EX_CLIENTEDGE; dwExStyle &= ~WS_EX_CLIENTEDGE;
This->hWndList=CreateWindowExA( dwExStyle, This->hWndList=CreateWindowExW( dwExStyle,
WC_LISTVIEWA, WC_LISTVIEWW,
NULL, NULL,
dwStyle, dwStyle,
0,0,0,0, 0,0,0,0,
@ -1257,7 +1259,7 @@ static LRESULT ShellView_OnCommand(IShellViewImpl * This,DWORD dwCmdID, DWORD dw
static LRESULT ShellView_OnNotify(IShellViewImpl * This, UINT CtlID, LPNMHDR lpnmh) static LRESULT ShellView_OnNotify(IShellViewImpl * This, UINT CtlID, LPNMHDR lpnmh)
{ LPNMLISTVIEW lpnmlv = (LPNMLISTVIEW)lpnmh; { LPNMLISTVIEW lpnmlv = (LPNMLISTVIEW)lpnmh;
NMLVDISPINFOA *lpdi = (NMLVDISPINFOA *)lpnmh; NMLVDISPINFOW *lpdi = (NMLVDISPINFOW *)lpnmh;
LPITEMIDLIST pidl; LPITEMIDLIST pidl;
TRACE("%p CtlID=%u lpnmh->code=%x\n",This,CtlID,lpnmh->code); TRACE("%p CtlID=%u lpnmh->code=%x\n",This,CtlID,lpnmh->code);
@ -1302,8 +1304,8 @@ static LRESULT ShellView_OnNotify(IShellViewImpl * This, UINT CtlID, LPNMHDR lpn
if (OnDefaultCommand(This) != S_OK) ShellView_OpenSelectedItems(This); if (OnDefaultCommand(This) != S_OK) ShellView_OpenSelectedItems(This);
break; break;
case HDN_ENDTRACKA: case HDN_ENDTRACKW:
TRACE("-- HDN_ENDTRACKA %p\n",This); TRACE("-- HDN_ENDTRACKW %p\n",This);
/*nColumn1 = ListView_GetColumnWidth(This->hWndList, 0); /*nColumn1 = ListView_GetColumnWidth(This->hWndList, 0);
nColumn2 = ListView_GetColumnWidth(This->hWndList, 1);*/ nColumn2 = ListView_GetColumnWidth(This->hWndList, 1);*/
break; break;
@ -1338,7 +1340,7 @@ static LRESULT ShellView_OnNotify(IShellViewImpl * This, UINT CtlID, LPNMHDR lpn
} }
This->ListViewSortInfo.nLastHeaderID = This->ListViewSortInfo.nHeaderID; This->ListViewSortInfo.nLastHeaderID = This->ListViewSortInfo.nHeaderID;
SendMessageA(lpnmlv->hdr.hwndFrom, LVM_SORTITEMS, (WPARAM) &This->ListViewSortInfo, (LPARAM)ShellView_ListViewCompareItems); SendMessageW(lpnmlv->hdr.hwndFrom, LVM_SORTITEMS, (WPARAM) &This->ListViewSortInfo, (LPARAM)ShellView_ListViewCompareItems);
break; break;
case LVN_GETDISPINFOA: case LVN_GETDISPINFOA:
@ -1354,13 +1356,15 @@ static LRESULT ShellView_OnNotify(IShellViewImpl * This, UINT CtlID, LPNMHDR lpn
IShellFolder2_GetDetailsOf(This->pSF2Parent, pidl, lpdi->item.iSubItem, &sd); IShellFolder2_GetDetailsOf(This->pSF2Parent, pidl, lpdi->item.iSubItem, &sd);
if (lpnmh->code == LVN_GETDISPINFOA) if (lpnmh->code == LVN_GETDISPINFOA)
{ {
StrRetToStrNA( lpdi->item.pszText, lpdi->item.cchTextMax, &sd.str, NULL); /* shouldn't happen */
TRACE("-- text=%s\n",lpdi->item.pszText); NMLVDISPINFOA *lpdiA = (NMLVDISPINFOA *)lpnmh;
StrRetToStrNA( lpdiA->item.pszText, lpdiA->item.cchTextMax, &sd.str, NULL);
TRACE("-- text=%s\n",lpdiA->item.pszText);
} }
else /* LVN_GETDISPINFOW */ else /* LVN_GETDISPINFOW */
{ {
StrRetToStrNW( ((NMLVDISPINFOW *)lpdi)->item.pszText, lpdi->item.cchTextMax, &sd.str, NULL); StrRetToStrNW( lpdi->item.pszText, lpdi->item.cchTextMax, &sd.str, NULL);
TRACE("-- text=%s\n",debugstr_w((WCHAR*)(lpdi->item.pszText))); TRACE("-- text=%s\n",debugstr_w(lpdi->item.pszText));
} }
} }
else else
@ -1411,7 +1415,7 @@ static LRESULT ShellView_OnNotify(IShellViewImpl * This, UINT CtlID, LPNMHDR lpn
} }
break; break;
case LVN_BEGINLABELEDITA: case LVN_BEGINLABELEDITW:
{ {
DWORD dwAttr = SFGAO_CANRENAME; DWORD dwAttr = SFGAO_CANRENAME;
pidl = (LPITEMIDLIST)lpdi->item.lParam; pidl = (LPITEMIDLIST)lpdi->item.lParam;
@ -1426,30 +1430,27 @@ static LRESULT ShellView_OnNotify(IShellViewImpl * This, UINT CtlID, LPNMHDR lpn
return TRUE; return TRUE;
} }
case LVN_ENDLABELEDITA: case LVN_ENDLABELEDITW:
{ {
TRACE("-- LVN_ENDLABELEDITA %p\n",This); TRACE("-- LVN_ENDLABELEDITA %p\n",This);
if (lpdi->item.pszText) if (lpdi->item.pszText)
{ {
HRESULT hr; HRESULT hr;
WCHAR wszNewName[MAX_PATH]; LVITEMW lvItem;
LVITEMA lvItem;
lvItem.iItem = lpdi->item.iItem; lvItem.iItem = lpdi->item.iItem;
lvItem.iSubItem = 0; lvItem.iSubItem = 0;
lvItem.mask = LVIF_PARAM; lvItem.mask = LVIF_PARAM;
SendMessageA(This->hWndList, LVM_GETITEMA, 0, (LPARAM) &lvItem); SendMessageW(This->hWndList, LVM_GETITEMW, 0, (LPARAM) &lvItem);
pidl = (LPITEMIDLIST)lpdi->item.lParam; pidl = (LPITEMIDLIST)lpdi->item.lParam;
if (!MultiByteToWideChar( CP_ACP, 0, lpdi->item.pszText, -1, wszNewName, MAX_PATH )) hr = IShellFolder_SetNameOf(This->pSFParent, 0, pidl, lpdi->item.pszText, SHGDN_INFOLDER, &pidl);
wszNewName[MAX_PATH-1] = 0;
hr = IShellFolder_SetNameOf(This->pSFParent, 0, pidl, wszNewName, SHGDN_INFOLDER, &pidl);
if(SUCCEEDED(hr) && pidl) if(SUCCEEDED(hr) && pidl)
{ {
lvItem.mask = LVIF_PARAM; lvItem.mask = LVIF_PARAM;
lvItem.lParam = (LPARAM)pidl; lvItem.lParam = (LPARAM)pidl;
SendMessageA(This->hWndList, LVM_SETITEMA, 0, (LPARAM) &lvItem); SendMessageW(This->hWndList, LVM_SETITEMW, 0, (LPARAM) &lvItem);
return TRUE; return TRUE;
} }
} }
@ -1586,14 +1587,14 @@ static LRESULT ShellView_OnChange(IShellViewImpl * This, LPITEMIDLIST * Pidls, L
static LRESULT CALLBACK ShellView_WndProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam) static LRESULT CALLBACK ShellView_WndProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam)
{ {
IShellViewImpl * pThis = (IShellViewImpl*)GetWindowLongPtrW(hWnd, GWLP_USERDATA); IShellViewImpl * pThis = (IShellViewImpl*)GetWindowLongPtrW(hWnd, GWLP_USERDATA);
LPCREATESTRUCTA lpcs; LPCREATESTRUCTW lpcs;
TRACE("(hwnd=%p msg=%x wparm=%lx lparm=%lx)\n",hWnd, uMessage, wParam, lParam); TRACE("(hwnd=%p msg=%x wparm=%lx lparm=%lx)\n",hWnd, uMessage, wParam, lParam);
switch (uMessage) switch (uMessage)
{ {
case WM_NCCREATE: case WM_NCCREATE:
lpcs = (LPCREATESTRUCTA)lParam; lpcs = (LPCREATESTRUCTW)lParam;
pThis = (IShellViewImpl*)(lpcs->lpCreateParams); pThis = (IShellViewImpl*)(lpcs->lpCreateParams);
SetWindowLongPtrW(hWnd, GWLP_USERDATA, (ULONG_PTR)pThis); SetWindowLongPtrW(hWnd, GWLP_USERDATA, (ULONG_PTR)pThis);
pThis->hWnd = hWnd; /*set the window handle*/ pThis->hWnd = hWnd; /*set the window handle*/
@ -1631,7 +1632,7 @@ static LRESULT CALLBACK ShellView_WndProc(HWND hWnd, UINT uMessage, WPARAM wPara
break; break;
} }
return DefWindowProcA (hWnd, uMessage, wParam, lParam); return DefWindowProcW(hWnd, uMessage, wParam, lParam);
} }
/********************************************************** /**********************************************************
* *
@ -1847,7 +1848,7 @@ static HRESULT WINAPI IShellView_fnCreateViewWindow(
{ {
IShellViewImpl *This = (IShellViewImpl *)iface; IShellViewImpl *This = (IShellViewImpl *)iface;
WNDCLASSA wc; WNDCLASSW wc;
*phWnd = 0; *phWnd = 0;
@ -1871,7 +1872,7 @@ static HRESULT WINAPI IShellView_fnCreateViewWindow(
} }
/*if our window class has not been registered, then do so*/ /*if our window class has not been registered, then do so*/
if(!GetClassInfoA(shell32_hInstance, SV_CLASS_NAME, &wc)) if(!GetClassInfoW(shell32_hInstance, SV_CLASS_NAME, &wc))
{ {
ZeroMemory(&wc, sizeof(wc)); ZeroMemory(&wc, sizeof(wc));
wc.style = CS_HREDRAW | CS_VREDRAW; wc.style = CS_HREDRAW | CS_VREDRAW;
@ -1880,16 +1881,16 @@ static HRESULT WINAPI IShellView_fnCreateViewWindow(
wc.cbWndExtra = 0; wc.cbWndExtra = 0;
wc.hInstance = shell32_hInstance; wc.hInstance = shell32_hInstance;
wc.hIcon = 0; wc.hIcon = 0;
wc.hCursor = LoadCursorA (0, (LPSTR)IDC_ARROW); wc.hCursor = LoadCursorW(0, (LPWSTR)IDC_ARROW);
wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1); wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);
wc.lpszMenuName = NULL; wc.lpszMenuName = NULL;
wc.lpszClassName = SV_CLASS_NAME; wc.lpszClassName = SV_CLASS_NAME;
if(!RegisterClassA(&wc)) if(!RegisterClassW(&wc))
return E_FAIL; return E_FAIL;
} }
*phWnd = CreateWindowExA(0, *phWnd = CreateWindowExW(0,
SV_CLASS_NAME, SV_CLASS_NAME,
NULL, NULL,
WS_CHILD | WS_TABSTOP, WS_CHILD | WS_TABSTOP,

View File

@ -149,7 +149,6 @@ typedef struct
*/ */
typedef GUID SHELLVIEWID; typedef GUID SHELLVIEWID;
#define SV_CLASS_NAME ("SHELLDLL_DefView")
#define FCIDM_SHVIEWFIRST 0x0000 #define FCIDM_SHVIEWFIRST 0x0000
/* undocumented */ /* undocumented */