mirror of
https://github.com/reactos/reactos.git
synced 2025-06-06 18:00:41 +00:00
[User32] Support WM_COPYGLOBALDATA
Implement support for WM_COPYGLOBALDATA. Needs more tests. Tested DropTest from CORE-15836.
This commit is contained in:
parent
77e0409ea9
commit
bc534efbc5
2 changed files with 36 additions and 1 deletions
|
@ -748,6 +748,12 @@ User32DefWindowProc(HWND hWnd,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case WM_COPYGLOBALDATA:
|
||||||
|
{
|
||||||
|
TRACE("WM_COPYGLOBALDATA hGlobal %p Size %d Flags 0x%x\n",lParam,wParam,GlobalFlags((HGLOBAL)lParam));
|
||||||
|
return lParam;
|
||||||
|
}
|
||||||
|
|
||||||
/* Move to Win32k !*/
|
/* Move to Win32k !*/
|
||||||
case WM_SHOWWINDOW:
|
case WM_SHOWWINDOW:
|
||||||
if (!lParam) break; // Call when it is necessary.
|
if (!lParam) break; // Call when it is necessary.
|
||||||
|
|
|
@ -392,6 +392,13 @@ MsgiUMToKMMessage(PMSG UMMsg, PMSG KMMsg, BOOL Posted)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case WM_COPYGLOBALDATA:
|
||||||
|
{
|
||||||
|
KMMsg->lParam = (LPARAM)GlobalLock((HGLOBAL)UMMsg->lParam);;
|
||||||
|
TRACE("WM_COPYGLOBALDATA get data ptr %p\n",KMMsg->lParam);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -408,6 +415,11 @@ MsgiUMToKMCleanup(PMSG UMMsg, PMSG KMMsg)
|
||||||
case WM_COPYDATA:
|
case WM_COPYDATA:
|
||||||
HeapFree(GetProcessHeap(), 0, (LPVOID) KMMsg->lParam);
|
HeapFree(GetProcessHeap(), 0, (LPVOID) KMMsg->lParam);
|
||||||
break;
|
break;
|
||||||
|
case WM_COPYGLOBALDATA:
|
||||||
|
TRACE("WM_COPYGLOBALDATA cleanup return\n");
|
||||||
|
GlobalUnlock((HGLOBAL)UMMsg->lParam);
|
||||||
|
GlobalFree((HGLOBAL)UMMsg->lParam);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -452,6 +464,18 @@ MsgiKMToUMMessage(PMSG KMMsg, PMSG UMMsg)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case WM_COPYGLOBALDATA:
|
||||||
|
{
|
||||||
|
PVOID Data;
|
||||||
|
HGLOBAL hGlobal = GlobalAlloc(GHND | GMEM_SHARE, KMMsg->wParam);
|
||||||
|
Data = GlobalLock(hGlobal);
|
||||||
|
if (Data) RtlCopyMemory(Data, (PVOID)KMMsg->lParam, KMMsg->wParam);
|
||||||
|
GlobalUnlock(hGlobal);
|
||||||
|
TRACE("WM_COPYGLOBALDATA to User hGlobal %p\n",hGlobal);
|
||||||
|
UMMsg->lParam = (LPARAM)hGlobal;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -465,7 +489,7 @@ MsgiKMToUMCleanup(PMSG KMMsg, PMSG UMMsg)
|
||||||
switch (KMMsg->message)
|
switch (KMMsg->message)
|
||||||
{
|
{
|
||||||
case WM_DDE_EXECUTE:
|
case WM_DDE_EXECUTE:
|
||||||
#ifdef TODO
|
#ifdef TODO // Kept as historic.
|
||||||
HeapFree(GetProcessHeap(), 0, (LPVOID) KMMsg->lParam);
|
HeapFree(GetProcessHeap(), 0, (LPVOID) KMMsg->lParam);
|
||||||
GlobalUnlock((HGLOBAL) UMMsg->lParam);
|
GlobalUnlock((HGLOBAL) UMMsg->lParam);
|
||||||
#endif
|
#endif
|
||||||
|
@ -2935,6 +2959,11 @@ User32CallWindowProcFromKernel(PVOID Arguments, ULONG ArgumentLength)
|
||||||
TRACE("WM_CREATE CB %p lParam %p\n",CallbackArgs, KMMsg.lParam);
|
TRACE("WM_CREATE CB %p lParam %p\n",CallbackArgs, KMMsg.lParam);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case WM_NCCREATE:
|
||||||
|
{
|
||||||
|
TRACE("WM_NCCREATE CB %p lParam %p\n",CallbackArgs, KMMsg.lParam);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case WM_SYSTIMER:
|
case WM_SYSTIMER:
|
||||||
{
|
{
|
||||||
TRACE("WM_SYSTIMER %p\n",KMMsg.hwnd);
|
TRACE("WM_SYSTIMER %p\n",KMMsg.hwnd);
|
||||||
|
|
Loading…
Reference in a new issue