我正在编写一个接受文件拖放的C程序.当它以32位编译时,无论如何都适用.但是当它以64位编译时,它仅适用于从64位应用程序拖动的文件:
我仍然得到WM_DROPFILES消息,但DragQueryFile没有返回任何内容(文件数为0).
这似乎是许多应用程序的问题,但我想知道是否有解决方法.
编辑:
所以数据在这里,某处,我只是不知道如何检索它们(至少没有丑陋的黑客).
编辑2:
我将不提供任何代码,因为我认为那些回答的人知道这个影响大量软件的问题.
------编辑----------
重现它的最小代码
LRESULT WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
WCHAR sz[32];
switch (uMsg)
{
case WM_DROPFILES:
swprintf(sz, L"%p", wParam);// look for wParam
MessageBox(0,0,sz,0);
break;
case WM_NCCREATE:
DragAcceptFiles(hwnd, TRUE);
break;
case WM_NCDESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
void minimal()
{
static WNDCLASS wndcls = { 0, WindowProc, 0, …Run Code Online (Sandbox Code Playgroud)