Handle ascii & unicode drag and drop structures in DragQueryFileA &

DragQueryFileW.
This commit is contained in:
Sander van Leeuwen 2002-06-10 02:29:09 +00:00 committed by Alexandre Julliard
parent 85844e506d
commit ddf16e017c
1 changed files with 36 additions and 0 deletions

View File

@ -590,6 +590,24 @@ UINT WINAPI DragQueryFileA(
lpDrop = (LPSTR) lpDropFileStruct + lpDropFileStruct->pFiles;
if(lpDropFileStruct->fWide == TRUE) {
LPWSTR lpszFileW = NULL;
if(lpszFile) {
lpszFileW = (LPWSTR) HeapAlloc(GetProcessHeap(), 0, lLength*sizeof(WCHAR));
if(lpszFileW == NULL) {
goto end;
}
}
i = DragQueryFileW(hDrop, lFile, lpszFileW, lLength);
if(lpszFileW) {
WideCharToMultiByte(CP_ACP, 0, lpszFileW, -1, lpszFile, lLength, 0, NULL);
HeapFree(GetProcessHeap(), 0, lpszFileW);
}
goto end;
}
while (i++ < lFile)
{
while (*lpDrop++); /* skip filename */
@ -629,6 +647,24 @@ UINT WINAPI DragQueryFileW(
lpwDrop = (LPWSTR) ((LPSTR)lpDropFileStruct + lpDropFileStruct->pFiles);
if(lpDropFileStruct->fWide == FALSE) {
LPSTR lpszFileA = NULL;
if(lpszwFile) {
lpszFileA = (LPSTR) HeapAlloc(GetProcessHeap(), 0, lLength);
if(lpszFileA == NULL) {
goto end;
}
}
i = DragQueryFileA(hDrop, lFile, lpszFileA, lLength);
if(lpszFileA) {
MultiByteToWideChar(CP_ACP, 0, lpszFileA, -1, lpszwFile, lLength);
HeapFree(GetProcessHeap(), 0, lpszFileA);
}
goto end;
}
i = 0;
while (i++ < lFile)
{