info->windowName = HeapAlloc( GetProcessHeap(), 0, sizeof(L"#65535") );
if (info->windowName != NULL)
{
- swprintf((LPWSTR)info->windowName, L"#%d", GET_WORD(p + 1));
+ wsprintf((LPWSTR)info->windowName, L"#%d", GET_WORD(p + 1));
info->windowNameFree = TRUE;
}
else
{
PKMDDELPARAM DdeLparam;
DdeLparam = HeapAlloc(GetProcessHeap(), 0, sizeof(KMDDELPARAM));
- if (NULL == DdeLparam)
+ if (NULL == DdeLparam || !UnpackDDElParam(
+ UMMsg->message, UMMsg->lParam,
+ &DdeLparam->uiLo, &DdeLparam->uiHi)) return FALSE;
+ /*
+ If this is a reply to WM_DDE_EXECUTE then
+ uiHi will contain a hMem, hence >= 0x10000.
+ Otherwise, it will be be an atom, a 16-bit value.
+ */
+ if(DdeLparam->uiHi >= 0x10000)
{
- return FALSE;
- }
- if (Posted)
- {
- DdeLparam->Packed = TRUE;
- if (! UnpackDDElParam(UMMsg->message, UMMsg->lParam,
- &DdeLparam->Value.Packed.uiLo,
- &DdeLparam->Value.Packed.uiHi))
- {
- return FALSE;
- }
- if (0 != HIWORD(DdeLparam->Value.Packed.uiHi))
- {
- /* uiHi should contain a hMem from WM_DDE_EXECUTE */
- HGLOBAL h = DdeGetPair((HGLOBAL)(ULONG_PTR)DdeLparam->Value.Packed.uiHi);
+ HGLOBAL h = DdeGetPair((HGLOBAL)(ULONG_PTR)DdeLparam->uiHi);
if (NULL != h)
{
- GlobalFree((HGLOBAL)(ULONG_PTR)DdeLparam->Value.Packed.uiHi);
- DdeLparam->Value.Packed.uiHi = (UINT_PTR) h;
+ GlobalFree((HGLOBAL)(ULONG_PTR)DdeLparam->uiHi);
+ DdeLparam->uiHi = (UINT_PTR) h;
}
}
FreeDDElParam(UMMsg->message, UMMsg->lParam);
- }
- else
- {
- DdeLparam->Packed = FALSE;
- DdeLparam->Value.Unpacked = UMMsg->lParam;
- }
KMMsg->lParam = (LPARAM) DdeLparam;
}
break;
case WM_DDE_ACK:
{
PKMDDELPARAM DdeLparam = (PKMDDELPARAM) KMMsg->lParam;
- if (DdeLparam->Packed)
- {
- UMMsg->lParam = PackDDElParam(KMMsg->message,
- DdeLparam->Value.Packed.uiLo,
- DdeLparam->Value.Packed.uiHi);
+ UMMsg->lParam = PackDDElParam(KMMsg->message, DdeLparam->uiLo, DdeLparam->uiHi);
}
- else
- {
- UMMsg->lParam = DdeLparam->Value.Unpacked;
- }
- }
break;
case WM_DDE_EXECUTE:
#define WNDS_HASCREATESTRUCTNAME 0X00020000
#define WNDS_SERVERSIDEWINDOWPROC 0x00040000 // Call proc inside win32k.
#define WNDS_ANSIWINDOWPROC 0x00080000
-#define WNDS_BEGINGACTIVATED 0x00100000
+#define WNDS_BEINGACTIVATED 0x00100000
#define WNDS_HASPALETTE 0x00200000
#define WNDS_PAINTNOTPROCESSED 0x00400000
#define WNDS_SYNCPAINTPENDING 0x00800000
HANDLE Handle,
PICONINFO IconInfo);
+#if 0 // Correct type.
BOOL
NTAPI
NtUserSetCursorIconData(
- HANDLE Handle,
- PBOOL fIcon,
- POINT *Hotspot,
- HMODULE hModule,
- HRSRC hRsrc,
- HRSRC hGroupRsrc);
+ HCURSOR hCursor,
+ PUNICODE_STRING ModuleName,
+ PUNICODE_STRING ResourceName,
+ PCURSORDATA pCursorData);
+#endif
DWORD
NTAPI
typedef struct tagKMDDELPARAM
{
- BOOL Packed;
- union
- {
- struct
- {
UINT_PTR uiLo;
UINT_PTR uiHi;
- } Packed;
- LPARAM Unpacked;
- } Value;
} KMDDELPARAM, *PKMDDELPARAM;
IN HWND hWnd,
IN DWORD dwFlags);
+BOOL
+NTAPI
+NtUserSetCursorIconData(
+ HANDLE Handle,
+ PBOOL fIcon,
+ POINT *Hotspot,
+ HMODULE hModule,
+ HRSRC hRsrc,
+ HRSRC hGroupRsrc);
+
typedef struct _SETSCROLLBARINFO
{
int nTrackPos;