21#ifndef __WINE_D3DX9CORE_H
22#define __WINE_D3DX9CORE_H
29#define D3DX_VERSION 0x0902
30#ifndef D3DX_SDK_VERSION
31#define D3DX_SDK_VERSION 36
33#define D3DXSPRITE_DONOTSAVESTATE 0x00000001
34#define D3DXSPRITE_DONOTMODIFY_RENDERSTATE 0x00000002
35#define D3DXSPRITE_OBJECTSPACE 0x00000004
36#define D3DXSPRITE_BILLBOARD 0x00000008
37#define D3DXSPRITE_ALPHABLEND 0x00000010
38#define D3DXSPRITE_SORT_TEXTURE 0x00000020
39#define D3DXSPRITE_SORT_DEPTH_FRONTTOBACK 0x00000040
40#define D3DXSPRITE_SORT_DEPTH_BACKTOFRONT 0x00000080
41#define D3DXSPRITE_DO_NOT_ADDREF_TEXTURE 0x00000100
46DEFINE_GUID(IID_ID3DXBuffer, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);
47DEFINE_GUID(IID_ID3DXFont, 0xd79dbb70, 0x5f21, 0x4d36, 0xbb, 0xc2, 0xff, 0x52, 0x5c, 0x21, 0x3c, 0xdc);
48DEFINE_GUID(IID_ID3DXLine, 0xd379ba7f, 0x9042, 0x4ac4, 0x9f, 0x5e, 0x58, 0x19, 0x2a, 0x4c, 0x6b, 0xd8);
49DEFINE_GUID(IID_ID3DXRenderToEnvMap, 0x313f1b4b, 0xc7b0, 0x4fa2, 0x9d, 0x9d, 0x8d, 0x38, 0xb, 0x64, 0x38, 0x5e);
50DEFINE_GUID(IID_ID3DXRenderToSurface, 0x6985f346, 0x2c3d, 0x43b3, 0xbe, 0x8b, 0xda, 0xae, 0x8a, 0x3, 0xd8, 0x94);
51DEFINE_GUID(IID_ID3DXSprite, 0xba0b762d, 0x7d28, 0x43ec, 0xb9, 0xdc, 0x2f, 0x84, 0x44, 0x3b, 0x6, 0x14);
66#define INTERFACE ID3DXBuffer
79#if !defined(__cplusplus) || defined(CINTERFACE)
81#define ID3DXBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
82#define ID3DXBuffer_AddRef(p) (p)->lpVtbl->AddRef(p)
83#define ID3DXBuffer_Release(p) (p)->lpVtbl->Release(p)
85#define ID3DXBuffer_GetBufferPointer(p) (p)->lpVtbl->GetBufferPointer(p)
86#define ID3DXBuffer_GetBufferSize(p) (p)->lpVtbl->GetBufferSize(p)
89#define ID3DXBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
90#define ID3DXBuffer_AddRef(p) (p)->AddRef()
91#define ID3DXBuffer_Release(p) (p)->Release()
93#define ID3DXBuffer_GetBufferPointer(p) (p)->GetBufferPointer()
94#define ID3DXBuffer_GetBufferSize(p) (p)->GetBufferSize()
128#define INTERFACE ID3DXFont
161#if !defined(__cplusplus) || defined(CINTERFACE)
164#define ID3DXFont_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
165#define ID3DXFont_AddRef(p) (p)->lpVtbl->AddRef(p)
166#define ID3DXFont_Release(p) (p)->lpVtbl->Release(p)
168#define ID3DXFont_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
169#define ID3DXFont_GetDescA(p,a) (p)->lpVtbl->GetDescA(p,a)
170#define ID3DXFont_GetDescW(p,a) (p)->lpVtbl->GetDescW(p,a)
171#define ID3DXFont_GetTextMetricsA(p,a) (p)->lpVtbl->GetTextMetricsA(p,a)
172#define ID3DXFont_GetTextMetricsW(p,a) (p)->lpVtbl->GetTextMetricsW(p,a)
173#define ID3DXFont_GetDC(p) (p)->lpVtbl->GetDC(p)
174#define ID3DXFont_GetGlyphData(p,a,b,c,d) (p)->lpVtbl->GetGlyphData(p,a,b,c,d)
175#define ID3DXFont_PreloadCharacters(p,a,b) (p)->lpVtbl->PreloadCharacters(p,a,b)
176#define ID3DXFont_PreloadGlyphs(p,a,b) (p)->lpVtbl->PreloadGlyphs(p,a,b)
177#define ID3DXFont_PreloadTextA(p,a,b) (p)->lpVtbl->PreloadTextA(p,a,b)
178#define ID3DXFont_PreloadTextW(p,a,b) (p)->lpVtbl->PreloadTextW(p,a,b)
179#define ID3DXFont_DrawTextA(p,a,b,c,d,e,f) (p)->lpVtbl->DrawTextA(p,a,b,c,d,e,f)
180#define ID3DXFont_DrawTextW(p,a,b,c,d,e,f) (p)->lpVtbl->DrawTextW(p,a,b,c,d,e,f)
181#define ID3DXFont_OnLostDevice(p) (p)->lpVtbl->OnLostDevice(p)
182#define ID3DXFont_OnResetDevice(p) (p)->lpVtbl->OnResetDevice(p)
185#define ID3DXFont_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
186#define ID3DXFont_AddRef(p) (p)->AddRef()
187#define ID3DXFont_Release(p) (p)->Release()
189#define ID3DXFont_GetDevice(p,a) (p)->GetDevice(a)
190#define ID3DXFont_GetDescA(p,a) (p)->GetDescA(a)
191#define ID3DXFont_GetDescW(p,a) (p)->GetDescW(a)
192#define ID3DXFont_GetTextMetricsA(p,a) (p)->GetTextMetricsA(a)
193#define ID3DXFont_GetTextMetricsW(p,a) (p)->GetTextMetricsW(a)
194#define ID3DXFont_GetDC(p) (p)->GetDC()
195#define ID3DXFont_GetGlyphData(p,a,b,c,d) (p)->GetGlyphData(a,b,c,d)
196#define ID3DXFont_PreloadCharacters(p,a,b) (p)->PreloadCharacters(a,b)
197#define ID3DXFont_PreloadGlyphs(p,a,b) (p)->PreloadGlyphs(a,b)
198#define ID3DXFont_PreloadTextA(p,a,b) (p)->PreloadTextA(a,b)
199#define ID3DXFont_PreloadTextW(p,a,b) (p)->PreloadTextW(a,b)
200#define ID3DXFont_DrawTextA(p,a,b,c,d,e,f) (p)->DrawTextA(a,b,c,d,e,f)
201#define ID3DXFont_DrawTextW(p,a,b,c,d,e,f) (p)->DrawTextW(a,b,c,d,e,f)
202#define ID3DXFont_OnLostDevice(p) (p)->OnLostDevice()
203#define ID3DXFont_OnResetDevice(p) (p)->OnResetDevice()
205#define ID3DXFont_DrawText WINELIB_NAME_AW(ID3DXFont_DrawText)
206#define ID3DXFont_GetDesc WINELIB_NAME_AW(ID3DXFont_GetDesc)
207#define ID3DXFont_GetTextMetrics WINELIB_NAME_AW(ID3DXFont_GetTextMetrics)
208#define ID3DXFont_PreloadText WINELIB_NAME_AW(ID3DXFont_PreloadText)
210#define INTERFACE ID3DXLine
242#if !defined(__cplusplus) || defined(CINTERFACE)
244#define ID3DXLine_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
245#define ID3DXLine_AddRef(p) (p)->lpVtbl->AddRef(p)
246#define ID3DXLine_Release(p) (p)->lpVtbl->Release(p)
248#define ID3DXLine_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
249#define ID3DXLine_Begin(p) (p)->lpVtbl->Begin(p)
250#define ID3DXLine_Draw(p,a,b,c) (p)->lpVtbl->Draw(p,a,b,c)
251#define ID3DXLine_DrawTransform(p,a,b,c,d) (p)->lpVtbl->DrawTransform(p,a,b,c,d)
252#define ID3DXLine_SetPattern(p,a) (p)->lpVtbl->SetPattern(p,a)
253#define ID3DXLine_GetPattern(p) (p)->lpVtbl->GetPattern(p)
254#define ID3DXLine_SetPatternScale(p,a) (p)->lpVtbl->SetPatternScale(p,a)
255#define ID3DXLine_GetPatternScale(p) (p)->lpVtbl->GetPatternScale(p)
256#define ID3DXLine_SetWidth(p,a) (p)->lpVtbl->SetWidth(p,a)
257#define ID3DXLine_GetWidth(p) (p)->lpVtbl->GetWidth(p)
258#define ID3DXLine_SetAntialias(p,a) (p)->lpVtbl->SetAntialias(p,a)
259#define ID3DXLine_GetAntialias(p) (p)->lpVtbl->GetAntialias(p)
260#define ID3DXLine_SetGLLines(p,a) (p)->lpVtbl->SetGLLines(p,a)
261#define ID3DXLine_GetGLLines(p) (p)->lpVtbl->GetGLLines(p)
262#define ID3DXLine_End(p) (p)->lpVtbl->End(p)
263#define ID3DXLine_OnLostDevice(p) (p)->lpVtbl->OnLostDevice(p)
264#define ID3DXLine_OnResetDevice(p) (p)->lpVtbl->OnResetDevice(p)
267#define ID3DXLine_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
268#define ID3DXLine_AddRef(p) (p)->AddRef()
269#define ID3DXLine_Release(p) (p)->Release()
271#define ID3DXLine_GetDevice(p,a) (p)->GetDevice(a)
272#define ID3DXLine_Begin(p) (p)->Begin()
273#define ID3DXLine_Draw(p,a,b,c) (p)->Draw(a,b,c)
274#define ID3DXLine_DrawTransform(p,a,b,c,d) (p)->DrawTransform(a,b,c,d)
275#define ID3DXLine_SetPattern(p,a) (p)->SetPattern(a)
276#define ID3DXLine_GetPattern(p) (p)->GetPattern()
277#define ID3DXLine_SetPatternScale(p,a) (p)->SetPatternScale(a)
278#define ID3DXLine_GetPatternScale(p) (p)->GetPatternScale()
279#define ID3DXLine_SetWidth(p,a) (p)->SetWidth(a)
280#define ID3DXLine_GetWidth(p) (p)->GetWidth()
281#define ID3DXLine_SetAntialias(p,a) (p)->SetAntialias(a)
282#define ID3DXLine_GetAntialias(p) (p)->GetAntialias()
283#define ID3DXLine_SetGLLines(p,a) (p)->SetGLLines(a)
284#define ID3DXLine_GetGLLines(p) (p)->GetGLLines()
285#define ID3DXLine_End(p) (p)->End()
286#define ID3DXLine_OnLostDevice(p) (p)->OnLostDevice()
287#define ID3DXLine_OnResetDevice(p) (p)->OnResetDevice()
299#define INTERFACE ID3DXRenderToEnvMap
313 STDMETHOD(BeginHemisphere)(
THIS_ struct IDirect3DTexture9 *texzpos,
struct IDirect3DTexture9 *texzneg)
PURE;
314 STDMETHOD(BeginParabolic)(
THIS_ struct IDirect3DTexture9 *texzpos,
struct IDirect3DTexture9 *texzneg)
PURE;
324#if !defined(__cplusplus) || defined(CINTERFACE)
326#define ID3DXRenderToEnvMap_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
327#define ID3DXRenderToEnvMap_AddRef(p) (p)->lpVtbl->AddRef(p)
328#define ID3DXRenderToEnvMap_Release(p) (p)->lpVtbl->Release(p)
330#define ID3DXRenderToEnvMap_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
331#define ID3DXRenderToEnvMap_GetDesc(p,a) (p)->lpVtbl->GetDesc(p,a)
332#define ID3DXRenderToEnvMap_BeginCube(p,a) (p)->lpVtbl->BeginCube(p,a)
333#define ID3DXRenderToEnvMap_BeginSphere(p,a) (p)->lpVtbl->BeginSphere(p,a)
334#define ID3DXRenderToEnvMap_BeginHemisphere(p,a,b) (p)->lpVtbl->BeginHemisphere(p,a,b)
335#define ID3DXRenderToEnvMap_BeginParabolic(p,a,b) (p)->lpVtbl->BeginParabolic(p,a,b)
336#define ID3DXRenderToEnvMap_Face(p,a,b) (p)->lpVtbl->Face(p,a,b)
337#define ID3DXRenderToEnvMap_End(p,a) (p)->lpVtbl->End(p,a)
338#define ID3DXRenderToEnvMap_OnLostDevice(p) (p)->lpVtbl->OnLostDevice(p)
339#define ID3DXRenderToEnvMap_OnLostDevice(p) (p)->lpVtbl->OnLostDevice(p)
342#define ID3DXRenderToEnvMap_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
343#define ID3DXRenderToEnvMap_AddRef(p) (p)->AddRef()
344#define ID3DXRenderToEnvMap_Release(p) (p)->Release()
346#define ID3DXRenderToEnvMap_GetDevice(p,a) (p)->GetDevice(a)
347#define ID3DXRenderToEnvMap_GetDesc(p,a) (p)->GetDesc(a)
348#define ID3DXRenderToEnvMap_BeginCube(p,a) (p)->BeginCube(a)
349#define ID3DXRenderToEnvMap_BeginSphere(p,a) (p)->BeginSphere(a)
350#define ID3DXRenderToEnvMap_BeginHemisphere(p,a,b) (p)->BeginHemisphere(a,b)
351#define ID3DXRenderToEnvMap_BeginParabolic(p,a,b) (p)->BeginParabolic(a,b)
352#define ID3DXRenderToEnvMap_Face(p,a,b) (p)->Face(a,b)
353#define ID3DXRenderToEnvMap_End(p,a) (p)->End(a)
354#define ID3DXRenderToEnvMap_OnLostDevice(p) (p)->OnLostDevice()
355#define ID3DXRenderToEnvMap_OnLostDevice(p) (p)->OnLostDevice()
367#define INTERFACE ID3DXRenderToSurface
386#if !defined(__cplusplus) || defined(CINTERFACE)
388#define ID3DXRenderToSurface_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
389#define ID3DXRenderToSurface_AddRef(p) (p)->lpVtbl->AddRef(p)
390#define ID3DXRenderToSurface_Release(p) (p)->lpVtbl->Release(p)
392#define ID3DXRenderToSurface_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
393#define ID3DXRenderToSurface_GetDesc(p,a) (p)->lpVtbl->GetDesc(p,a)
394#define ID3DXRenderToSurface_BeginScene(p,a,b) (p)->lpVtbl->BeginScene(p,a,b)
395#define ID3DXRenderToSurface_EndScene(p,a) (p)->lpVtbl->EndScene(p,a)
396#define ID3DXRenderToSurface_OnLostDevice(p) (p)->lpVtbl->OnLostDevice(p)
397#define ID3DXRenderToSurface_OnResetDevice(p) (p)->lpVtbl->OnResetDevice(p)
400#define ID3DXRenderToSurface_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
401#define ID3DXRenderToSurface_AddRef(p) (p)->AddRef()
402#define ID3DXRenderToSurface_Release(p) (p)->Release()
404#define ID3DXRenderToSurface_GetDevice(p,a) (p)->GetDevice(a)
405#define ID3DXRenderToSurface_GetDesc(p,a) (p)->GetDesc(a)
406#define ID3DXRenderToSurface_BeginScene(p,a,b) (p)->BeginScene(a,b)
407#define ID3DXRenderToSurface_EndScene(p,a) (p)->EndScene(a)
408#define ID3DXRenderToSurface_OnLostDevice(p) (p)->OnLostDevice()
409#define ID3DXRenderToSurface_OnResetDevice(p) (p)->OnResetDevice()
412#define INTERFACE ID3DXSprite
438#if !defined(__cplusplus) || defined(CINTERFACE)
440#define ID3DXSprite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
441#define ID3DXSprite_AddRef(p) (p)->lpVtbl->AddRef(p)
442#define ID3DXSprite_Release(p) (p)->lpVtbl->Release(p)
444#define ID3DXSprite_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
445#define ID3DXSprite_GetTransform(p,a) (p)->lpVtbl->GetTransform(p,a)
446#define ID3DXSprite_SetTransform(p,a) (p)->lpVtbl->SetTransform(p,a)
447#define ID3DXSprite_SetWorldViewRH(p,a,b) (p)->lpVtbl->SetWorldViewRH(p,a,b)
448#define ID3DXSprite_SetWorldViewLH(p,a,b) (p)->lpVtbl->SetWorldViewLH(p,a,b)
449#define ID3DXSprite_Begin(p,a) (p)->lpVtbl->Begin(p,a)
450#define ID3DXSprite_Draw(p,a,b,c,d,e) (p)->lpVtbl->Draw(p,a,b,c,d,e)
451#define ID3DXSprite_Flush(p) (p)->lpVtbl->Flush(p)
452#define ID3DXSprite_End(p) (p)->lpVtbl->End(p)
453#define ID3DXSprite_OnLostDevice(p) (p)->lpVtbl->OnLostDevice(p)
454#define ID3DXSprite_OnResetDevice(p) (p)->lpVtbl->OnResetDevice(p)
457#define ID3DXSprite_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
458#define ID3DXSprite_AddRef(p) (p)->AddRef()
459#define ID3DXSprite_Release(p) (p)->Release()
461#define ID3DXSprite_GetDevice(p,a) (p)->GetDevice(a)
462#define ID3DXSprite_GetTransform(p,a) (p)->GetTransform(a)
463#define ID3DXSprite_SetTransform(p,a) (p)->SetTransform(a)
464#define ID3DXSprite_SetWorldViewRH(p,a,b) (p)->SetWorldViewRH(a,b)
465#define ID3DXSprite_SetWorldViewLH(p,a,b) (p)->SetWorldViewLH(a,b)
466#define ID3DXSprite_Begin(p,a) (p)->Begin(a)
467#define ID3DXSprite_Draw(p,a,b,c,d,e) (p)->Draw(a,b,c,d,e)
468#define ID3DXSprite_Flush(p) (p)->Flush()
469#define ID3DXSprite_End(p) (p)->End()
470#define ID3DXSprite_OnLostDevice(p) (p)->OnLostDevice()
471#define ID3DXSprite_OnResetDevice(p) (p)->OnResetDevice()
488#define D3DXCreateFont WINELIB_NAME_AW(D3DXCreateFont)
493#define D3DXCreateFontIndirect WINELIB_NAME_AW(D3DXCreateFontIndirect)
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 ACPI_STATUS const char UINT32 ACPI_STATUS const char UINT32 const char const char UINT32 const char BOOLEAN Begin
#define DECLARE_INTERFACE_(i, b)
enum _D3DFORMAT D3DFORMAT
enum _D3DCUBEMAP_FACES D3DCUBEMAP_FACES
struct ID3DXBuffer ID3DXBuffer
struct ID3DXFont ID3DXFont
HRESULT WINAPI D3DXCreateRenderToEnvMap(struct IDirect3DDevice9 *device, UINT size, UINT miplevels, D3DFORMAT format, BOOL stencil, D3DFORMAT stencil_format, struct ID3DXRenderToEnvMap **rtem)
HRESULT WINAPI D3DXCreateSprite(struct IDirect3DDevice9 *device, struct ID3DXSprite **sprite)
struct ID3DXFont * LPD3DXFONT
struct ID3DXLine * LPD3DXLINE
HRESULT WINAPI D3DXCreateFontW(struct IDirect3DDevice9 *device, INT height, UINT width, UINT weight, UINT miplevels, BOOL italic, DWORD charset, DWORD precision, DWORD quality, DWORD pitchandfamily, const WCHAR *facename, struct ID3DXFont **font)
struct ID3DXRenderToEnvMap * LPD3DXRenderToEnvMap
struct _D3DXFONT_DESCW D3DXFONT_DESCW
struct _D3DXRTS_DESC D3DXRTS_DESC
HRESULT WINAPI D3DXCreateFontA(struct IDirect3DDevice9 *device, INT height, UINT width, UINT weight, UINT miplevels, BOOL italic, DWORD charset, DWORD precision, DWORD quality, DWORD pitchandfamily, const char *facename, struct ID3DXFont **font)
HRESULT WINAPI D3DXCreateLine(struct IDirect3DDevice9 *device, struct ID3DXLine **line)
UINT WINAPI D3DXGetDriverLevel(struct IDirect3DDevice9 *device)
struct _D3DXFONT_DESCW * LPD3DXFONT_DESCW
struct _D3DXFONT_DESCA * LPD3DXFONT_DESCA
HRESULT WINAPI D3DXCreateFontIndirectA(struct IDirect3DDevice9 *device, const D3DXFONT_DESCA *desc, struct ID3DXFont **font)
struct ID3DXBuffer * LPD3DXBUFFER
struct ID3DXSprite * LPD3DXSPRITE
struct ID3DXRenderToSurface * LPD3DXRENDERTOSURFACE
HRESULT WINAPI D3DXCreateFontIndirectW(struct IDirect3DDevice9 *device, const D3DXFONT_DESCW *desc, struct ID3DXFont **font)
struct _D3DXFONT_DESCA D3DXFONT_DESCA
struct _D3DXRTE_DESC D3DXRTE_DESC
HRESULT WINAPI D3DXCreateRenderToSurface(struct IDirect3DDevice9 *device, UINT width, UINT height, D3DFORMAT format, BOOL stencil, D3DFORMAT stencil_format, struct ID3DXRenderToSurface **rts)
BOOL WINAPI D3DXCheckVersion(UINT d3dsdkvers, UINT d3dxsdkvers)
BOOL WINAPI D3DXDebugMute(BOOL mute)
GLuint GLuint GLsizei count
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
GLuint GLenum GLenum transform
GLenum GLenum GLenum GLenum GLenum scale
GLsizei GLenum const GLvoid GLuint GLsizei GLfloat * metrics
GLenum GLint GLint * precision
GLint GLfloat GLint stencil
static const WCHAR desc[]
static HRESULT QueryInterface(REFIID, void **)
static ULONG WINAPI AddRef(IStream *iface)
INT WINAPI DrawTextW(HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags)
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
CHAR FaceName[LF_FACESIZE]
WCHAR FaceName[LF_FACESIZE]
D3DFORMAT DepthStencilFormat
D3DFORMAT DepthStencilFormat
INT WINAPI DrawTextA(HDC hdc, LPCSTR str, INT count, LPRECT rect, UINT flags)
#define DECL_WINELIB_TYPE_AW(type)
BOOL WINAPI GetTextMetricsW(_In_ HDC, _Out_ LPTEXTMETRICW)
BOOL WINAPI GetTransform(HDC, DWORD, XFORM *)
BOOL WINAPI GetTextMetricsA(_In_ HDC, _Out_ LPTEXTMETRICA)
HDC WINAPI GetDC(_In_opt_ HWND)