comdlg32: Use unicode Win32 APIs when possible.
This commit is contained in:
parent
1c2a717b59
commit
afd6f64a02
|
@ -64,7 +64,6 @@
|
|||
#include "winreg.h"
|
||||
#include "winternl.h"
|
||||
#include "winnls.h"
|
||||
#include "wine/unicode.h"
|
||||
#include "wingdi.h"
|
||||
#include "winuser.h"
|
||||
#include "winreg.h"
|
||||
|
@ -72,7 +71,6 @@
|
|||
#include "dlgs.h"
|
||||
#include "cdlg.h"
|
||||
#include "filedlg31.h"
|
||||
#include "wine/debug.h"
|
||||
#include "cderr.h"
|
||||
#include "shellapi.h"
|
||||
#include "shlguid.h"
|
||||
|
@ -80,6 +78,9 @@
|
|||
#include "filedlgbrowser.h"
|
||||
#include "shlwapi.h"
|
||||
|
||||
#include "wine/unicode.h"
|
||||
#include "wine/debug.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
|
||||
|
||||
#define UNIMPLEMENTED_FLAGS \
|
||||
|
@ -140,40 +141,38 @@ typedef struct tagFD32_PRIVATE
|
|||
|
||||
/* Combo box macros */
|
||||
#define CBAddString(hwnd,str) \
|
||||
SendMessageA(hwnd,CB_ADDSTRING,0,(LPARAM)str);
|
||||
#define CBAddStringW(hwnd,str) \
|
||||
SendMessageW(hwnd,CB_ADDSTRING,0,(LPARAM)str);
|
||||
SendMessageW(hwnd, CB_ADDSTRING, 0, (LPARAM)(str));
|
||||
|
||||
#define CBInsertString(hwnd,str,pos) \
|
||||
SendMessageA(hwnd,CB_INSERTSTRING,(WPARAM)pos,(LPARAM)str);
|
||||
SendMessageW(hwnd, CB_INSERTSTRING, (WPARAM)(pos), (LPARAM)(str));
|
||||
|
||||
#define CBDeleteString(hwnd,pos) \
|
||||
SendMessageA(hwnd,CB_DELETESTRING,(WPARAM)pos,0);
|
||||
SendMessageW(hwnd, CB_DELETESTRING, (WPARAM)(pos), 0);
|
||||
|
||||
#define CBSetItemDataPtr(hwnd,iItemId,dataPtr) \
|
||||
SendMessageA(hwnd,CB_SETITEMDATA,(WPARAM)iItemId,(LPARAM)dataPtr);
|
||||
SendMessageW(hwnd, CB_SETITEMDATA, (WPARAM)(iItemId), (LPARAM)(dataPtr));
|
||||
|
||||
#define CBGetItemDataPtr(hwnd,iItemId) \
|
||||
SendMessageA(hwnd,CB_GETITEMDATA,(WPARAM)iItemId,0)
|
||||
SendMessageW(hwnd, CB_GETITEMDATA, (WPARAM)(iItemId), 0)
|
||||
|
||||
#define CBGetLBText(hwnd,iItemId,str) \
|
||||
SendMessageA(hwnd,CB_GETLBTEXT,(WPARAM)iItemId,(LPARAM)str);
|
||||
SendMessageW(hwnd, CB_GETLBTEXT, (WPARAM)(iItemId), (LPARAM)(str));
|
||||
|
||||
#define CBGetCurSel(hwnd) \
|
||||
SendMessageA(hwnd,CB_GETCURSEL,0,0);
|
||||
SendMessageW(hwnd, CB_GETCURSEL, 0, 0);
|
||||
|
||||
#define CBSetCurSel(hwnd,pos) \
|
||||
SendMessageA(hwnd,CB_SETCURSEL,(WPARAM)pos,0);
|
||||
SendMessageW(hwnd, CB_SETCURSEL, (WPARAM)(pos), 0);
|
||||
|
||||
#define CBGetCount(hwnd) \
|
||||
SendMessageA(hwnd,CB_GETCOUNT,0,0);
|
||||
SendMessageW(hwnd, CB_GETCOUNT, 0, 0);
|
||||
#define CBShowDropDown(hwnd,show) \
|
||||
SendMessageA(hwnd,CB_SHOWDROPDOWN,(WPARAM)show,0);
|
||||
SendMessageW(hwnd, CB_SHOWDROPDOWN, (WPARAM)(show), 0);
|
||||
#define CBSetItemHeight(hwnd,index,height) \
|
||||
SendMessageA(hwnd,CB_SETITEMHEIGHT,(WPARAM)index,(LPARAM)height);
|
||||
SendMessageW(hwnd, CB_SETITEMHEIGHT, (WPARAM)(index), (LPARAM)(height));
|
||||
|
||||
#define CBSetExtendedUI(hwnd,flag) \
|
||||
SendMessageA(hwnd,CB_SETEXTENDEDUI,(WPARAM)(flag),0)
|
||||
SendMessageW(hwnd, CB_SETEXTENDEDUI, (WPARAM)(flag), 0)
|
||||
|
||||
const char FileOpenDlgInfosStr[] = "FileOpenDlgInfos"; /* windows property description string */
|
||||
static const char LookInInfosStr[] = "LookInInfos"; /* LOOKIN combo box property */
|
||||
|
@ -478,7 +477,7 @@ BOOL WINAPI GetFileDialog95W(LPOPENFILENAMEW ofn,UINT iDlgType)
|
|||
if(ofn->lpstrInitialDir)
|
||||
{
|
||||
/* fodInfos.initdir = strdupW(ofn->lpstrInitialDir); */
|
||||
DWORD len = strlenW(ofn->lpstrInitialDir)+1;
|
||||
DWORD len = lstrlenW(ofn->lpstrInitialDir)+1;
|
||||
fodInfos.initdir = MemAlloc(len*sizeof(WCHAR));
|
||||
memcpy(fodInfos.initdir,ofn->lpstrInitialDir,len*sizeof(WCHAR));
|
||||
}
|
||||
|
@ -877,10 +876,10 @@ static INT_PTR FILEDLG95_Handle_GetFilePath(HWND hwnd, DWORD size, LPVOID buffer
|
|||
if( fodInfos->unicode )
|
||||
{
|
||||
LPWSTR bufW = buffer;
|
||||
total = strlenW(lpstrCurrentDir) + 1 + sizeUsed;
|
||||
total = lstrlenW(lpstrCurrentDir) + 1 + sizeUsed;
|
||||
|
||||
/* Prepend the current path */
|
||||
n = strlenW(lpstrCurrentDir) + 1;
|
||||
n = lstrlenW(lpstrCurrentDir) + 1;
|
||||
memcpy( bufW, lpstrCurrentDir, min(n,size) * sizeof(WCHAR));
|
||||
if(n<size)
|
||||
{
|
||||
|
@ -974,7 +973,7 @@ static INT_PTR FILEDLG95_HandleCustomDialogMessages(HWND hwnd, UINT uMsg, WPARAM
|
|||
WideCharToMultiByte(CP_ACP, 0, lpstrPath, -1,
|
||||
(LPSTR)lParam, (int)wParam, NULL, NULL);
|
||||
}
|
||||
retval = strlenW(lpstrPath);
|
||||
retval = lstrlenW(lpstrPath);
|
||||
break;
|
||||
|
||||
case CDM_GETSPEC:
|
||||
|
@ -1254,13 +1253,13 @@ static LRESULT FILEDLG95_InitControls(HWND hwnd)
|
|||
if (result) {
|
||||
|
||||
/* nameBit is always shorter than the original filename */
|
||||
strcpyW(fodInfos->filename,nameBit);
|
||||
lstrcpyW(fodInfos->filename,nameBit);
|
||||
|
||||
*nameBit = 0x00;
|
||||
if (fodInfos->initdir == NULL)
|
||||
MemFree(fodInfos->initdir);
|
||||
fodInfos->initdir = MemAlloc((strlenW(tmpBuf) + 1)*sizeof(WCHAR));
|
||||
strcpyW(fodInfos->initdir, tmpBuf);
|
||||
fodInfos->initdir = MemAlloc((lstrlenW(tmpBuf) + 1)*sizeof(WCHAR));
|
||||
lstrcpyW(fodInfos->initdir, tmpBuf);
|
||||
handledPath = TRUE;
|
||||
TRACE("Value in Filename includes path, overriding InitialDir: %s, %s\n",
|
||||
debugstr_w(fodInfos->filename), debugstr_w(fodInfos->initdir));
|
||||
|
@ -1284,22 +1283,22 @@ static LRESULT FILEDLG95_InitControls(HWND hwnd)
|
|||
WCHAR *nameBit;
|
||||
DWORD result;
|
||||
|
||||
strcpyW(tmpBuf, fodInfos->initdir);
|
||||
lstrcpyW(tmpBuf, fodInfos->initdir);
|
||||
if( PathFileExistsW(tmpBuf) ) {
|
||||
/* initdir does not have to be a directory. If a file is
|
||||
* specified, the dir part is taken */
|
||||
if( PathIsDirectoryW(tmpBuf)) {
|
||||
if (tmpBuf[strlenW(tmpBuf)-1] != '\\') {
|
||||
strcatW(tmpBuf, szwSlash);
|
||||
if (tmpBuf[lstrlenW(tmpBuf)-1] != '\\') {
|
||||
lstrcatW(tmpBuf, szwSlash);
|
||||
}
|
||||
strcatW(tmpBuf, szwStar);
|
||||
lstrcatW(tmpBuf, szwStar);
|
||||
}
|
||||
result = GetFullPathNameW(tmpBuf, MAX_PATH, tmpBuf2, &nameBit);
|
||||
if (result) {
|
||||
*nameBit = 0x00;
|
||||
MemFree(fodInfos->initdir);
|
||||
fodInfos->initdir = MemAlloc((strlenW(tmpBuf2) + 1)*sizeof(WCHAR));
|
||||
strcpyW(fodInfos->initdir, tmpBuf2);
|
||||
fodInfos->initdir = MemAlloc((lstrlenW(tmpBuf2) + 1)*sizeof(WCHAR));
|
||||
lstrcpyW(fodInfos->initdir, tmpBuf2);
|
||||
handledPath = TRUE;
|
||||
TRACE("Value in InitDir changed to %s\n", debugstr_w(fodInfos->initdir));
|
||||
}
|
||||
|
@ -1330,13 +1329,13 @@ static LRESULT FILEDLG95_InitControls(HWND hwnd)
|
|||
int len;
|
||||
|
||||
/* nameBit is always shorter than the original filename */
|
||||
strcpyW(fodInfos->filename, nameBit);
|
||||
lstrcpyW(fodInfos->filename, nameBit);
|
||||
*nameBit = 0x00;
|
||||
|
||||
len = strlenW(tmpBuf);
|
||||
len = lstrlenW(tmpBuf);
|
||||
MemFree(fodInfos->initdir);
|
||||
fodInfos->initdir = MemAlloc((len+1)*sizeof(WCHAR));
|
||||
strcpyW(fodInfos->initdir, tmpBuf);
|
||||
lstrcpyW(fodInfos->initdir, tmpBuf);
|
||||
|
||||
handledPath = TRUE;
|
||||
TRACE("Value in Filename includes path, overriding initdir: %s, %s\n",
|
||||
|
@ -1361,7 +1360,7 @@ static LRESULT FILEDLG95_InitControls(HWND hwnd)
|
|||
|
||||
/* Skip the title */
|
||||
if(! *lpstrPos) break; /* end */
|
||||
lpstrPos += strlenW(lpstrPos) + 1;
|
||||
lpstrPos += lstrlenW(lpstrPos) + 1;
|
||||
|
||||
/* See if any files exist in the current dir with this extension */
|
||||
if(! *lpstrPos) break; /* end */
|
||||
|
@ -1370,7 +1369,7 @@ static LRESULT FILEDLG95_InitControls(HWND hwnd)
|
|||
|
||||
if (hFind == INVALID_HANDLE_VALUE) {
|
||||
/* None found - continue search */
|
||||
lpstrPos += strlenW(lpstrPos) + 1;
|
||||
lpstrPos += lstrlenW(lpstrPos) + 1;
|
||||
|
||||
} else {
|
||||
searchMore = FALSE;
|
||||
|
@ -1686,23 +1685,23 @@ BOOL FILEDLG95_OnOpenMultipleFiles(HWND hwnd, LPWSTR lpstrFileList, UINT nFileCo
|
|||
LoadStringW(COMDLG32_hInstance, IDS_FILENOTFOUND, lpstrNotFound, 100);
|
||||
LoadStringW(COMDLG32_hInstance, IDS_VERIFYFILE, lpstrMsg, 100);
|
||||
|
||||
strcpyW(tmp, lpstrTemp);
|
||||
strcatW(tmp, nl);
|
||||
strcatW(tmp, lpstrNotFound);
|
||||
strcatW(tmp, nl);
|
||||
strcatW(tmp, lpstrMsg);
|
||||
lstrcpyW(tmp, lpstrTemp);
|
||||
lstrcatW(tmp, nl);
|
||||
lstrcatW(tmp, lpstrNotFound);
|
||||
lstrcatW(tmp, nl);
|
||||
lstrcatW(tmp, lpstrMsg);
|
||||
|
||||
MessageBoxW(hwnd, tmp, fodInfos->title, MB_OK | MB_ICONEXCLAMATION);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* move to the next file in the list of files */
|
||||
lpstrTemp += strlenW(lpstrTemp) + 1;
|
||||
lpstrTemp += lstrlenW(lpstrTemp) + 1;
|
||||
COMDLG32_SHFree(pidl);
|
||||
}
|
||||
}
|
||||
|
||||
nSizePath = strlenW(lpstrPathSpec) + 1;
|
||||
nSizePath = lstrlenW(lpstrPathSpec) + 1;
|
||||
if ( !(fodInfos->ofnInfos->Flags & OFN_EXPLORER) )
|
||||
{
|
||||
/* For "oldstyle" dialog the components have to
|
||||
|
@ -1713,7 +1712,7 @@ BOOL FILEDLG95_OnOpenMultipleFiles(HWND hwnd, LPWSTR lpstrFileList, UINT nFileCo
|
|||
if(fodInfos->unicode)
|
||||
{
|
||||
LPOPENFILENAMEW ofn = fodInfos->ofnInfos;
|
||||
strcpyW( ofn->lpstrFile, lpstrPathSpec);
|
||||
lstrcpyW( ofn->lpstrFile, lpstrPathSpec);
|
||||
memcpy( ofn->lpstrFile + nSizePath, lpstrFileList, sizeUsed*sizeof(WCHAR) );
|
||||
}
|
||||
else
|
||||
|
@ -1820,20 +1819,20 @@ BOOL FILEDLG95_OnOpen(HWND hwnd)
|
|||
/* if the user specifyed a fully qualified path use it */
|
||||
if(PathIsRelativeW(lpstrFileList))
|
||||
{
|
||||
strcatW(lpstrPathAndFile, lpstrFileList);
|
||||
lstrcatW(lpstrPathAndFile, lpstrFileList);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* does the path have a drive letter? */
|
||||
if (PathGetDriveNumberW(lpstrFileList) == -1)
|
||||
strcpyW(lpstrPathAndFile+2, lpstrFileList);
|
||||
lstrcpyW(lpstrPathAndFile+2, lpstrFileList);
|
||||
else
|
||||
strcpyW(lpstrPathAndFile, lpstrFileList);
|
||||
lstrcpyW(lpstrPathAndFile, lpstrFileList);
|
||||
}
|
||||
|
||||
/* resolve "." and ".." */
|
||||
PathCanonicalizeW(lpstrTemp, lpstrPathAndFile );
|
||||
strcpyW(lpstrPathAndFile, lpstrTemp);
|
||||
lstrcpyW(lpstrPathAndFile, lpstrTemp);
|
||||
TRACE("canon=%s\n", debugstr_w(lpstrPathAndFile));
|
||||
|
||||
MemFree(lpstrFileList);
|
||||
|
@ -1880,13 +1879,13 @@ BOOL FILEDLG95_OnOpen(HWND hwnd)
|
|||
DWORD dwEaten, dwAttributes;
|
||||
LPWSTR p;
|
||||
|
||||
strcpyW(lpwstrTemp, lpszTemp);
|
||||
lstrcpyW(lpwstrTemp, lpszTemp);
|
||||
p = PathFindNextComponentW(lpwstrTemp);
|
||||
|
||||
if (!p) break; /* end of path */
|
||||
|
||||
*p = 0;
|
||||
lpszTemp = lpszTemp + strlenW(lpwstrTemp);
|
||||
lpszTemp = lpszTemp + lstrlenW(lpwstrTemp);
|
||||
|
||||
/* There are no wildcards when OFN_NOVALIDATE is set */
|
||||
if(*lpszTemp==0 && !(fodInfos->ofnInfos->Flags & OFN_NOVALIDATE))
|
||||
|
@ -1991,9 +1990,9 @@ BOOL FILEDLG95_OnOpen(HWND hwnd)
|
|||
|
||||
/* replace the current filter */
|
||||
MemFree((LPVOID)fodInfos->ShellInfos.lpstrCurrentFilter);
|
||||
len = strlenW(lpszTemp)+1;
|
||||
len = lstrlenW(lpszTemp)+1;
|
||||
fodInfos->ShellInfos.lpstrCurrentFilter = MemAlloc(len * sizeof(WCHAR));
|
||||
strcpyW( fodInfos->ShellInfos.lpstrCurrentFilter, lpszTemp);
|
||||
lstrcpyW( fodInfos->ShellInfos.lpstrCurrentFilter, lpszTemp);
|
||||
|
||||
/* set the filter cb to the extension when possible */
|
||||
if(-1 < (iPos = FILEDLG95_FILETYPE_SearchExt(fodInfos->DlgInfos.hwndFileTypeCB, lpszTemp)))
|
||||
|
@ -2047,10 +2046,10 @@ BOOL FILEDLG95_OnOpen(HWND hwnd)
|
|||
WCHAR *filterExt = NULL;
|
||||
LPWSTR lpstrFilter = NULL;
|
||||
static const WCHAR szwDot[] = {'.',0};
|
||||
int PathLength = strlenW(lpstrPathAndFile);
|
||||
int PathLength = lstrlenW(lpstrPathAndFile);
|
||||
|
||||
/* Attach the dot*/
|
||||
strcatW(lpstrPathAndFile, szwDot);
|
||||
lstrcatW(lpstrPathAndFile, szwDot);
|
||||
|
||||
/*Get the file extension from file type filter*/
|
||||
lpstrFilter = (LPWSTR) CBGetItemDataPtr(fodInfos->DlgInfos.hwndFileTypeCB,
|
||||
|
@ -2060,9 +2059,9 @@ BOOL FILEDLG95_OnOpen(HWND hwnd)
|
|||
filterExt = PathFindExtensionW(lpstrFilter);
|
||||
|
||||
if ( filterExt && *filterExt ) /* attach the file extension from file type filter*/
|
||||
strcatW(lpstrPathAndFile, filterExt + 1);
|
||||
lstrcatW(lpstrPathAndFile, filterExt + 1);
|
||||
else if ( fodInfos->defext ) /* attach the default file extension*/
|
||||
strcatW(lpstrPathAndFile, fodInfos->defext);
|
||||
lstrcatW(lpstrPathAndFile, fodInfos->defext);
|
||||
|
||||
/* In Open dialog: if file does not exist try without extension */
|
||||
if (!(fodInfos->DlgInfos.dwDlgProp & FODPROP_SAVEDLG) && !PathFileExistsW(lpstrPathAndFile))
|
||||
|
@ -2100,7 +2099,7 @@ BOOL FILEDLG95_OnOpen(HWND hwnd)
|
|||
|
||||
/* Check that the size of the file does not exceed buffer size.
|
||||
(Allow for extra \0 if OFN_MULTISELECT is set.) */
|
||||
if(strlenW(lpstrPathAndFile) < fodInfos->ofnInfos->nMaxFile -
|
||||
if(lstrlenW(lpstrPathAndFile) < fodInfos->ofnInfos->nMaxFile -
|
||||
((fodInfos->ofnInfos->Flags & OFN_ALLOWMULTISELECT) ? 1 : 0))
|
||||
{
|
||||
LPWSTR lpszTemp;
|
||||
|
@ -2179,7 +2178,7 @@ BOOL FILEDLG95_OnOpen(HWND hwnd)
|
|||
{
|
||||
WORD size;
|
||||
|
||||
size = strlenW(lpstrPathAndFile) + 1;
|
||||
size = lstrlenW(lpstrPathAndFile) + 1;
|
||||
if (fodInfos->ofnInfos->Flags & OFN_ALLOWMULTISELECT)
|
||||
size += 1;
|
||||
/* return needed size in first two bytes of lpstrFile */
|
||||
|
@ -2349,15 +2348,15 @@ static HRESULT FILEDLG95_FILETYPE_Init(HWND hwnd)
|
|||
LPCWSTR lpstrPos = fodInfos->customfilter;
|
||||
|
||||
/* Get the title */
|
||||
lpstrPos += strlenW(fodInfos->customfilter) + 1;
|
||||
lpstrPos += lstrlenW(fodInfos->customfilter) + 1;
|
||||
|
||||
/* Copy the extensions */
|
||||
if (! *lpstrPos) return E_FAIL; /* malformed filter */
|
||||
if (!(lpstrExt = MemAlloc((strlenW(lpstrPos)+1)*sizeof(WCHAR)))) return E_FAIL;
|
||||
strcpyW(lpstrExt,lpstrPos);
|
||||
if (!(lpstrExt = MemAlloc((lstrlenW(lpstrPos)+1)*sizeof(WCHAR)))) return E_FAIL;
|
||||
lstrcpyW(lpstrExt,lpstrPos);
|
||||
|
||||
/* Add the item at the end of the combo */
|
||||
CBAddStringW(fodInfos->DlgInfos.hwndFileTypeCB, fodInfos->customfilter);
|
||||
CBAddString(fodInfos->DlgInfos.hwndFileTypeCB, fodInfos->customfilter);
|
||||
CBSetItemDataPtr(fodInfos->DlgInfos.hwndFileTypeCB, nFilters, lpstrExt);
|
||||
nFilters++;
|
||||
}
|
||||
|
@ -2377,16 +2376,16 @@ static HRESULT FILEDLG95_FILETYPE_Init(HWND hwnd)
|
|||
/* Get the title */
|
||||
if(! *lpstrPos) break; /* end */
|
||||
lpstrDisplay = lpstrPos;
|
||||
lpstrPos += strlenW(lpstrPos) + 1;
|
||||
lpstrPos += lstrlenW(lpstrPos) + 1;
|
||||
|
||||
CBAddStringW(fodInfos->DlgInfos.hwndFileTypeCB, lpstrDisplay);
|
||||
CBAddString(fodInfos->DlgInfos.hwndFileTypeCB, lpstrDisplay);
|
||||
|
||||
nFilters++;
|
||||
|
||||
/* Copy the extensions */
|
||||
if (!(lpstrExt = MemAlloc((strlenW(lpstrPos)+1)*sizeof(WCHAR)))) return E_FAIL;
|
||||
strcpyW(lpstrExt,lpstrPos);
|
||||
lpstrPos += strlenW(lpstrPos) + 1;
|
||||
if (!(lpstrExt = MemAlloc((lstrlenW(lpstrPos)+1)*sizeof(WCHAR)))) return E_FAIL;
|
||||
lstrcpyW(lpstrExt,lpstrPos);
|
||||
lpstrPos += lstrlenW(lpstrPos) + 1;
|
||||
|
||||
/* Add the item at the end of the combo */
|
||||
CBSetItemDataPtr(fodInfos->DlgInfos.hwndFileTypeCB, nFilters-1, lpstrExt);
|
||||
|
@ -2432,9 +2431,9 @@ static HRESULT FILEDLG95_FILETYPE_Init(HWND hwnd)
|
|||
{
|
||||
DWORD len;
|
||||
CharLowerW(lpstrFilter); /* lowercase */
|
||||
len = strlenW(lpstrFilter)+1;
|
||||
len = lstrlenW(lpstrFilter)+1;
|
||||
fodInfos->ShellInfos.lpstrCurrentFilter = MemAlloc( len * sizeof(WCHAR) );
|
||||
strcpyW(fodInfos->ShellInfos.lpstrCurrentFilter,lpstrFilter);
|
||||
lstrcpyW(fodInfos->ShellInfos.lpstrCurrentFilter,lpstrFilter);
|
||||
}
|
||||
} else
|
||||
fodInfos->ofnInfos->nFilterIndex = 0;
|
||||
|
@ -2473,9 +2472,9 @@ static BOOL FILEDLG95_FILETYPE_OnCommand(HWND hwnd, WORD wNotifyCode)
|
|||
{
|
||||
DWORD len;
|
||||
CharLowerW(lpstrFilter); /* lowercase */
|
||||
len = strlenW(lpstrFilter)+1;
|
||||
len = lstrlenW(lpstrFilter)+1;
|
||||
fodInfos->ShellInfos.lpstrCurrentFilter = MemAlloc( len * sizeof(WCHAR) );
|
||||
strcpyW(fodInfos->ShellInfos.lpstrCurrentFilter,lpstrFilter);
|
||||
lstrcpyW(fodInfos->ShellInfos.lpstrCurrentFilter,lpstrFilter);
|
||||
SendCustomDlgNotificationMessage(hwnd,CDN_TYPECHANGE);
|
||||
}
|
||||
|
||||
|
@ -2646,10 +2645,10 @@ static LRESULT FILEDLG95_LOOKIN_DrawItem(LPDRAWITEMSTRUCT pDIStruct)
|
|||
COLORREF crText = GetSysColor(COLOR_WINDOWTEXT);
|
||||
RECT rectText;
|
||||
RECT rectIcon;
|
||||
SHFILEINFOA sfi;
|
||||
SHFILEINFOW sfi;
|
||||
HIMAGELIST ilItemImage;
|
||||
int iIndentation;
|
||||
TEXTMETRICA tm;
|
||||
TEXTMETRICW tm;
|
||||
LPSFOLDER tmpFolder;
|
||||
|
||||
|
||||
|
@ -2667,20 +2666,20 @@ static LRESULT FILEDLG95_LOOKIN_DrawItem(LPDRAWITEMSTRUCT pDIStruct)
|
|||
|
||||
if(pDIStruct->itemID == liInfos->uSelectedItem)
|
||||
{
|
||||
ilItemImage = (HIMAGELIST) SHGetFileInfoA ((LPCSTR) tmpFolder->pidlItem,
|
||||
ilItemImage = (HIMAGELIST) SHGetFileInfoW ((LPCWSTR) tmpFolder->pidlItem,
|
||||
0,
|
||||
&sfi,
|
||||
sizeof (SHFILEINFOA),
|
||||
sizeof (sfi),
|
||||
SHGFI_PIDL | SHGFI_SMALLICON |
|
||||
SHGFI_OPENICON | SHGFI_SYSICONINDEX |
|
||||
SHGFI_DISPLAYNAME );
|
||||
}
|
||||
else
|
||||
{
|
||||
ilItemImage = (HIMAGELIST) SHGetFileInfoA ((LPCSTR) tmpFolder->pidlItem,
|
||||
ilItemImage = (HIMAGELIST) SHGetFileInfoW ((LPCWSTR) tmpFolder->pidlItem,
|
||||
0,
|
||||
&sfi,
|
||||
sizeof (SHFILEINFOA),
|
||||
sizeof (sfi),
|
||||
SHGFI_PIDL | SHGFI_SMALLICON |
|
||||
SHGFI_SYSICONINDEX |
|
||||
SHGFI_DISPLAYNAME);
|
||||
|
@ -2704,10 +2703,10 @@ static LRESULT FILEDLG95_LOOKIN_DrawItem(LPDRAWITEMSTRUCT pDIStruct)
|
|||
if(pDIStruct->itemState & ODS_COMBOBOXEDIT)
|
||||
{
|
||||
iIndentation = 0;
|
||||
ilItemImage = (HIMAGELIST) SHGetFileInfoA ((LPCSTR) tmpFolder->pidlItem,
|
||||
ilItemImage = (HIMAGELIST) SHGetFileInfoW ((LPCWSTR) tmpFolder->pidlItem,
|
||||
0,
|
||||
&sfi,
|
||||
sizeof (SHFILEINFOA),
|
||||
sizeof (sfi),
|
||||
SHGFI_PIDL | SHGFI_SMALLICON | SHGFI_OPENICON
|
||||
| SHGFI_SYSICONINDEX | SHGFI_DISPLAYNAME );
|
||||
|
||||
|
@ -2725,7 +2724,7 @@ static LRESULT FILEDLG95_LOOKIN_DrawItem(LPDRAWITEMSTRUCT pDIStruct)
|
|||
rectIcon.bottom = pDIStruct->rcItem.bottom;
|
||||
|
||||
/* Initialise the text display area */
|
||||
GetTextMetricsA(pDIStruct->hDC, &tm);
|
||||
GetTextMetricsW(pDIStruct->hDC, &tm);
|
||||
rectText.left = rectIcon.right;
|
||||
rectText.top =
|
||||
(pDIStruct->rcItem.top + pDIStruct->rcItem.bottom - tm.tmHeight) / 2;
|
||||
|
@ -2743,7 +2742,7 @@ static LRESULT FILEDLG95_LOOKIN_DrawItem(LPDRAWITEMSTRUCT pDIStruct)
|
|||
|
||||
/* Draw the associated text */
|
||||
if(sfi.szDisplayName)
|
||||
TextOutA(pDIStruct->hDC,rectText.left,rectText.top,sfi.szDisplayName,strlen(sfi.szDisplayName));
|
||||
TextOutW(pDIStruct->hDC,rectText.left,rectText.top,sfi.szDisplayName,lstrlenW(sfi.szDisplayName));
|
||||
|
||||
|
||||
return NOERROR;
|
||||
|
@ -2798,7 +2797,7 @@ static BOOL FILEDLG95_LOOKIN_OnCommand(HWND hwnd, WORD wNotifyCode)
|
|||
static int FILEDLG95_LOOKIN_AddItem(HWND hwnd,LPITEMIDLIST pidl, int iInsertId)
|
||||
{
|
||||
LPITEMIDLIST pidlNext;
|
||||
SHFILEINFOA sfi;
|
||||
SHFILEINFOW sfi;
|
||||
SFOLDER *tmpFolder;
|
||||
LookInInfos *liInfos;
|
||||
|
||||
|
@ -2826,20 +2825,20 @@ static int FILEDLG95_LOOKIN_AddItem(HWND hwnd,LPITEMIDLIST pidl, int iInsertId)
|
|||
liInfos->iMaxIndentation = tmpFolder->m_iIndent;
|
||||
|
||||
sfi.dwAttributes = SFGAO_FILESYSANCESTOR | SFGAO_FILESYSTEM;
|
||||
SHGetFileInfoA((LPSTR)pidl,
|
||||
SHGetFileInfoW((LPCWSTR)pidl,
|
||||
0,
|
||||
&sfi,
|
||||
sizeof(sfi),
|
||||
SHGFI_DISPLAYNAME | SHGFI_SYSICONINDEX
|
||||
| SHGFI_PIDL | SHGFI_SMALLICON | SHGFI_ATTRIBUTES | SHGFI_ATTR_SPECIFIED);
|
||||
|
||||
TRACE("-- Add %s attr=%08x\n", sfi.szDisplayName, sfi.dwAttributes);
|
||||
TRACE("-- Add %s attr=%08x\n", debugstr_w(sfi.szDisplayName), sfi.dwAttributes);
|
||||
|
||||
if((sfi.dwAttributes & SFGAO_FILESYSANCESTOR) || (sfi.dwAttributes & SFGAO_FILESYSTEM))
|
||||
{
|
||||
int iItemID;
|
||||
|
||||
TRACE("-- Add %s at %u\n", sfi.szDisplayName, tmpFolder->m_iIndent);
|
||||
TRACE("-- Add %s at %u\n", debugstr_w(sfi.szDisplayName), tmpFolder->m_iIndent);
|
||||
|
||||
/* Add the item at the end of the list */
|
||||
if(iInsertId < 0)
|
||||
|
@ -3192,8 +3191,8 @@ static int FILEDLG95_FILENAME_GetFileNames (HWND hwnd, LPWSTR * lpstrFileList, U
|
|||
/* single, unquoted string */
|
||||
if ((nStrLen > 0) && (*sizeUsed == 0) )
|
||||
{
|
||||
strcpyW(*lpstrFileList, lpstrEdit);
|
||||
nFileIndex = strlenW(lpstrEdit) + 1;
|
||||
lstrcpyW(*lpstrFileList, lpstrEdit);
|
||||
nFileIndex = lstrlenW(lpstrEdit) + 1;
|
||||
(*sizeUsed) = nFileIndex;
|
||||
nFileCount = 1;
|
||||
}
|
||||
|
@ -3959,7 +3958,7 @@ short WINAPI GetFileTitleW(LPCWSTR lpFile, LPWSTR lpTitle, WORD cbBuf)
|
|||
if(lpFile == NULL || lpTitle == NULL)
|
||||
return -1;
|
||||
|
||||
len = strlenW(lpFile);
|
||||
len = lstrlenW(lpFile);
|
||||
|
||||
if (len == 0)
|
||||
return -1;
|
||||
|
@ -3986,10 +3985,10 @@ short WINAPI GetFileTitleW(LPCWSTR lpFile, LPWSTR lpTitle, WORD cbBuf)
|
|||
|
||||
TRACE("---> %s\n", debugstr_w(&lpFile[i]));
|
||||
|
||||
len = strlenW(lpFile+i)+1;
|
||||
len = lstrlenW(lpFile+i)+1;
|
||||
if(cbBuf < len)
|
||||
return len;
|
||||
|
||||
strcpyW(lpTitle, &lpFile[i]);
|
||||
lstrcpyW(lpTitle, &lpFile[i]);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue