mirror of
https://github.com/reactos/reactos.git
synced 2024-07-10 22:55:05 +00:00
- Removed NtGdiGet/SetStretchBltMode, updated all related files.
- Implement GetHFONT & Get/SetLayout/Width. - Add layout types to PSDK. - Updates and small cleanups. svn path=/trunk/; revision=30831
This commit is contained in:
parent
b463864293
commit
d2bb5d906c
|
@ -60,17 +60,6 @@ SelectObject(HDC hdc,
|
||||||
return NtGdiSelectObject(hdc,hgdiobj);
|
return NtGdiSelectObject(hdc,hgdiobj);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
STDCALL
|
|
||||||
GetStretchBltMode(HDC hdc)
|
|
||||||
{
|
|
||||||
return NtGdiGetStretchBltMode(hdc);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*
|
*
|
||||||
|
|
|
@ -63,17 +63,6 @@ SetDIBits(HDC hdc,
|
||||||
return NtGdiSetDIBits(hdc, hbmp, uStartScan, cScanLines, lpvBits, lpbmi, fuColorUse);
|
return NtGdiSetDIBits(hdc, hbmp, uStartScan, cScanLines, lpvBits, lpbmi, fuColorUse);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
STDCALL
|
|
||||||
SetStretchBltMode(HDC hdc, int iStretchMode)
|
|
||||||
{
|
|
||||||
/* FIXME share memory */
|
|
||||||
return NtGdiSetStretchBltMode(hdc, iStretchMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
|
@ -1438,31 +1427,6 @@ GetFontAssocStatus(HDC hdc)
|
||||||
return retValue;
|
return retValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
HFONT
|
|
||||||
STDCALL
|
|
||||||
GetHFONT(HDC dc)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
DWORD
|
|
||||||
STDCALL
|
|
||||||
GetLayout(HDC hdc
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -1584,33 +1548,6 @@ SetBrushAttributes(HBRUSH hbm, DWORD dwFlags)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
DWORD
|
|
||||||
STDCALL
|
|
||||||
SetLayout(HDC hdc,
|
|
||||||
DWORD dwLayout)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
DWORD
|
|
||||||
STDCALL
|
|
||||||
SetLayoutWidth(HDC hdc,LONG wox,DWORD dwLayout)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1515,7 +1515,7 @@ SelectPalette(
|
||||||
if ( !pLDC )
|
if ( !pLDC )
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_HANDLE);
|
SetLastError(ERROR_INVALID_HANDLE);
|
||||||
return FALSE;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (pLDC->iType == LDC_EMFLDC)
|
if (pLDC->iType == LDC_EMFLDC)
|
||||||
{
|
{
|
||||||
|
@ -1560,11 +1560,134 @@ SetMapMode(
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_HANDLE);
|
SetLastError(ERROR_INVALID_HANDLE);
|
||||||
return FALSE;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if ((Mode == Dc_Attr->iMapMode) && (Mode != MM_ISOTROPIC)) return Mode;
|
if ((Mode == Dc_Attr->iMapMode) && (Mode != MM_ISOTROPIC)) return Mode;
|
||||||
return GetAndSetDCDWord( hdc, GdiGetSetMapMode, Mode, 0, 0, 0 );
|
return GetAndSetDCDWord( hdc, GdiGetSetMapMode, Mode, 0, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
STDCALL
|
||||||
|
GetStretchBltMode(HDC hdc)
|
||||||
|
{
|
||||||
|
PDC_ATTR Dc_Attr;
|
||||||
|
if (!GdiGetHandleUserData((HGDIOBJ) hdc, (PVOID) &Dc_Attr)) return 0;
|
||||||
|
return Dc_Attr->lStretchBltMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
STDCALL
|
||||||
|
SetStretchBltMode(HDC hdc, int iStretchMode)
|
||||||
|
{
|
||||||
|
INT oSMode;
|
||||||
|
PDC_ATTR Dc_Attr;
|
||||||
|
#if 0
|
||||||
|
if (GDI_HANDLE_GET_TYPE(hdc) != GDI_OBJECT_TYPE_DC)
|
||||||
|
{
|
||||||
|
if (GDI_HANDLE_GET_TYPE(hdc) == GDI_OBJECT_TYPE_METADC)
|
||||||
|
return MFDRV_SetStretchBltMode( hdc, iStretchMode);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PLDC pLDC = GdiGetLDC(hdc);
|
||||||
|
if ( !pLDC )
|
||||||
|
{
|
||||||
|
SetLastError(ERROR_INVALID_HANDLE);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (pLDC->iType == LDC_EMFLDC)
|
||||||
|
{
|
||||||
|
return EMFDRV_SetStretchBltMode( hdc, iStretchMode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (!GdiGetHandleUserData((HGDIOBJ) hdc, (PVOID) &Dc_Attr)) return 0;
|
||||||
|
|
||||||
|
oSMode = Dc_Attr->lStretchBltMode;
|
||||||
|
Dc_Attr->lStretchBltMode = iStretchMode;
|
||||||
|
|
||||||
|
// Wine returns an error here. We set the default.
|
||||||
|
if ((iStretchMode <= 0) || (iStretchMode > MAXSTRETCHBLTMODE)) iStretchMode = WHITEONBLACK;
|
||||||
|
|
||||||
|
Dc_Attr->jStretchBltMode = iStretchMode;
|
||||||
|
|
||||||
|
return oSMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
HFONT
|
||||||
|
STDCALL
|
||||||
|
GetHFONT(HDC hdc)
|
||||||
|
{
|
||||||
|
PDC_ATTR Dc_Attr;
|
||||||
|
if (!GdiGetHandleUserData((HGDIOBJ) hdc, (PVOID) &Dc_Attr)) return NULL;
|
||||||
|
return Dc_Attr->hlfntNew;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
DWORD
|
||||||
|
STDCALL
|
||||||
|
GetLayout(HDC hdc
|
||||||
|
)
|
||||||
|
{
|
||||||
|
PDC_ATTR Dc_Attr;
|
||||||
|
if (!GdiGetHandleUserData((HGDIOBJ) hdc, (PVOID) &Dc_Attr)) return GDI_ERROR;
|
||||||
|
return Dc_Attr->dwLayout;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
DWORD
|
||||||
|
STDCALL
|
||||||
|
SetLayout(HDC hdc,
|
||||||
|
DWORD dwLayout)
|
||||||
|
{
|
||||||
|
#if 0
|
||||||
|
if (GDI_HANDLE_GET_TYPE(hdc) != GDI_OBJECT_TYPE_DC)
|
||||||
|
{
|
||||||
|
if (GDI_HANDLE_GET_TYPE(hdc) == GDI_OBJECT_TYPE_METADC)
|
||||||
|
return MFDRV_SetLayout( hdc, dwLayout);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PLDC pLDC = GdiGetLDC(hdc);
|
||||||
|
if ( !pLDC )
|
||||||
|
{
|
||||||
|
SetLastError(ERROR_INVALID_HANDLE);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (pLDC->iType == LDC_EMFLDC)
|
||||||
|
{
|
||||||
|
return EMFDRV_SetLayout( hdc, dwLayout);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (!GdiIsHandleValid((HGDIOBJ) hdc)) return GDI_ERROR;
|
||||||
|
return NtGdiSetLayout( hdc, -1, dwLayout);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
DWORD
|
||||||
|
STDCALL
|
||||||
|
SetLayoutWidth(HDC hdc,LONG wox,DWORD dwLayout)
|
||||||
|
{
|
||||||
|
if (!GdiIsHandleValid((HGDIOBJ) hdc)) return GDI_ERROR;
|
||||||
|
return NtGdiSetLayout( hdc, wox, dwLayout);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -1193,7 +1193,10 @@ extern "C" {
|
||||||
#define WGL_SWAP_UNDERLAY14 0x20000000
|
#define WGL_SWAP_UNDERLAY14 0x20000000
|
||||||
#define WGL_SWAP_UNDERLAY15 0x40000000
|
#define WGL_SWAP_UNDERLAY15 0x40000000
|
||||||
#define AC_SRC_OVER 0
|
#define AC_SRC_OVER 0
|
||||||
#define LAYOUT_RTL 1
|
#define LAYOUT_RTL 1 // Right to left
|
||||||
|
#define LAYOUT_BTT 2 // Bottom to top
|
||||||
|
#define LAYOUT_VBH 4 // Vertical before horizontal
|
||||||
|
#define LAYOUT_ORIENTATIONMASK (LAYOUT_RTL | LAYOUT_BTT | LAYOUT_VBH)
|
||||||
#define LAYOUT_BITMAPORIENTATIONPRESERVED 8
|
#define LAYOUT_BITMAPORIENTATIONPRESERVED 8
|
||||||
#if (WINVER > 0x400)
|
#if (WINVER > 0x400)
|
||||||
#define CS_ENABLE 0x00000001
|
#define CS_ENABLE 0x00000001
|
||||||
|
|
|
@ -275,9 +275,6 @@ INT
|
||||||
STDCALL
|
STDCALL
|
||||||
NtGdiGetPixelFormat(HDC hDC);
|
NtGdiGetPixelFormat(HDC hDC);
|
||||||
|
|
||||||
/* Should be done in user-mode using shared GDI Objects. */
|
|
||||||
INT STDCALL NtGdiGetStretchBltMode(HDC hDC);
|
|
||||||
|
|
||||||
/* Should be done in user-mode using shared GDI Objects. */
|
/* Should be done in user-mode using shared GDI Objects. */
|
||||||
UINT
|
UINT
|
||||||
STDCALL
|
STDCALL
|
||||||
|
@ -389,9 +386,6 @@ STDCALL
|
||||||
NtGdiSetMapperFlags(HDC hDC,
|
NtGdiSetMapperFlags(HDC hDC,
|
||||||
DWORD Flag);
|
DWORD Flag);
|
||||||
|
|
||||||
/* Needs to be done in user-mode, using shared GDI Object Attributes. */
|
|
||||||
INT STDCALL NtGdiSetStretchBltMode(HDC hDC, INT stretchBltMode);
|
|
||||||
|
|
||||||
/* Needs to be done in user-mode. */
|
/* Needs to be done in user-mode. */
|
||||||
BOOL
|
BOOL
|
||||||
STDCALL
|
STDCALL
|
||||||
|
|
|
@ -378,6 +378,9 @@ typedef struct _DC
|
||||||
HDC hNext;
|
HDC hNext;
|
||||||
HDC hPrev;
|
HDC hPrev;
|
||||||
|
|
||||||
|
RECTL erclWindow;
|
||||||
|
RECTL erclBounds;
|
||||||
|
|
||||||
CLIPOBJ *CombinedClip;
|
CLIPOBJ *CombinedClip;
|
||||||
XLATEOBJ *XlateBrush;
|
XLATEOBJ *XlateBrush;
|
||||||
XLATEOBJ *XlatePen;
|
XLATEOBJ *XlatePen;
|
||||||
|
|
|
@ -42,6 +42,7 @@ typedef struct
|
||||||
|
|
||||||
PERESOURCE hsemDevLock;
|
PERESOURCE hsemDevLock;
|
||||||
|
|
||||||
|
PVOID pvGammaRamp;
|
||||||
PVOID pfnSync;
|
PVOID pfnSync;
|
||||||
|
|
||||||
DHPDEV PDev;
|
DHPDEV PDev;
|
||||||
|
@ -112,6 +113,7 @@ COLORREF FASTCALL NtGdiSetTextColor(HDC hDC, COLORREF color);
|
||||||
UINT FASTCALL NtGdiSetTextAlign(HDC hDC, UINT Mode);
|
UINT FASTCALL NtGdiSetTextAlign(HDC hDC, UINT Mode);
|
||||||
UINT STDCALL NtGdiGetTextAlign(HDC hDC);
|
UINT STDCALL NtGdiGetTextAlign(HDC hDC);
|
||||||
COLORREF STDCALL NtGdiGetTextColor(HDC hDC);
|
COLORREF STDCALL NtGdiGetTextColor(HDC hDC);
|
||||||
|
INT STDCALL NtGdiSetStretchBltMode(HDC hDC, INT stretchBltMode);
|
||||||
|
|
||||||
/* For Metafile and MetaEnhFile not in windows this struct taken from wine cvs 15/9-2006*/
|
/* For Metafile and MetaEnhFile not in windows this struct taken from wine cvs 15/9-2006*/
|
||||||
typedef struct
|
typedef struct
|
||||||
|
|
|
@ -959,5 +959,43 @@ NtGdiSetWindowOrgEx(HDC hDC,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
DWORD
|
||||||
|
APIENTRY
|
||||||
|
NtGdiSetLayout(
|
||||||
|
IN HDC hdc,
|
||||||
|
IN LONG wox,
|
||||||
|
IN DWORD dwLayout)
|
||||||
|
{
|
||||||
|
PDC dc;
|
||||||
|
PDC_ATTR Dc_Attr;
|
||||||
|
DWORD oLayout;
|
||||||
|
|
||||||
|
dc = DC_LockDc(hdc);
|
||||||
|
if (!dc)
|
||||||
|
{
|
||||||
|
SetLastWin32Error(ERROR_INVALID_HANDLE);
|
||||||
|
return GDI_ERROR;
|
||||||
|
}
|
||||||
|
Dc_Attr = dc->pDc_Attr;
|
||||||
|
if(!Dc_Attr) Dc_Attr = &dc->Dc_Attr;
|
||||||
|
|
||||||
|
Dc_Attr->dwLayout = dwLayout;
|
||||||
|
oLayout = Dc_Attr->dwLayout;
|
||||||
|
|
||||||
|
if (!(dwLayout & LAYOUT_ORIENTATIONMASK))
|
||||||
|
{
|
||||||
|
DC_UnlockDc(dc);
|
||||||
|
return oLayout;
|
||||||
|
}
|
||||||
|
|
||||||
|
// DC_UpdateXforms(dc);
|
||||||
|
DC_UnlockDc(dc);
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return GDI_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -827,12 +827,16 @@ IntGdiCreateDC(PUNICODE_STRING Driver,
|
||||||
((PGDIDEVICE)NewDC->pPDev)->GDIInfo.cPlanes;
|
((PGDIDEVICE)NewDC->pPDev)->GDIInfo.cPlanes;
|
||||||
DPRINT("Bits per pel: %u\n", NewDC->w.bitsPerPixel);
|
DPRINT("Bits per pel: %u\n", NewDC->w.bitsPerPixel);
|
||||||
|
|
||||||
if (! CreateAsIC)
|
if (!CreateAsIC)
|
||||||
{
|
{
|
||||||
NewDC->PalIndexed = NtGdiGetStockObject(DEFAULT_PALETTE);
|
NewDC->PalIndexed = NtGdiGetStockObject(DEFAULT_PALETTE);
|
||||||
NewDC->w.hPalette = PrimarySurface.DevInfo.hpalDefault;
|
NewDC->w.hPalette = PrimarySurface.DevInfo.hpalDefault;
|
||||||
nDc_Attr->jROP2 = R2_COPYPEN;
|
nDc_Attr->jROP2 = R2_COPYPEN;
|
||||||
|
|
||||||
|
NewDC->erclWindow.top = NewDC->erclWindow.left = 0;
|
||||||
|
NewDC->erclWindow.right = ((PGDIDEVICE)NewDC->pPDev)->GDIInfo.ulHorzRes;
|
||||||
|
NewDC->erclWindow.bottom = ((PGDIDEVICE)NewDC->pPDev)->GDIInfo.ulVertRes;
|
||||||
|
|
||||||
DC_UnlockDc( NewDC );
|
DC_UnlockDc( NewDC );
|
||||||
|
|
||||||
hVisRgn = NtGdiCreateRectRgn(0, 0, ((PGDIDEVICE)NewDC->pPDev)->GDIInfo.ulHorzRes,
|
hVisRgn = NtGdiCreateRectRgn(0, 0, ((PGDIDEVICE)NewDC->pPDev)->GDIInfo.ulHorzRes,
|
||||||
|
@ -1189,6 +1193,7 @@ IntGdiCopyToSaveState(PDC dc, PDC newdc)
|
||||||
if(!nDc_Attr) nDc_Attr = &newdc->Dc_Attr;
|
if(!nDc_Attr) nDc_Attr = &newdc->Dc_Attr;
|
||||||
|
|
||||||
newdc->w.flags = dc->w.flags | DC_SAVED;
|
newdc->w.flags = dc->w.flags | DC_SAVED;
|
||||||
|
nDc_Attr->dwLayout = Dc_Attr->dwLayout;
|
||||||
nDc_Attr->hpen = Dc_Attr->hpen;
|
nDc_Attr->hpen = Dc_Attr->hpen;
|
||||||
nDc_Attr->hbrush = Dc_Attr->hbrush;
|
nDc_Attr->hbrush = Dc_Attr->hbrush;
|
||||||
nDc_Attr->hlfntNew = Dc_Attr->hlfntNew;
|
nDc_Attr->hlfntNew = Dc_Attr->hlfntNew;
|
||||||
|
@ -1272,6 +1277,7 @@ IntGdiCopyFromSaveState(PDC dc, PDC dcs, HDC hDC)
|
||||||
dc->w.hDevice = dcs->w.hDevice;
|
dc->w.hDevice = dcs->w.hDevice;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Dc_Attr->dwLayout = sDc_Attr->dwLayout;
|
||||||
dc->w.totalExtent = dcs->w.totalExtent;
|
dc->w.totalExtent = dcs->w.totalExtent;
|
||||||
Dc_Attr->jROP2 = sDc_Attr->jROP2;
|
Dc_Attr->jROP2 = sDc_Attr->jROP2;
|
||||||
Dc_Attr->jFillMode = sDc_Attr->jFillMode;
|
Dc_Attr->jFillMode = sDc_Attr->jFillMode;
|
||||||
|
|
|
@ -3169,20 +3169,6 @@ NtGdiMirrorWindowOrg(
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
DWORD
|
|
||||||
APIENTRY
|
|
||||||
NtGdiSetLayout(
|
|
||||||
IN HDC hdc,
|
|
||||||
IN LONG wox,
|
|
||||||
IN DWORD dwLayout)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -683,7 +683,6 @@ NtGdiSetDIBits 7
|
||||||
NtGdiSetEnhMetaFileBits 2
|
NtGdiSetEnhMetaFileBits 2
|
||||||
NtGdiSetICMProfile 2
|
NtGdiSetICMProfile 2
|
||||||
NtGdiSetMapperFlags 2
|
NtGdiSetMapperFlags 2
|
||||||
NtGdiSetStretchBltMode 2
|
|
||||||
NtGdiSetViewportExtEx 4
|
NtGdiSetViewportExtEx 4
|
||||||
NtGdiSetViewportOrgEx 4
|
NtGdiSetViewportOrgEx 4
|
||||||
NtGdiSetWindowExtEx 4
|
NtGdiSetWindowExtEx 4
|
||||||
|
@ -749,7 +748,6 @@ NtGdiGetFontLanguageInfo 1
|
||||||
NtGdiGetICMProfile 3
|
NtGdiGetICMProfile 3
|
||||||
NtGdiGetLogColorSpace 3
|
NtGdiGetLogColorSpace 3
|
||||||
NtGdiGetPixelFormat 1
|
NtGdiGetPixelFormat 1
|
||||||
NtGdiGetStretchBltMode 1
|
|
||||||
NtGdiGetTextExtentPoint32 4
|
NtGdiGetTextExtentPoint32 4
|
||||||
NtGdiOffsetViewportOrgEx 4
|
NtGdiOffsetViewportOrgEx 4
|
||||||
NtGdiOffsetWindowOrgEx 4
|
NtGdiOffsetWindowOrgEx 4
|
||||||
|
|
Loading…
Reference in a new issue