Sync with trunk r63430.

svn path=/branches/shell-experiments/; revision=63433
This commit is contained in:
David Quintana 2014-05-24 20:29:19 +00:00
commit d5e23caf7a
136 changed files with 6159 additions and 3600 deletions

View file

@ -118,8 +118,8 @@ BmfdQueryGlyphAndBitmap(
}
else
{
cxDst = cxSrc * yScale;
cyDst = cySrc * xScale;
cxDst = cxSrc * xScale;
cyDst = cySrc * yScale;
}
cjDstRow = (cxDst + 7) / 8;
@ -154,7 +154,7 @@ BmfdQueryGlyphAndBitmap(
}
/* Fill GLYPHBITS structure */
pgb->ptlOrigin.x = yScale * pface->wA;
pgb->ptlOrigin.x = xScale * pface->wA;
pgb->ptlOrigin.y = - yScale * pface->wAscent;
pgb->sizlBitmap.cx = cxDst;
pgb->sizlBitmap.cy = cyDst;

View file

@ -29,6 +29,8 @@ BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, SURFOBJ *Ma
LONG DstWidth;
LONG SrcHeight;
LONG SrcWidth;
LONG MaskCy;
LONG SourceCy;
ULONG Color;
ULONG Dest, Source = 0, Pattern = 0;
@ -56,6 +58,7 @@ BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, SURFOBJ *Ma
if (UsesSource)
{
SourceCy = abs(SourceSurf->sizlBitmap.cy);
fnSource_GetPixel = DibFunctionsForBitmapFormat[SourceSurf->iBitmapFormat].DIB_GetPixel;
DPRINT("Source BPP: %u, srcRect: (%d,%d)-(%d,%d)\n",
BitsPerFormat(SourceSurf->iBitmapFormat), SourceRect->left, SourceRect->top, SourceRect->right, SourceRect->bottom);
@ -64,6 +67,7 @@ BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, SURFOBJ *Ma
if (MaskSurf)
{
fnMask_GetPixel = DibFunctionsForBitmapFormat[MaskSurf->iBitmapFormat].DIB_GetPixel;
MaskCy = abs(MaskSurf->sizlBitmap.cy);
}
DstHeight = DestRect->bottom - DestRect->top;
@ -124,7 +128,7 @@ BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, SURFOBJ *Ma
{
sx = SourceRect->left+(DesX - DestRect->left) * SrcWidth / DstWidth;
if (sx < 0 || sy < 0 ||
MaskSurf->sizlBitmap.cx < sx || MaskSurf->sizlBitmap.cy < sy ||
MaskSurf->sizlBitmap.cx < sx || MaskCy < sy ||
fnMask_GetPixel(MaskSurf, sx, sy) != 0)
{
CanDraw = FALSE;
@ -135,7 +139,7 @@ BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, SURFOBJ *Ma
{
sx = SourceRect->left+(DesX - DestRect->left) * SrcWidth / DstWidth;
if (sx >= 0 && sy >= 0 &&
SourceSurf->sizlBitmap.cx > sx && SourceSurf->sizlBitmap.cy > sy)
SourceSurf->sizlBitmap.cx > sx && SourceCy > sy)
{
Source = XLATEOBJ_iXlate(ColorTranslation, fnSource_GetPixel(SourceSurf, sx, sy));
}

View file

@ -19,8 +19,9 @@
/*!
* \brief DRIVEROBJ cleanup function
*/
BOOL NTAPI
DRIVEROBJ_Cleanup(PVOID pObject)
VOID
NTAPI
DRIVEROBJ_vCleanup(PVOID pObject)
{
PEDRIVEROBJ pedo = pObject;
FREEOBJPROC pFreeProc;
@ -28,10 +29,8 @@ DRIVEROBJ_Cleanup(PVOID pObject)
pFreeProc = pedo->drvobj.pFreeProc;
if (pFreeProc)
{
return pFreeProc(pedo->drvobj.pvObj);
NT_VERIFY(pFreeProc(pedo->drvobj.pvObj));
}
return TRUE;
}
/** Public interface **********************************************************/

View file

@ -11,7 +11,7 @@ typedef struct _EDRIVEROBJ
typedef DRIVEROBJ *PDRIVEROBJ;
/* Cleanup function */
BOOL NTAPI DRIVEROBJ_Cleanup(PVOID pObject);
VOID NTAPI DRIVEROBJ_vCleanup(PVOID pObject);
#define DRIVEROBJ_AllocObjectWithHandle() ((PEDRIVEROBJ)GDIOBJ_AllocObjWithHandle(GDI_OBJECT_TYPE_DRIVEROBJ, sizeof(EDRIVEROBJ)))

View file

@ -62,9 +62,9 @@ BitmapFormat(ULONG cBits, ULONG iCompression)
}
}
BOOL
VOID
NTAPI
SURFACE_Cleanup(PVOID ObjectBody)
SURFACE_vCleanup(PVOID ObjectBody)
{
PSURFACE psurf = (PSURFACE)ObjectBody;
PVOID pvBits = psurf->SurfObj.pvBits;
@ -108,8 +108,6 @@ SURFACE_Cleanup(PVOID ObjectBody)
{
PALETTE_ShareUnlockPalette(psurf->ppal);
}
return TRUE;
}

View file

@ -111,9 +111,9 @@ ULONG
FASTCALL
BitmapFormat(ULONG cBits, ULONG iCompression);
BOOL
VOID
NTAPI
SURFACE_Cleanup(PVOID ObjectBody);
SURFACE_vCleanup(PVOID ObjectBody);
PSURFACE
NTAPI

View file

@ -114,9 +114,9 @@ BRUSH_vFreeBrushAttr(PBRUSH pbr)
pbr->pBrushAttr = &pbr->BrushAttr;
}
BOOL
VOID
NTAPI
BRUSH_Cleanup(PVOID ObjectBody)
BRUSH_vCleanup(PVOID ObjectBody)
{
PBRUSH pbrush = (PBRUSH)ObjectBody;
if (pbrush->hbmPattern)
@ -136,8 +136,6 @@ BRUSH_Cleanup(PVOID ObjectBody)
{
ExFreePool(pbrush->pStyle);
}
return TRUE;
}
INT

View file

@ -94,7 +94,7 @@ typedef struct _EBRUSHOBJ
#define BRUSH_ShareUnlockBrush(pBrush) GDIOBJ_vDereferenceObject((POBJ)pBrush)
INT FASTCALL BRUSH_GetObject (PBRUSH GdiObject, INT Count, LPLOGBRUSH Buffer);
BOOL NTAPI BRUSH_Cleanup(PVOID ObjectBody);
VOID NTAPI BRUSH_vCleanup(PVOID ObjectBody);
extern HSURF gahsurfHatch[HS_DDI_MAX];

View file

@ -194,7 +194,7 @@ INIT_FUNCTION NTSTATUS NTAPI InitDcImpl(VOID);
PPDEVOBJ FASTCALL IntEnumHDev(VOID);
PDC NTAPI DC_AllocDcWithHandle(VOID);
BOOL NTAPI DC_bAllocDcAttr(PDC pdc);
BOOL NTAPI DC_Cleanup(PVOID ObjectBody);
VOID NTAPI DC_vCleanup(PVOID ObjectBody);
BOOL FASTCALL IntGdiDeleteDC(HDC, BOOL);
BOOL FASTCALL DC_InvertXform(const XFORM *xformSrc, XFORM *xformDest);

View file

@ -344,9 +344,9 @@ DC_vInitDc(
}
}
BOOL
VOID
NTAPI
DC_Cleanup(PVOID ObjectBody)
DC_vCleanup(PVOID ObjectBody)
{
PDC pdc = (PDC)ObjectBody;
@ -391,8 +391,6 @@ DC_Cleanup(PVOID ObjectBody)
SURFACE_ShareUnlockSurface(pdc->dclevel.pSurface);
PDEVOBJ_vRelease(pdc->ppdev) ;
return TRUE;
}
VOID

View file

@ -87,53 +87,54 @@ ULONG gulFirstFree;
ULONG gulFirstUnused;
static PPAGED_LOOKASIDE_LIST gpaLookasideList;
static BOOL NTAPI GDIOBJ_Cleanup(PVOID ObjectBody);
static VOID NTAPI GDIOBJ_vCleanup(PVOID ObjectBody);
static const
GDICLEANUPPROC
apfnCleanup[] =
{
NULL, /* 00 GDIObjType_DEF_TYPE */
DC_Cleanup, /* 01 GDIObjType_DC_TYPE */
NULL, /* 02 GDIObjType_UNUSED1_TYPE */
NULL, /* 03 GDIObjType_UNUSED2_TYPE */
REGION_Cleanup, /* 04 GDIObjType_RGN_TYPE */
SURFACE_Cleanup, /* 05 GDIObjType_SURF_TYPE */
GDIOBJ_Cleanup, /* 06 GDIObjType_CLIENTOBJ_TYPE */
GDIOBJ_Cleanup, /* 07 GDIObjType_PATH_TYPE */
PALETTE_Cleanup, /* 08 GDIObjType_PAL_TYPE */
GDIOBJ_Cleanup, /* 09 GDIObjType_ICMLCS_TYPE */
GDIOBJ_Cleanup, /* 0a GDIObjType_LFONT_TYPE */
NULL, /* 0b GDIObjType_RFONT_TYPE, unused */
NULL, /* 0c GDIObjType_PFE_TYPE, unused */
NULL, /* 0d GDIObjType_PFT_TYPE, unused */
GDIOBJ_Cleanup, /* 0e GDIObjType_ICMCXF_TYPE */
NULL, /* 0f GDIObjType_SPRITE_TYPE, unused */
BRUSH_Cleanup, /* 10 GDIObjType_BRUSH_TYPE, BRUSH, PEN, EXTPEN */
NULL, /* 11 GDIObjType_UMPD_TYPE, unused */
NULL, /* 12 GDIObjType_UNUSED4_TYPE */
NULL, /* 13 GDIObjType_SPACE_TYPE, unused */
NULL, /* 14 GDIObjType_UNUSED5_TYPE */
NULL, /* 15 GDIObjType_META_TYPE, unused */
NULL, /* 16 GDIObjType_EFSTATE_TYPE, unused */
NULL, /* 17 GDIObjType_BMFD_TYPE, unused */
NULL, /* 18 GDIObjType_VTFD_TYPE, unused */
NULL, /* 19 GDIObjType_TTFD_TYPE, unused */
NULL, /* 1a GDIObjType_RC_TYPE, unused */
NULL, /* 1b GDIObjType_TEMP_TYPE, unused */
DRIVEROBJ_Cleanup,/* 1c GDIObjType_DRVOBJ_TYPE */
NULL, /* 1d GDIObjType_DCIOBJ_TYPE, unused */
NULL, /* 1e GDIObjType_SPOOL_TYPE, unused */
NULL, /* 1f reserved entry */
NULL, /* 00 GDIObjType_DEF_TYPE */
DC_vCleanup, /* 01 GDIObjType_DC_TYPE */
NULL, /* 02 GDIObjType_UNUSED1_TYPE */
NULL, /* 03 GDIObjType_UNUSED2_TYPE */
REGION_vCleanup, /* 04 GDIObjType_RGN_TYPE */
SURFACE_vCleanup, /* 05 GDIObjType_SURF_TYPE */
GDIOBJ_vCleanup, /* 06 GDIObjType_CLIENTOBJ_TYPE */
GDIOBJ_vCleanup, /* 07 GDIObjType_PATH_TYPE */
PALETTE_vCleanup, /* 08 GDIObjType_PAL_TYPE */
GDIOBJ_vCleanup, /* 09 GDIObjType_ICMLCS_TYPE */
GDIOBJ_vCleanup, /* 0a GDIObjType_LFONT_TYPE */
NULL, /* 0b GDIObjType_RFONT_TYPE, unused */
NULL, /* 0c GDIObjType_PFE_TYPE, unused */
NULL, /* 0d GDIObjType_PFT_TYPE, unused */
GDIOBJ_vCleanup, /* 0e GDIObjType_ICMCXF_TYPE */
NULL, /* 0f GDIObjType_SPRITE_TYPE, unused */
BRUSH_vCleanup, /* 10 GDIObjType_BRUSH_TYPE, BRUSH, PEN, EXTPEN */
NULL, /* 11 GDIObjType_UMPD_TYPE, unused */
NULL, /* 12 GDIObjType_UNUSED4_TYPE */
NULL, /* 13 GDIObjType_SPACE_TYPE, unused */
NULL, /* 14 GDIObjType_UNUSED5_TYPE */
NULL, /* 15 GDIObjType_META_TYPE, unused */
NULL, /* 16 GDIObjType_EFSTATE_TYPE, unused */
NULL, /* 17 GDIObjType_BMFD_TYPE, unused */
NULL, /* 18 GDIObjType_VTFD_TYPE, unused */
NULL, /* 19 GDIObjType_TTFD_TYPE, unused */
NULL, /* 1a GDIObjType_RC_TYPE, unused */
NULL, /* 1b GDIObjType_TEMP_TYPE, unused */
DRIVEROBJ_vCleanup,/* 1c GDIObjType_DRVOBJ_TYPE */
NULL, /* 1d GDIObjType_DCIOBJ_TYPE, unused */
NULL, /* 1e GDIObjType_SPOOL_TYPE, unused */
NULL, /* 1f reserved entry */
};
/* INTERNAL FUNCTIONS ********************************************************/
static
BOOL NTAPI
GDIOBJ_Cleanup(PVOID ObjectBody)
VOID
NTAPI
GDIOBJ_vCleanup(PVOID ObjectBody)
{
return TRUE;
/* Nothing to do */
}
static

View file

@ -28,7 +28,7 @@ extern PGDI_HANDLE_TABLE GdiHandleTable;
typedef PVOID PGDIOBJ;
typedef BOOL (NTAPI *GDICLEANUPPROC)(PVOID ObjectBody);
typedef VOID (NTAPI *GDICLEANUPPROC)(PVOID ObjectBody);
/* Every GDI Object must have this standard type of header.
* It's for thread locking. */

View file

@ -230,17 +230,15 @@ PALETTE_AllocPalWithHandle(
return ppal;
}
BOOL
VOID
NTAPI
PALETTE_Cleanup(PVOID ObjectBody)
PALETTE_vCleanup(PVOID ObjectBody)
{
PPALETTE pPal = (PPALETTE)ObjectBody;
if (pPal->IndexedColors && pPal->IndexedColors != pPal->apalColors)
{
ExFreePoolWithTag(pPal->IndexedColors, TAG_PALETTE);
}
return TRUE;
}
INT
@ -702,15 +700,15 @@ NtGdiGetNearestColor(
EngSetLastError(ERROR_INVALID_HANDLE);
return CLR_INVALID;
}
if(dc->dclevel.pSurface == NULL)
ppal = gppalMono;
else
ppal = dc->dclevel.pSurface->ppal;
/* Translate the color to the DC format */
Color = TranslateCOLORREF(dc, Color);
/* XLATE it back to RGB color space */
EXLATEOBJ_vInitialize(&exlo,
ppal,
@ -718,11 +716,11 @@ NtGdiGetNearestColor(
0,
RGB(0xff, 0xff, 0xff),
RGB(0, 0, 0));
nearest = XLATEOBJ_iXlate(&exlo.xlo, Color);
EXLATEOBJ_vCleanup(&exlo);
/* We're done */
DC_UnlockDc(dc);
@ -771,7 +769,7 @@ IntGdiRealizePalette(HDC hDC)
{
goto cleanup;
}
if(pdc->dctype == DCTYPE_DIRECT)
{
UNIMPLEMENTED;

View file

@ -117,9 +117,9 @@ PALETTE_vGetBitMasks(
PPALETTE ppal,
PULONG pulColors);
BOOL
VOID
NTAPI
PALETTE_Cleanup(PVOID ObjectBody);
PALETTE_vCleanup(PVOID ObjectBody);
FORCEINLINE
ULONG

View file

@ -2275,8 +2275,8 @@ IntSysCreateRectRgn(INT LeftRect, INT TopRect, INT RightRect, INT BottomRect)
return hrgn;
}
BOOL NTAPI
REGION_Cleanup(PVOID ObjectBody)
VOID NTAPI
REGION_vCleanup(PVOID ObjectBody)
{
PROSRGNDATA pRgn = (PROSRGNDATA)ObjectBody;
PPROCESSINFO ppi = PsGetCurrentProcessWin32Process();
@ -2288,7 +2288,6 @@ REGION_Cleanup(PVOID ObjectBody)
if (pRgn->Buffer && pRgn->Buffer != &pRgn->rdh.rcBound)
ExFreePoolWithTag(pRgn->Buffer, TAG_REGION);
return TRUE;
}
VOID FASTCALL

View file

@ -29,7 +29,7 @@ INT FASTCALL REGION_GetRgnBox(PROSRGNDATA Rgn, RECTL *pRect);
BOOL FASTCALL REGION_RectInRegion(PROSRGNDATA Rgn, const RECTL *rc);
BOOL FASTCALL REGION_CropAndOffsetRegion(PROSRGNDATA rgnDst, PROSRGNDATA rgnSrc, const RECTL *rect, const POINT *off);
VOID FASTCALL REGION_SetRectRgn(PROSRGNDATA pRgn, INT LeftRect, INT TopRect, INT RightRect, INT BottomRect);
BOOL NTAPI REGION_Cleanup(PVOID ObjectBody);
VOID NTAPI REGION_vCleanup(PVOID ObjectBody);
extern PROSRGNDATA prgnDefault;
extern HRGN hrgnDefault;

View file

@ -81,6 +81,7 @@ typedef struct _EVENTPROC_CALLBACK_ARGUMENTS
typedef struct _LOADMENU_CALLBACK_ARGUMENTS
{
HINSTANCE hModule;
LPCWSTR InterSource;
WCHAR MenuName[1];
} LOADMENU_CALLBACK_ARGUMENTS, *PLOADMENU_CALLBACK_ARGUMENTS;

View file

@ -884,7 +884,7 @@ co_IntCallLoadMenu( HINSTANCE hModule,
if (pMenuName->Length)
RtlCopyMemory(&Common->MenuName, pMenuName->Buffer, pMenuName->Length);
else
RtlCopyMemory(&Common->MenuName, &pMenuName->Buffer, sizeof(WCHAR));
Common->InterSource = pMenuName->Buffer;
ResultPointer = NULL;
ResultLength = sizeof(LRESULT);

View file

@ -51,7 +51,7 @@ IntDesktopObjectParse(IN PVOID ParseObject,
OBJECT_ATTRIBUTES ObjectAttributes;
PLIST_ENTRY NextEntry, ListHead;
PWINSTATION_OBJECT WinStaObject = (PWINSTATION_OBJECT)ParseObject;
PUNICODE_STRING DesktopName;
UNICODE_STRING DesktopName;
PBOOLEAN pContext = (PBOOLEAN) Context;
if(pContext)
@ -65,43 +65,40 @@ IntDesktopObjectParse(IN PVOID ParseObject,
/* Get the current desktop */
Desktop = CONTAINING_RECORD(NextEntry, DESKTOP, ListEntry);
/// @todo Don't mess around with the object headers!
/* Get its name */
_PRAGMA_WARNING_SUPPRESS(__WARNING_DEREF_NULL_PTR)
DesktopName = GET_DESKTOP_NAME(Desktop);
if (DesktopName)
/* Get the desktop name */
ASSERT(Desktop->pDeskInfo != NULL);
RtlInitUnicodeString(&DesktopName, Desktop->pDeskInfo->szDesktopName);
/* Compare the name */
if (RtlEqualUnicodeString(RemainingName,
&DesktopName,
(Attributes & OBJ_CASE_INSENSITIVE)))
{
/* Compare the name */
if (RtlEqualUnicodeString(RemainingName,
DesktopName,
(Attributes & OBJ_CASE_INSENSITIVE)))
/* We found a match. Did this come from a create? */
if (Context)
{
/* We found a match. Did this come from a create? */
if (Context)
/* Unless OPEN_IF was given, fail with an error */
if (!(Attributes & OBJ_OPENIF))
{
/* Unless OPEN_IF was given, fail with an error */
if (!(Attributes & OBJ_OPENIF))
{
/* Name collision */
return STATUS_OBJECT_NAME_COLLISION;
}
else
{
/* Otherwise, return with a warning only */
Status = STATUS_OBJECT_NAME_EXISTS;
}
/* Name collision */
return STATUS_OBJECT_NAME_COLLISION;
}
else
{
/* This was a real open, so this is OK */
Status = STATUS_SUCCESS;
/* Otherwise, return with a warning only */
Status = STATUS_OBJECT_NAME_EXISTS;
}
/* Reference the desktop and return it */
ObReferenceObject(Desktop);
*Object = Desktop;
return Status;
}
else
{
/* This was a real open, so this is OK */
Status = STATUS_SUCCESS;
}
/* Reference the desktop and return it */
ObReferenceObject(Desktop);
*Object = Desktop;
return Status;
}
/* Go to the next desktop */
@ -522,7 +519,7 @@ IntSetFocusMessageQueue(PUSER_MESSAGE_QUEUE NewQueue)
{
gpqForeground = pdo->ActiveMessageQueue;
}
else
else
{
gpqForeground = NULL;
ERR("ptiLastInput is CLEARED!!\n");

View file

@ -174,11 +174,6 @@ HDC FASTCALL UserGetDesktopDC(ULONG,BOOL,BOOL);
#define IntIsActiveDesktop(Desktop) \
((Desktop)->rpwinstaParent->ActiveDesktop == (Desktop))
#define GET_DESKTOP_NAME(d) \
OBJECT_HEADER_TO_NAME_INFO(OBJECT_TO_OBJECT_HEADER(d)) ? \
&(OBJECT_HEADER_TO_NAME_INFO(OBJECT_TO_OBJECT_HEADER(d))->Name) : \
NULL
HWND FASTCALL IntGetMessageWindow(VOID);
PWND FASTCALL UserGetMessageWindow(VOID);

View file

@ -901,7 +901,9 @@ IntGetSystemMenu(PWND Window, BOOL bRevert, BOOL RetMenu)
PMENU Menu, NewMenu = NULL, SysMenu = NULL, ret = NULL;
PTHREADINFO W32Thread;
HMENU hNewMenu, hSysMenu;
ROSMENUITEMINFO ItemInfoSet = {0};
ROSMENUITEMINFO ItemInfo = {0};
UNICODE_STRING MenuName;
if(bRevert)
{
@ -952,14 +954,21 @@ IntGetSystemMenu(PWND Window, BOOL bRevert, BOOL RetMenu)
}
SysMenu->fFlags |= MNF_SYSDESKMN;
SysMenu->hWnd = Window->head.h;
hNewMenu = co_IntLoadSysMenuTemplate();
//hNewMenu = co_IntLoadSysMenuTemplate();
//if ( Window->ExStyle & WS_EX_MDICHILD )
//hNewMenu = co_IntCallLoadMenu( NULL, L"SYSMENUMDI");
// else
//hNewMenu = co_IntCallLoadMenu( NULL, L"SYSMENU");
// Do the rest in here.
//{
// RtlInitUnicodeString( &MenuName, L"SYSMENUMDI");
// hNewMenu = co_IntCallLoadMenu( hModClient, &MenuName);
//}
//else
{
RtlInitUnicodeString( &MenuName, L"SYSMENU");
hNewMenu = co_IntCallLoadMenu( hModClient, &MenuName);
//ERR("%wZ\n",&MenuName);
}
if(!hNewMenu)
{
ERR("No Menu!!\n");
IntReleaseMenuObject(SysMenu);
UserDestroyMenu(hSysMenu);
return NULL;
@ -972,6 +981,21 @@ IntGetSystemMenu(PWND Window, BOOL bRevert, BOOL RetMenu)
return NULL;
}
// Do the rest in here.
Menu->fFlags |= MNS_CHECKORBMP | MNF_SYSDESKMN | MNF_POPUP;
ItemInfoSet.cbSize = sizeof( MENUITEMINFOW);
ItemInfoSet.fMask = MIIM_BITMAP;
ItemInfoSet.hbmpItem = HBMMENU_POPUP_CLOSE;
IntMenuItemInfo(Menu, SC_CLOSE, FALSE, &ItemInfoSet, TRUE, NULL);
ItemInfoSet.hbmpItem = HBMMENU_POPUP_RESTORE;
IntMenuItemInfo(Menu, SC_RESTORE, FALSE, &ItemInfoSet, TRUE, NULL);
ItemInfoSet.hbmpItem = HBMMENU_POPUP_MAXIMIZE;
IntMenuItemInfo(Menu, SC_MAXIMIZE, FALSE, &ItemInfoSet, TRUE, NULL);
ItemInfoSet.hbmpItem = HBMMENU_POPUP_MINIMIZE;
IntMenuItemInfo(Menu, SC_MINIMIZE, FALSE, &ItemInfoSet, TRUE, NULL);
NewMenu = IntCloneMenu(Menu);
if(NewMenu)
{

View file

@ -1210,7 +1210,7 @@ BuildDesktopNameList(
DWORD EntryCount;
ULONG ReturnLength;
WCHAR NullWchar;
PUNICODE_STRING DesktopName;
UNICODE_STRING DesktopName;
Status = IntValidateWindowStationHandle(hWindowStation,
KernelMode,
@ -1233,8 +1233,8 @@ BuildDesktopNameList(
DesktopEntry = DesktopEntry->Flink)
{
DesktopObject = CONTAINING_RECORD(DesktopEntry, DESKTOP, ListEntry);
DesktopName = GET_DESKTOP_NAME(DesktopObject);
if (DesktopName) ReturnLength += DesktopName->Length + sizeof(WCHAR);
RtlInitUnicodeString(&DesktopName, DesktopObject->pDeskInfo->szDesktopName);
ReturnLength += DesktopName.Length + sizeof(WCHAR);
EntryCount++;
}
TRACE("Required size: %lu Entry count: %lu\n", ReturnLength, EntryCount);
@ -1277,18 +1277,15 @@ BuildDesktopNameList(
DesktopEntry = DesktopEntry->Flink)
{
DesktopObject = CONTAINING_RECORD(DesktopEntry, DESKTOP, ListEntry);
_PRAGMA_WARNING_SUPPRESS(__WARNING_DEREF_NULL_PTR)
DesktopName = GET_DESKTOP_NAME(DesktopObject);/// @todo Don't mess around with the object headers!
if (!DesktopName) continue;
Status = MmCopyToCaller(lpBuffer, DesktopName->Buffer, DesktopName->Length);
RtlInitUnicodeString(&DesktopName, DesktopObject->pDeskInfo->szDesktopName);
Status = MmCopyToCaller(lpBuffer, DesktopName.Buffer, DesktopName.Length);
if (! NT_SUCCESS(Status))
{
KeReleaseSpinLock(&WindowStation->Lock, OldLevel);
ObDereferenceObject(WindowStation);
return Status;
}
lpBuffer = (PVOID) ((PCHAR)lpBuffer + DesktopName->Length);
lpBuffer = (PVOID) ((PCHAR)lpBuffer + DesktopName.Length);
Status = MmCopyToCaller(lpBuffer, &NullWchar, sizeof(WCHAR));
if (! NT_SUCCESS(Status))
{

File diff suppressed because it is too large Load diff

View file

@ -30,8 +30,8 @@
WINE_DEFAULT_DEBUG_CHANNEL(ddeml);
static LRESULT CALLBACK WDML_ClientProc(HWND, UINT, WPARAM, LPARAM); /* only for one client, not conv list */
const char WDML_szClientConvClassA[] = "DdeClientAnsi";
const WCHAR WDML_szClientConvClassW[] = {'D','d','e','C','l','i','e','n','t','U','n','i','c','o','d','e',0};
const char WDML_szClientConvClassA[] = "DDEMLAnsiClient";
const WCHAR WDML_szClientConvClassW[] = {'D','D','E','M','L','U','n','i','c','o','d','e','C','l','i','e','n','t',0};
/******************************************************************************
* DdeConnectList [USER32.@] Establishes conversation with DDE servers
@ -91,7 +91,7 @@ HCONV WINAPI DdeConnect(DWORD idInst, HSZ hszService, HSZ hszTopic,
WDML_CONV* pConv = NULL;
ATOM aSrv = 0, aTpc = 0;
TRACE("(0x%x,%p,%p,%p)\n", idInst, hszService, hszTopic, pCC);
ERR("(0x%x,%p,%p,%p)\n", idInst, hszService, hszTopic, pCC);
pInstance = WDML_GetInstance(idInst);
if (!pInstance)
@ -166,7 +166,7 @@ HCONV WINAPI DdeConnect(DWORD idInst, HSZ hszService, HSZ hszTopic,
/* note: sent messages shall not use packing */
SendMessageTimeoutW( HWND_BROADCAST, WM_DDE_INITIATE, (WPARAM)hwndClient, MAKELPARAM(aSrv, aTpc),
SMTO_ABORTIFHUNG, 2000, NULL );
SMTO_ABORTIFHUNG, 0, NULL );
pInstance = WDML_GetInstance(idInst);
if (!pInstance)
@ -180,12 +180,12 @@ HCONV WINAPI DdeConnect(DWORD idInst, HSZ hszService, HSZ hszTopic,
pConv = WDML_GetConvFromWnd(hwndClient);
if (pConv == NULL || pConv->hwndServer == 0)
{
WARN("Done with INITIATE, but no Server window available\n");
ERR("Done with INITIATE, but no Server window available %p\n", (pConv ? pConv->hwndServer : NULL));
pConv = NULL;
pInstance->lastError = DMLERR_NO_CONV_ESTABLISHED;
goto theEnd;
}
TRACE("Connected to Server window (%p)\n", pConv->hwndServer);
ERR("Connected to Server window (%p)\n", pConv->hwndServer);
pConv->wConvst = XST_CONNECTED;
/* finish init of pConv */
@ -312,8 +312,8 @@ static WDML_XACT* WDML_ClientQueueAdvise(WDML_CONV* pConv, UINT wType, UINT wFmt
/* pack DdeAdvise */
pDdeAdvise = GlobalLock(pXAct->hMem);
pDdeAdvise->fAckReq = (wType & XTYPF_ACKREQ) ? TRUE : FALSE;
pDdeAdvise->fDeferUpd = (wType & XTYPF_NODATA) ? TRUE : FALSE;
pDdeAdvise->fAckReq = (wType & XTYPF_ACKREQ) != 0;
pDdeAdvise->fDeferUpd = (wType & XTYPF_NODATA) != 0;
pDdeAdvise->cfFormat = wFmt;
GlobalUnlock(pXAct->hMem);
@ -848,7 +848,7 @@ static WDML_QUEUE_STATE WDML_HandleIncomingData(WDML_CONV* pConv, MSG* msg, HDDE
* XTYP_ADVDATA and callback should return the proper status.
*/
pLink = WDML_FindLink(pConv->instance, (HCONV)pConv, WDML_CLIENT_SIDE, hsz,
uiLo ? TRUE : FALSE, wdh.cfFormat);
uiLo != 0, wdh.cfFormat);
if (!pLink)
{
WDML_DecHSZ(pConv->instance, hsz);
@ -1008,22 +1008,20 @@ static WDML_QUEUE_STATE WDML_HandleReply(WDML_CONV* pConv, MSG* msg, HDDEDATA* h
*/
static HDDEDATA WDML_SyncWaitTransactionReply(HCONV hConv, DWORD dwTimeout, const WDML_XACT* pXAct, DWORD *ack)
{
DWORD dwTime;
DWORD start, elapsed;
DWORD err;
WDML_CONV* pConv;
TRACE("Starting wait for a timeout of %d ms\n", dwTimeout);
ERR("Starting wait for a timeout of %d ms\n", dwTimeout);
/* FIXME: time 32 bit wrap around */
dwTimeout += GetCurrentTime();
while ((dwTime = GetCurrentTime()) < dwTimeout)
start = GetTickCount();
while ((elapsed = GetTickCount() - start) < dwTimeout)
{
/* we cannot be in the crit sect all the time because when client and server run in a
* single process they need to share the access to the internal data
*/
if (MsgWaitForMultipleObjects(0, NULL, FALSE,
dwTimeout - dwTime, QS_POSTMESSAGE) == WAIT_OBJECT_0)
dwTimeout - elapsed, QS_POSTMESSAGE) == WAIT_OBJECT_0)
{
MSG msg;
@ -1034,16 +1032,18 @@ static HDDEDATA WDML_SyncWaitTransactionReply(HCONV hConv, DWORD dwTimeout, cons
pConv = WDML_GetConv(hConv, FALSE);
if (pConv == NULL)
{
ERR("conversation no longer available\n");
/* conversation no longer available... return failure */
return 0;
}
ERR("Msg hWnd %p & Client %p\n",msg.hwnd,pConv->hwndClient);
if (msg.hwnd == pConv->hwndClient)
{
/* check that either pXAct has been processed or no more xActions are pending */
BOOL ret = (pConv->transactions == pXAct);
if (WDML_HandleReply(pConv, &msg, &hdd, ack) == WDML_QS_HANDLED)
{
TRACE("WDML_HandleReply returned WDML_QS_HANDLED\n");
ERR("WDML_HandleReply returned WDML_QS_HANDLED\n");
ret = TRUE;
}
else
@ -1057,13 +1057,14 @@ static HDDEDATA WDML_SyncWaitTransactionReply(HCONV hConv, DWORD dwTimeout, cons
}
else
{
ERR("Dispatching message\n");
DispatchMessageW(&msg);
}
}
}
}
TRACE("Timeout !!\n");
ERR("Timeout !!\n");
pConv = WDML_GetConv(hConv, FALSE);
if (pConv != NULL)
@ -1143,6 +1144,7 @@ HDDEDATA WINAPI DdeClientTransaction(LPBYTE pData, DWORD cbData, HCONV hConv, HS
if (pConv == NULL)
{
/* cannot set error... cannot get back to DDE instance */
ERR("No Conv!\n");
return 0;
}
@ -1237,14 +1239,18 @@ BOOL WINAPI DdeAbandonTransaction(DWORD idInst, HCONV hConv, DWORD idTransaction
{
if ((pConv = WDML_GetConv(hConv, TRUE)) && pConv->instance == pInstance)
{
for (pXAct = pConv->transactions; pXAct; pXAct = pXAct->next)
{
pXAct = pConv->transactions;
while (pXAct) {
WDML_XACT *nextXAct = pXAct->next;
if (pXAct->dwTimeout == TIMEOUT_ASYNC &&
(idTransaction == 0 || pXAct->xActID == idTransaction))
{
WDML_UnQueueTransaction(pConv, pXAct);
WDML_FreeTransaction(pInstance, pXAct, TRUE);
}
pXAct = nextXAct;
}
}
}
@ -1253,13 +1259,16 @@ BOOL WINAPI DdeAbandonTransaction(DWORD idInst, HCONV hConv, DWORD idTransaction
for (pConv = pInstance->convs[WDML_CLIENT_SIDE]; pConv; pConv = pConv->next)
{
if (!(pConv->wStatus & ST_CONNECTED)) continue;
for (pXAct = pConv->transactions; pXAct; pXAct = pXAct->next)
{
pXAct = pConv->transactions;
while (pXAct) {
WDML_XACT *nextXAct = pXAct->next;
if (pXAct->dwTimeout == TIMEOUT_ASYNC)
{
WDML_UnQueueTransaction(pConv, pXAct);
WDML_FreeTransaction(pInstance, pXAct, TRUE);
}
pXAct = nextXAct;
}
}
}
@ -1278,16 +1287,18 @@ static LRESULT CALLBACK WDML_ClientProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPA
UINT uiLo, uiHi;
WDML_CONV* pConv = NULL;
HSZ hszSrv, hszTpc;
char buf[256];
WDML_INSTANCE* pInstance;
TRACE("%p %04x %08lx %08lx\n", hwnd, iMsg, wParam , lParam);
ERR("%p %04x %08lx %08lx\n", hwnd, iMsg, wParam , lParam);
if (iMsg == WM_DDE_ACK &&
/* in the initial WM_INITIATE sendmessage */
((pConv = WDML_GetConvFromWnd(hwnd)) == NULL || pConv->wStatus == XST_INIT1))
if (iMsg == WM_DDE_ACK &&
(!(pConv = WDML_GetConvFromWnd(hwnd)) || pConv->wStatus == XST_INIT1))
{
ERR("WM_DDE_ACK\n");
/* In response to WM_DDE_INITIATE, save server window */
char buf[256];
WDML_INSTANCE* pInstance;
/* note: sent messages do not need packing */
uiLo = LOWORD(lParam);

View file

@ -30,8 +30,8 @@
WINE_DEFAULT_DEBUG_CHANNEL(ddeml);
static const WCHAR szServerNameClass[] = {'D','d','e','S','e','r','v','e','r','N','a','m','e',0};
const char WDML_szServerConvClassA[] = "DdeServerConvAnsi";
const WCHAR WDML_szServerConvClassW[] = {'D','d','e','S','e','r','v','e','r','C','o','n','v','U','n','i','c','o','d','e',0};
const char WDML_szServerConvClassA[] = "DdeServerConvA";
const WCHAR WDML_szServerConvClassW[] = {'D','d','e','S','e','r','v','e','r','C','o','n','v','W',0};
static LRESULT CALLBACK WDML_ServerNameProc(HWND, UINT, WPARAM, LPARAM);
static LRESULT CALLBACK WDML_ServerConvProc(HWND, UINT, WPARAM, LPARAM);
@ -62,7 +62,7 @@ BOOL WINAPI DdePostAdvise(DWORD idInst, HSZ hszTopic, HSZ hszItem)
pInstance = WDML_GetInstance(idInst);
if (pInstance == NULL || pInstance->links == NULL)
if (pInstance == NULL)
return FALSE;
atom = WDML_MakeAtomFromHsz(hszItem);
@ -135,7 +135,7 @@ BOOL WINAPI DdePostAdvise(DWORD idInst, HSZ hszTopic, HSZ hszItem)
return TRUE;
theError:
if (atom) GlobalDeleteAtom(atom);
GlobalDeleteAtom(atom);
return FALSE;
}
@ -380,12 +380,12 @@ static LRESULT CALLBACK WDML_ServerNameProc(HWND hwndServer, UINT iMsg, WPARAM w
LOWORD(lParam) -- application atom
HIWORD(lParam) -- topic atom */
TRACE("WM_DDE_INITIATE message received!\n");
ERR("WM_DDE_INITIATE message received!\n");
hwndClient = (HWND)wParam;
pInstance = WDML_GetInstanceFromWnd(hwndServer);
TRACE("idInst=%d, threadID=0x%x\n", pInstance->instanceID, GetCurrentThreadId());
if (!pInstance) return 0;
ERR("idInst=%d, threadID=0x%x\n", pInstance->instanceID, GetCurrentThreadId());
/* don't free DDEParams, since this is a broadcast */
UnpackDDElParam(WM_DDE_INITIATE, lParam, &uiLo, &uiHi);
@ -708,7 +708,7 @@ static WDML_QUEUE_STATE WDML_ServerHandleUnadvise(WDML_CONV* pConv, WDML_XACT* p
pXAct->hszItem, TRUE, pXAct->wFmt);
if (pLink == NULL)
{
ERR("Couln'd find link for %p, dropping request\n", pXAct->hszItem);
ERR("Couldn't find link for %p, dropping request\n", pXAct->hszItem);
FreeDDElParam(WM_DDE_UNADVISE, pXAct->lParam);
return WDML_QS_ERROR;
}
@ -748,6 +748,54 @@ static WDML_XACT* WDML_ServerQueueExecute(WDML_CONV* pConv, LPARAM lParam)
return pXAct;
}
static BOOL data_looks_unicode( const WCHAR *data, DWORD size )
{
DWORD i;
if (size % sizeof(WCHAR)) return FALSE;
for (i = 0; i < size / sizeof(WCHAR); i++) if (data[i] > 255) return FALSE;
return TRUE;
}
/* convert data to Unicode, unless it looks like it's already Unicode */
static HDDEDATA map_A_to_W( DWORD instance, void *ptr, DWORD size )
{
HDDEDATA ret;
DWORD len;
const char *end;
if (!data_looks_unicode( ptr, size ))
{
if ((end = memchr( ptr, 0, size ))) size = end + 1 - (const char *)ptr;
len = MultiByteToWideChar( CP_ACP, 0, ptr, size, NULL, 0 );
ret = DdeCreateDataHandle( instance, NULL, len * sizeof(WCHAR), 0, 0, CF_TEXT, 0);
MultiByteToWideChar( CP_ACP, 0, ptr, size, (WCHAR *)DdeAccessData(ret, NULL), len );
}
else ret = DdeCreateDataHandle( instance, ptr, size, 0, 0, CF_TEXT, 0 );
return ret;
}
/* convert data to ASCII, unless it looks like it's not in Unicode format */
static HDDEDATA map_W_to_A( DWORD instance, void *ptr, DWORD size )
{
HDDEDATA ret;
DWORD len;
const WCHAR *end;
if (data_looks_unicode( ptr, size ))
{
size /= sizeof(WCHAR);
if ((end = memchrW( ptr, 0, size ))) size = end + 1 - (const WCHAR *)ptr;
len = WideCharToMultiByte( CP_ACP, 0, ptr, size, NULL, 0, NULL, NULL );
ret = DdeCreateDataHandle( instance, NULL, len, 0, 0, CF_TEXT, 0);
WideCharToMultiByte( CP_ACP, 0, ptr, size, (char *)DdeAccessData(ret, NULL), len, NULL, NULL );
}
else ret = DdeCreateDataHandle( instance, ptr, size, 0, 0, CF_TEXT, 0 );
return ret;
}
/******************************************************************
* WDML_ServerHandleExecute
*
@ -761,11 +809,16 @@ static WDML_QUEUE_STATE WDML_ServerHandleExecute(WDML_CONV* pConv, WDML_XACT* pX
if (!(pConv->instance->CBFflags & CBF_FAIL_EXECUTES))
{
LPVOID ptr = GlobalLock(pXAct->hMem);
DWORD size = GlobalSize(pXAct->hMem);
if (ptr)
{
hDdeData = DdeCreateDataHandle(pConv->instance->instanceID, ptr, GlobalSize(pXAct->hMem),
0, 0, CF_TEXT, 0);
if (pConv->instance->unicode) /* Unicode server, try to map A->W */
hDdeData = map_A_to_W( pConv->instance->instanceID, ptr, size );
else if (!IsWindowUnicode( pConv->hwndClient )) /* ASCII server and client, try to map W->A */
hDdeData = map_W_to_A( pConv->instance->instanceID, ptr, size );
else
hDdeData = DdeCreateDataHandle(pConv->instance->instanceID, ptr, size, 0, 0, CF_TEXT, 0);
GlobalUnlock(pXAct->hMem);
}
hDdeData = WDML_InvokeCallback(pConv->instance, XTYP_EXECUTE, 0, (HCONV)pConv,

View file

@ -860,8 +860,8 @@ static void MDITile( HWND client, MDICLIENTINFO *ci, WPARAM wParam )
for (r = 1; r <= rows && *pWnd; r++, i++)
{
LONG posOptions = SWP_DRAWFRAME | SWP_NOACTIVATE | SWP_NOZORDER;
LONG style = GetWindowLongW(win_array[i], GWL_STYLE);
if (!(style & WS_SIZEBOX)) posOptions |= SWP_NOSIZE;
LONG style = GetWindowLongW(win_array[i], GWL_STYLE);
if (!(style & WS_SIZEBOX)) posOptions |= SWP_NOSIZE;
SetWindowPos(*pWnd, 0, x, y, xsize, ysize, posOptions);
y += ysize;
@ -1091,9 +1091,9 @@ static void MDI_UpdateFrameText( HWND frame, HWND hClient, BOOL repaint, LPCWSTR
DefWindowProcW( frame, WM_SETTEXT, 0, (LPARAM)lpBuffer );
if (repaint)
SetWindowPos( frame, 0,0,0,0,0, SWP_FRAMECHANGED |
SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER );
if (repaint)
SetWindowPos( frame, 0,0,0,0,0, SWP_FRAMECHANGED |
SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER );
}
@ -1830,7 +1830,7 @@ void WINAPI CalcChildScroll( HWND hwnd, INT scroll )
return;
}
ERR("CalcChildScroll 1\n");
TRACE("CalcChildScroll 1\n");
if ((list = WIN_ListChildren( hwnd )))
{
int i;
@ -1851,14 +1851,14 @@ void WINAPI CalcChildScroll( HWND hwnd, INT scroll )
OffsetRect(&rect, -WindowInfo.rcClient.left,
-WindowInfo.rcClient.top);
//WIN_GetRectangles( list[i], COORDS_PARENT, &rect, NULL );
ERR("CalcChildScroll L\n");
TRACE("CalcChildScroll L\n");
UnionRect( &childRect, &rect, &childRect );
}
}
HeapFree( GetProcessHeap(), 0, list );
}
UnionRect( &childRect, &clientRect, &childRect );
ERR("CalcChildScroll 3\n");
TRACE("CalcChildScroll 3\n");
/* set common info values */
info.cbSize = sizeof(info);
info.fMask = SIF_POS | SIF_RANGE | SIF_PAGE;
@ -1883,12 +1883,12 @@ void WINAPI CalcChildScroll( HWND hwnd, INT scroll )
SetScrollInfo(hwnd, SB_HORZ, &info, TRUE);
if (scroll == SB_HORZ)
{
ERR("CalcChildScroll H\n");
TRACE("CalcChildScroll H\n");
break;
}
else
{
ERR("CalcChildScroll B\n");
TRACE("CalcChildScroll B\n");
}
/* fall through */
case SB_VERT:
@ -1898,7 +1898,7 @@ void WINAPI CalcChildScroll( HWND hwnd, INT scroll )
info.nPage = 1 + clientRect.bottom - clientRect.top;
//info.nMax = childRect.bottom - clientRect.bottom;
//info.nPos = clientRect.top - childRect.top;
ERR("CalcChildScroll V\n");
TRACE("CalcChildScroll V\n");
if (ci->initialStyle & WS_VSCROLL)
SetScrollInfo(hwnd, SB_VERT, &info, TRUE);
break;
@ -2029,7 +2029,7 @@ TileWindows (HWND hwndParent, UINT wFlags, LPCRECT lpRect,
* TileChildWindows (USER32.@)
*/
WORD WINAPI TileChildWindows( HWND parent, UINT flags )
{
{
return TileWindows( parent, flags, NULL, 0, NULL );
}

File diff suppressed because it is too large Load diff

View file

@ -245,7 +245,7 @@ DWORD FASTCALL get_input_codepage( void )
if (!ret) cp = CP_ACP;
return cp;
}
static WPARAM FASTCALL map_wparam_char_WtoA( WPARAM wParam, DWORD len )
{
WCHAR wch = wParam;
@ -253,7 +253,7 @@ static WPARAM FASTCALL map_wparam_char_WtoA( WPARAM wParam, DWORD len )
DWORD cp = get_input_codepage();
len = WideCharToMultiByte( cp, 0, &wch, 1, (LPSTR)ch, len, NULL, NULL );
if (len == 2)
if (len == 2)
return MAKEWPARAM( (ch[0] << 8) | ch[1], HIWORD(wParam) );
else
return MAKEWPARAM( ch[0], HIWORD(wParam) );
@ -743,9 +743,9 @@ MsgiAnsiToUnicodeMessage(HWND hwnd, LPMSG UnicodeMsg, LPMSG AnsiMsg)
case WM_CHARTOITEM:
case WM_MENUCHAR:
case WM_CHAR:
case WM_CHAR:
case WM_DEADCHAR:
case WM_SYSCHAR:
case WM_SYSCHAR:
case WM_SYSDEADCHAR:
case EM_SETPASSWORDCHAR:
case WM_IME_CHAR:
@ -1139,14 +1139,14 @@ MsgiUnicodeToAnsiMessage(HWND hwnd, LPMSG AnsiMsg, LPMSG UnicodeMsg)
}
case WM_GETDLGCODE:
if (UnicodeMsg->lParam)
if (UnicodeMsg->lParam)
{
MSG newmsg = *(MSG *)UnicodeMsg->lParam;
switch(newmsg.message)
{
case WM_CHAR:
case WM_DEADCHAR:
case WM_SYSCHAR:
case WM_SYSCHAR:
case WM_SYSDEADCHAR:
newmsg.wParam = map_wparam_char_WtoA( newmsg.wParam, 1 );
break;
@ -1169,9 +1169,9 @@ MsgiUnicodeToAnsiMessage(HWND hwnd, LPMSG AnsiMsg, LPMSG UnicodeMsg)
break;
case WM_CHARTOITEM:
case WM_MENUCHAR:
case WM_DEADCHAR:
case WM_SYSCHAR:
case WM_MENUCHAR:
case WM_DEADCHAR:
case WM_SYSCHAR:
case WM_SYSDEADCHAR:
case EM_SETPASSWORDCHAR:
AnsiMsg->wParam = map_wparam_char_WtoA(UnicodeMsg->wParam,1);
@ -1303,7 +1303,7 @@ MsgiUnicodeToAnsiReply(LPMSG AnsiMsg, LPMSG UnicodeMsg, LRESULT *Result)
{
DWORD len = AnsiMsg->wParam;// * 2;
if (len)
{
{
if (*Result)
{
RtlMultiByteToUnicodeN( UBuffer, AnsiMsg->wParam*sizeof(WCHAR), &len, Buffer, strlen(Buffer)+1 );
@ -2404,7 +2404,7 @@ SendMessageW(HWND Wnd,
if ( Window != NULL &&
Window->head.pti == ti &&
!ISITHOOKED(WH_CALLWNDPROC) &&
!ISITHOOKED(WH_CALLWNDPROC) &&
!ISITHOOKED(WH_CALLWNDPROCRET) &&
!(Window->state & WNDS_SERVERSIDEWINDOWPROC) )
{
@ -2468,7 +2468,7 @@ SendMessageA(HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam)
if ( Window != NULL &&
Window->head.pti == ti &&
!ISITHOOKED(WH_CALLWNDPROC) &&
!ISITHOOKED(WH_CALLWNDPROC) &&
!ISITHOOKED(WH_CALLWNDPROCRET) &&
!(Window->state & WNDS_SERVERSIDEWINDOWPROC) )
{
@ -2935,7 +2935,7 @@ User32CallWindowProcFromKernel(PVOID Arguments, ULONG ArgumentLength)
case WM_SIZING:
{
PRECT prect = (PRECT) KMMsg.lParam;
ERR("WM_SIZING 1 t %d l %d r %d b %d\n",prect->top,prect->left,prect->right,prect->bottom);
TRACE("WM_SIZING 1 t %d l %d r %d b %d\n",prect->top,prect->left,prect->right,prect->bottom);
break;
}
default:
@ -2983,7 +2983,7 @@ User32CallWindowProcFromKernel(PVOID Arguments, ULONG ArgumentLength)
case WM_SIZING:
{
PRECT prect = (PRECT) KMMsg.lParam;
ERR("WM_SIZING 2 t %d l %d r %d b %d\n",prect->top,prect->left,prect->right,prect->bottom);
TRACE("WM_SIZING 2 t %d l %d r %d b %d\n",prect->top,prect->left,prect->right,prect->bottom);
break;
}
default: