Fix Drop file with SDL/Win32. implement it with plain win32
we have to handle both unicode and non unicode builds
This commit is contained in:
parent
cb2d479867
commit
01c6a9cd09
13
src/input.c
13
src/input.c
@ -1014,10 +1014,23 @@ int Get_input(int sleep_time)
|
|||||||
Drop_file_name=calloc(len+1,1);
|
Drop_file_name=calloc(len+1,1);
|
||||||
if (Drop_file_name)
|
if (Drop_file_name)
|
||||||
{
|
{
|
||||||
|
#ifdef UNICODE
|
||||||
|
TCHAR LongDropFileName[MAX_PATH];
|
||||||
|
TCHAR ShortDropFileName[MAX_PATH];
|
||||||
|
if (DragQueryFile(hdrop, 0 , LongDropFileName ,(UINT) MAX_PATH)
|
||||||
|
&& GetShortPathName(LongDropFileName, ShortDropFileName, MAX_PATH))
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for (i = 0; ShortDropFileName[i] != 0; i++)
|
||||||
|
Drop_file_name[i] = (char)ShortDropFileName[i];
|
||||||
|
Drop_file_name[i] = 0;
|
||||||
|
}
|
||||||
|
#else
|
||||||
if (DragQueryFile(hdrop,0 ,(LPTSTR) Drop_file_name ,(UINT) MAX_PATH))
|
if (DragQueryFile(hdrop,0 ,(LPTSTR) Drop_file_name ,(UINT) MAX_PATH))
|
||||||
{
|
{
|
||||||
// Success
|
// Success
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
free(Drop_file_name);
|
free(Drop_file_name);
|
||||||
|
|||||||
@ -166,6 +166,32 @@ static LRESULT CALLBACK Win32_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LP
|
|||||||
case WM_CHAR:
|
case WM_CHAR:
|
||||||
Key_ANSI = Key_UNICODE = wParam;
|
Key_ANSI = Key_UNICODE = wParam;
|
||||||
return 0;
|
return 0;
|
||||||
|
case WM_DROPFILES:
|
||||||
|
{
|
||||||
|
int file_count;
|
||||||
|
HDROP hDrop = (HDROP)wParam;
|
||||||
|
|
||||||
|
file_count = DragQueryFile(hDrop, (UINT)-1, NULL , 0);
|
||||||
|
if (file_count > 0)
|
||||||
|
{
|
||||||
|
TCHAR LongDropFileName[MAX_PATH];
|
||||||
|
TCHAR ShortDropFileName[MAX_PATH];
|
||||||
|
if (DragQueryFile(hDrop, 0 , LongDropFileName ,(UINT) MAX_PATH)
|
||||||
|
&& GetShortPathName(LongDropFileName, ShortDropFileName, MAX_PATH))
|
||||||
|
{
|
||||||
|
Drop_file_name = (char *)malloc(lstrlen(ShortDropFileName) + 1);
|
||||||
|
if (Drop_file_name != NULL)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; ShortDropFileName[i] != 0; i++)
|
||||||
|
Drop_file_name[i] = (char)ShortDropFileName[i];
|
||||||
|
Drop_file_name[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
char msg[256];
|
char msg[256];
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user