Handle ascii & unicode drag and drop structures in DragQueryFileA &
DragQueryFileW.
This commit is contained in:
parent
85844e506d
commit
ddf16e017c
|
@ -590,6 +590,24 @@ UINT WINAPI DragQueryFileA(
|
||||||
|
|
||||||
lpDrop = (LPSTR) lpDropFileStruct + lpDropFileStruct->pFiles;
|
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 (i++ < lFile)
|
||||||
{
|
{
|
||||||
while (*lpDrop++); /* skip filename */
|
while (*lpDrop++); /* skip filename */
|
||||||
|
@ -629,6 +647,24 @@ UINT WINAPI DragQueryFileW(
|
||||||
|
|
||||||
lpwDrop = (LPWSTR) ((LPSTR)lpDropFileStruct + lpDropFileStruct->pFiles);
|
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;
|
i = 0;
|
||||||
while (i++ < lFile)
|
while (i++ < lFile)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue