Fixed DestroyAcceleratorTable and implemented CreateAcceleratorTableW.
This commit is contained in:
parent
a2b938c2d5
commit
a49bb2661d
|
@ -2921,6 +2921,9 @@ WORD WINAPI CascadeWindows(HWND, UINT, const LPRECT, UINT, const HWND *);
|
||||||
INT WINAPI CopyAcceleratorTableA(HACCEL,LPACCEL,INT);
|
INT WINAPI CopyAcceleratorTableA(HACCEL,LPACCEL,INT);
|
||||||
INT WINAPI CopyAcceleratorTableW(HACCEL,LPACCEL,INT);
|
INT WINAPI CopyAcceleratorTableW(HACCEL,LPACCEL,INT);
|
||||||
#define CopyAcceleratorTable WINELIB_NAME_AW(CopyAcceleratorTable)
|
#define CopyAcceleratorTable WINELIB_NAME_AW(CopyAcceleratorTable)
|
||||||
|
HACCEL WINAPI CreateAcceleratorTableA(LPACCEL,INT);
|
||||||
|
HACCEL WINAPI CreateAcceleratorTableW(LPACCEL,INT);
|
||||||
|
#define CreateAcceleratorTable WINELIB_NAME_AW(CreateAcceleratorTable)
|
||||||
HICON WINAPI CreateIconIndirect(LPICONINFO);
|
HICON WINAPI CreateIconIndirect(LPICONINFO);
|
||||||
BOOL WINAPI DestroyAcceleratorTable(HACCEL);
|
BOOL WINAPI DestroyAcceleratorTable(HACCEL);
|
||||||
BOOL WINAPI EnumDisplayMonitors(HDC,LPRECT,MONITORENUMPROC,LPARAM);
|
BOOL WINAPI EnumDisplayMonitors(HDC,LPRECT,MONITORENUMPROC,LPARAM);
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include "libres.h"
|
#include "libres.h"
|
||||||
#include "winerror.h"
|
#include "winerror.h"
|
||||||
#include "debugstr.h"
|
#include "debugstr.h"
|
||||||
|
#include "winnls.h"
|
||||||
|
|
||||||
DECLARE_DEBUG_CHANNEL(accel)
|
DECLARE_DEBUG_CHANNEL(accel)
|
||||||
DECLARE_DEBUG_CHANNEL(resource)
|
DECLARE_DEBUG_CHANNEL(resource)
|
||||||
|
@ -777,6 +778,60 @@ HACCEL WINAPI CreateAcceleratorTableA(LPACCEL lpaccel, INT cEntries)
|
||||||
return hAccel;
|
return hAccel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
* CreateAcceleratorTableW (USER32.64)
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
HACCEL WINAPI CreateAcceleratorTableW(LPACCEL lpaccel, INT cEntries)
|
||||||
|
{
|
||||||
|
HACCEL hAccel;
|
||||||
|
LPACCEL16 accel;
|
||||||
|
int i;
|
||||||
|
char ckey;
|
||||||
|
|
||||||
|
/* Do parameter checking just in case someone's trying to be
|
||||||
|
funny. */
|
||||||
|
if(cEntries < 1) {
|
||||||
|
WARN_(accel)("Application sent invalid parameters (%p %d).\n",
|
||||||
|
lpaccel, cEntries);
|
||||||
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
|
return (HACCEL)NULL;
|
||||||
|
}
|
||||||
|
FIXME_(accel)("should check that the accelerator descriptions are valid,"
|
||||||
|
" return NULL and SetLastError() if not.\n");
|
||||||
|
|
||||||
|
|
||||||
|
/* Allocate memory and copy the table. */
|
||||||
|
hAccel = GlobalAlloc16(0,cEntries*sizeof(ACCEL16));
|
||||||
|
|
||||||
|
TRACE_(accel)("handle %x\n", hAccel);
|
||||||
|
if(!hAccel) {
|
||||||
|
ERR_(accel)("Out of memory.\n");
|
||||||
|
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||||
|
return (HACCEL)NULL;
|
||||||
|
}
|
||||||
|
accel = GlobalLock16(hAccel);
|
||||||
|
|
||||||
|
|
||||||
|
for (i=0;i<cEntries;i++) {
|
||||||
|
accel[i].fVirt = lpaccel[i].fVirt;
|
||||||
|
if( !(accel[i].fVirt & FVIRTKEY) ) {
|
||||||
|
ckey = (char) lpaccel[i].key;
|
||||||
|
if(!MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, &ckey, 1, &accel[i].key, 1))
|
||||||
|
WARN_(accel)("Error converting ASCII accelerator table to Unicode");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
accel[i].key = lpaccel[i].key;
|
||||||
|
accel[i].cmd = lpaccel[i].cmd;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set the end-of-table terminator. */
|
||||||
|
accel[cEntries-1].fVirt |= 0x80;
|
||||||
|
|
||||||
|
TRACE_(accel)("Allocated accelerator handle %x\n", hAccel);
|
||||||
|
return hAccel;
|
||||||
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* DestroyAcceleratorTable [USER32.130]
|
* DestroyAcceleratorTable [USER32.130]
|
||||||
|
@ -792,9 +847,7 @@ HACCEL WINAPI CreateAcceleratorTableA(LPACCEL lpaccel, INT cEntries)
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI DestroyAcceleratorTable( HACCEL handle )
|
BOOL WINAPI DestroyAcceleratorTable( HACCEL handle )
|
||||||
{
|
{
|
||||||
FIXME_(accel)("(0x%x): stub\n", handle);
|
return GlobalFree16(handle);
|
||||||
/* FIXME: GlobalFree16(handle); */
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
|
|
|
@ -66,7 +66,7 @@ init MAIN_UserInit
|
||||||
62 stdcall CopyRect(ptr ptr) CopyRect
|
62 stdcall CopyRect(ptr ptr) CopyRect
|
||||||
63 stdcall CountClipboardFormats() CountClipboardFormats
|
63 stdcall CountClipboardFormats() CountClipboardFormats
|
||||||
64 stdcall CreateAcceleratorTableA(ptr long) CreateAcceleratorTableA
|
64 stdcall CreateAcceleratorTableA(ptr long) CreateAcceleratorTableA
|
||||||
65 stub CreateAcceleratorTableW
|
65 stdcall CreateAcceleratorTableW(ptr long) CreateAcceleratorTableW
|
||||||
66 stdcall CreateCaret(long long long long) CreateCaret
|
66 stdcall CreateCaret(long long long long) CreateCaret
|
||||||
67 stdcall CreateCursor(long long long long long ptr ptr) CreateCursor
|
67 stdcall CreateCursor(long long long long long ptr ptr) CreateCursor
|
||||||
68 stub CreateDesktopA
|
68 stub CreateDesktopA
|
||||||
|
|
Loading…
Reference in New Issue