/** @file Implements a large portion of the Win32 API as a protocol. ;****************************************************************************** ;* Copyright (c) 2013 - 2019, Insyde Software Corp. All Rights Reserved. ;* ;* You may not reproduce, distribute, publish, display, perform, modify, adapt, ;* transmit, broadcast, present, recite, release, license or otherwise exploit ;* any part of this publication in any form, by any means, without the prior ;* written permission of Insyde Software Corporation. ;* ;****************************************************************************** */ #ifndef __H2O_WINDOW_PROTOCOL_H__ #define __H2O_WINDOW_PROTOCOL_H__ #include "H2OWindow/mwtypes.h" #include "H2OWindow/windows.h" #include "H2OWindow/windef.h" #include "H2OWindow/wingdi.h" #include "H2OWindow/winuser.h" #include "H2OWindow/wintern.h" #define H2O_WINDOW_PROTOCOL_GUID \ { 0x10e432f7,0x3cbd,0x49bd, {0x83, 0xf6, 0x96, 0x23, 0x10, 0x98, 0x26, 0xa5}} typedef struct _H2O_WINDOW_PROTOCOL H2O_WINDOW_PROTOCOL; typedef LRESULT (EFIAPI *H2O_WM_DEF_WINDOW_PROC) ( HWND hwnd, UINT32 msg, WPARAM wParam, LPARAM lParam ); typedef void (EFIAPI *H2O_WM_MW_SET_KEYBOARD_TRANSLATOR) ( LPFN_KEYBTRANSLATE pFn ); typedef HDC (EFIAPI *H2O_WM_GET_DC_EX) ( HWND hwnd, HRGN hrgnClip, UINT32 flags ); typedef HDC (EFIAPI *H2O_WM_GET_DC) ( HWND hwnd ); typedef HDC (EFIAPI *H2O_WM_GET_WINDOW_DC) ( HWND hwnd ); typedef INT32 (EFIAPI *H2O_WM_RELEASE_DC) ( HWND hwnd, HDC hdc ); typedef BOOL (EFIAPI *H2O_WM_DELETE_DC) ( HDC hdc ); typedef HDC (EFIAPI *H2O_WM_BEGIN_PAINT) ( HWND hwnd, LPPAINTSTRUCT lpPaint ); typedef BOOL (EFIAPI *H2O_WM_END_PAINT) ( HWND hwnd, CONST PAINTSTRUCT *lpPaint ); typedef COLORREF (EFIAPI *H2O_WM_SET_TEXT_COLOR) ( HDC hdc, COLORREF crColor ); typedef COLORREF (EFIAPI *H2O_WM_GET_TEXT_COLOR) ( HDC hdc ); typedef COLORREF (EFIAPI *H2O_WM_SET_BK_COLOR) ( HDC hdc, COLORREF crColor ); typedef INT32 (EFIAPI *H2O_WM_SET_BK_MODE) ( HDC hdc, INT32 iBkMode ); typedef UINT32 (EFIAPI *H2O_WM_SET_TEXT_ALIGN) ( HDC hdc, UINT32 fMode ); typedef UINT32 (EFIAPI *H2O_WM_GET_TEXT_ALIGN) ( HDC hdc ); typedef INT32 (EFIAPI *H2O_WM_SET_ROP2) ( HDC hdc, INT32 fnDrawMode ); typedef COLORREF (EFIAPI *H2O_WM_GET_PIXEL) ( HDC hdc, INT32 x, INT32 y ); typedef COLORREF (EFIAPI *H2O_WM_SET_PIXEL) ( HDC hdc, INT32 x, INT32 y, COLORREF crColor ); typedef BOOL (EFIAPI *H2O_WM_MOVE_TO_EX) ( HDC hdc, INT32 x, INT32 y, LPPOINT lpPoint ); typedef BOOL (EFIAPI *H2O_WM_LINE_TO) ( HDC hdc, INT32 x, INT32 y ); typedef BOOL (EFIAPI *H2O_WM_POLYLINE) ( HDC hdc, CONST POINT *lppt, INT32 cPoints ); typedef BOOL (EFIAPI *H2O_WM_RECTANGLE) ( HDC hdc, INT32 nLeft, INT32 nTop, INT32 nRight, INT32 nBottom ); typedef BOOL (EFIAPI *H2O_WM_ELLIPSE) ( HDC hdc, INT32 nLeftRect, INT32 nTopRect, INT32 nRightRect, INT32 nBottomRect ); typedef BOOL (EFIAPI *H2O_WM_ARC) ( HDC hdc, INT32 nLeftRect, INT32 nTopRect, INT32 nRightRect, INT32 nBottomRect ); typedef BOOL (EFIAPI *H2O_WM_PIE) ( HDC hdc, INT32 nLeftRect, INT32 nTopRect, INT32 nRightRect, INT32 nBottomRect, INT32 nXRadial1, INT32 nYRadial1, INT32 nXRadial2, INT32 nYRadial2 ); typedef BOOL (EFIAPI *H2O_WM_POLYGON) ( HDC hdc, CONST POINT *lpPoints, INT32 nCount ); typedef BOOL (EFIAPI *H2O_WM_POLY_POLYGON) ( HDC hdc, CONST POINT *lpPoints, LPINT lpPolyCounts, INT32 nCount ); typedef INT32 (EFIAPI *H2O_WM_FILL_RECT) ( HDC hdc, CONST RECT *lprc, HBRUSH hbr ); typedef void (EFIAPI *H2O_WM_MW_SET_TEXT_CODING) ( long mode ); typedef BOOL (EFIAPI *H2O_WM_TEXT_OUT ) ( HDC Hdc, INT32 x, INT32 y, LPCWSTR String, INT32 cbString ); typedef BOOL (EFIAPI *H2O_WM_TEXT_OUT_W) ( HDC hdc, INT32 x, INT32 y, LPCWSTR lpszString, INT32 cbString ); typedef BOOL (EFIAPI *H2O_WM_EXT_TEXT_OUT) ( HDC hdc, INT32 x, INT32 y, UINT32 fuOptions, CONST RECT *lprc, LPCSTR lpszString, UINT32 cbCount, CONST INT32 *lpDx ); typedef BOOL (EFIAPI *H2O_WM_EXT_TEXT_OUT_W) ( HDC hdc, INT32 x, INT32 y, UINT32 fuOptions, CONST RECT *lprc, LPCWSTR lpszString, UINT cbCount, CONST INT *lpDx ); typedef INT32 (EFIAPI *H2O_WM_DRAW_TEXT_A) ( HDC hdc, LPCSTR lpString, INT32 nCount, LPRECT lpRect, UINT32 uFormat ); typedef INT32 (EFIAPI *H2O_WM_DRAW_TEXT) ( HDC hdc, LPCWSTR lpString, INT32 nCount, LPRECT lpRect, UINT32 uFormat ); typedef BOOL (EFIAPI *H2O_WM_DRAW_DIB) ( HDC hdc, INT32 x, INT32 y, PMWIMAGEHDR pimage ); typedef UINT32 (EFIAPI *H2O_WM_GET_SYS_COLOR) ( INT32 nIndex ); typedef COLORREF (EFIAPI *H2O_WM_SET_SYS_COLOR) ( INT32 nIndex, COLORREF crColor /* Microwindows only*/ ); typedef HBRUSH (EFIAPI *H2O_WM_GET_SYS_COLOR_BRUSH) ( INT32 nIndex ); typedef HGDIOBJ (EFIAPI *H2O_WM_GET_STOCK_OBJECT) ( INT32 nObject ); typedef HGDIOBJ (EFIAPI *H2O_WM_SELECT_OBJECT) ( HDC hdc, HGDIOBJ hObject ); typedef BOOL (EFIAPI *H2O_WM_DELETE_OBJECT) ( HGDIOBJ hObject ); typedef INT32 (EFIAPI *H2O_WM_SELECT_CLIP_RGN) ( HDC hdc, HRGN hrgn ); typedef INT32 (EFIAPI *H2O_WM_EXT_SELECT_CLIP_RGN) ( HDC hdc, HRGN hrgn, INT32 fnMode ); typedef INT32 (EFIAPI *H2O_WM_GET_UPDATE_RGN) ( HWND hwnd, HRGN hrgn, BOOL bErase ); typedef BOOL (EFIAPI *H2O_WM_GET_UPDATE_RECT) ( HWND hwnd, LPRECT lpRect, BOOL bErase ); typedef HBRUSH (EFIAPI *H2O_WM_CREATE_SOLID_BRUSH) ( COLORREF crColor ); typedef HPEN (EFIAPI *H2O_WM_CREATE_PEN) ( INT32 nPenStyle, INT32 nWidth, COLORREF crColor ); typedef HBITMAP (EFIAPI *H2O_WM_CREATE_COMPATIBLE_BITMAP) ( HDC hdc, INT32 nWidth, INT32 nHeight ); typedef HDC (EFIAPI *H2O_WM_CREATE_COMPATIBLE_DC) ( HDC hdc ); typedef BOOL (EFIAPI *H2O_WM_BIT_BLT) ( HDC hdcDest, INT32 nXDest, INT32 nYDest, INT32 nWidth, INT32 nHeight, HDC hdcSrc, INT32 nXSrc, INT32 nYSrc, UINT32 dwRop ); typedef BOOL (EFIAPI *H2O_WM_STRETCH_BLT) ( HDC hdcDest, INT32 nXOriginDest, INT32 nYOriginDest, INT32 nWidthDest, INT32 nHeightDest, HDC hdcSrc, INT32 nXOriginSrc, INT32 nYOriginSrc, INT32 nWidthSrc, INT32 nHeightSrc, DWORD dwRop ); typedef UINT32 (EFIAPI *H2O_WM_GET_SYSTEM_PALETTE_ENTRIES) ( HDC hdc, UINT32 iStartIndex, UINT32 nEntries, LPPALETTEENTRY lppe ); typedef INT32 (EFIAPI *H2O_WM_GET_DEVICE_CAPS) ( HDC hdc, INT32 nIndex ); typedef BOOL (EFIAPI *H2O_WM_DRAW_FOCUS_RECT) ( HDC hdc, LPRECT prect ); typedef INT32 (EFIAPI *H2O_WM_TABBED_TEXT_OUT) ( HDC hdc, INT32 x, INT32 y, LPCTSTR lpszString, INT32 cbString, INT32 ntabs, LPINT lpTabStops, INT32 nTabOrigin ); typedef UINT32 (EFIAPI *H2O_WM_GET_TABBED_TEXT_EXTENT) ( HDC hdc, INT32 x, INT32 y, LPCTSTR lpszString, INT32 cbString ); typedef INT32 (EFIAPI *H2O_WM_MUL_DIV) ( INT32 nMultiplicand, INT32 nMultiplier, INT32 nDivisor ); typedef BOOL (EFIAPI *H2O_WM_GET_TEXT_EXTENT_POINT32) ( HDC hdc, /* handle to DC*/ LPCWSTR lpszStr, /* character string*/ int cchString, /* number of characters*/ LPSIZE lpSize /* string dimensions*/ ); typedef UINT64 (EFIAPI *H2O_WM_GET_TICK_COUNT) ( VOID ); typedef VOID (EFIAPI *H2O_WM_SLEEP) ( UINT32 dwMilliseconds ); typedef INT32 (EFIAPI *H2O_WM_OFFSET_RGN) ( HRGN hrgn, INT32 x, INT32 y ); typedef INT32 (EFIAPI *H2O_WM_GET_RGN_BOX) ( HRGN hrgn, LPRECT rect ); typedef HRGN (EFIAPI *H2O_WM_CREATE_RECT_RGN) ( INT32 left, INT32 top, INT32 right, INT32 bottom ); typedef HRGN (EFIAPI *H2O_WM_CREATE_RECT_RGN_INDIRECT) ( const RECT* rect ); typedef VOID (EFIAPI *H2O_WM_SET_RECT_RGN) ( HRGN hrgn, INT32 left, INT32 top, INT32 right, INT32 bottom ); typedef HRGN (EFIAPI *H2O_WM_CREATE_ROUND_RECT_RGN) ( INT32 left, INT32 top, INT32 right, INT32 bottom, INT32 ellipse_width, INT32 ellipse_height ); typedef HRGN (EFIAPI *H2O_WM_CREATE_ELLIPTIC_RGN) ( INT32 left, INT32 top, INT32 right, INT32 bottom ); typedef HRGN (EFIAPI *H2O_WM_CREATE_ELLIPTIC_RGN_INDIRECT) ( const RECT *rect ); typedef HRGN (EFIAPI *H2O_WM_CREATE_POLYGON_RGN) ( const POINT *points, INT32 count, INT32 mode ); typedef UINT32 (EFIAPI *H2O_WM_GET_REGION_DATA) ( HRGN hrgn, UINT32 count, LPRGNDATA rgndata ); typedef BOOL (EFIAPI *H2O_WM_PT_IN_REGION) ( HRGN hrgn, INT32 x, INT32 y ); typedef BOOL (EFIAPI *H2O_WM_RECT_IN_REGION) ( HRGN hrgn, const RECT *rect ); typedef BOOL (EFIAPI *H2O_WM_EQUAL_RGN) ( HRGN hrgn1, HRGN hrgn2 ); typedef INT32 (EFIAPI *H2O_WM_COMBINE_RGN) ( HRGN hDest, HRGN hSrc1, HRGN hSrc2, INT32 mode ); typedef BOOL (EFIAPI *H2O_WM_INTERSECT_RECT) ( LPRECT dest, const RECT *src1, const RECT *src2 ); typedef BOOL (EFIAPI *H2O_WM_UNION_RECT) ( LPRECT dest, const RECT *src1, const RECT *src2 ); typedef BOOL (EFIAPI *H2O_WM_EQUAL_RECT) ( const RECT* rect1, const RECT* rect2 ); typedef BOOL (EFIAPI *H2O_WM_SUBTRACT_RECT) ( LPRECT dest, const RECT *src1, const RECT *src2 ); typedef LRESULT (EFIAPI *H2O_WM_CALL_WINDOW_PROC) ( WNDPROC lpPrevWndFunc, HWND hwnd, UINT32 Msg, WPARAM wParam, LPARAM lParam ); typedef LRESULT (EFIAPI *H2O_WM_SEND_MESSAGE) ( HWND hwnd, UINT32 Msg, WPARAM wParam, LPARAM lParam ); typedef BOOL (EFIAPI *H2O_WM_POST_MESSAGE) ( HWND hwnd, UINT32 Msg, WPARAM wParam, LPARAM lParam ); typedef BOOL (EFIAPI *H2O_WM_POST_THREAD_MESSAGE) ( UINT32 dwThreadId, UINT32 Msg, WPARAM wParam, LPARAM lParam ); typedef VOID (EFIAPI *H2O_WM_POST_QUIT_MESSAGE) ( INT32 nExitCode ); typedef BOOL (EFIAPI *H2O_WM_PEEK_MESSAGE) ( LPMSG lpMsg, HWND hwnd, UINT32 uMsgFilterMin, UINT32 uMsgFilterMax, UINT32 wRemoveMsg ); typedef BOOL (EFIAPI *H2O_WM_GET_MESSAGE) ( LPMSG lpMsg, HWND hwnd, UINT32 wMsgFilterMin, UINT32 wMsgFilterMax ); typedef BOOL (EFIAPI *H2O_WM_TRANSLATE_MESSAGE) ( CONST MSG *lpMsg ); typedef LRESULT (EFIAPI *H2O_WM_DISPATCH_MESSAGE) ( CONST MSG *lpMsg ); typedef ATOM (EFIAPI *H2O_WM_REGISTER_CLASS) ( CONST WNDCLASS *lpWndClass ); typedef BOOL (EFIAPI *H2O_WM_UNREGISTER_CLASS) ( LPCWSTR lpClassName, HINSTANCE hInstance ); typedef HWND (EFIAPI *H2O_WM_CREATE_WINDOW_EX) ( UINT32 dwExStyle, LPCWSTR lpClassName, LPCWSTR lpWindowName, UINT32 dwStyle, INT32 x, INT32 y, INT32 nWidth, INT32 nHeight, HWND hwndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam ); typedef BOOL (EFIAPI *H2O_WM_DESTROY_WINDOW) ( HWND hwnd ); typedef BOOL (EFIAPI *H2O_WM_IS_WINDOW) ( HWND hwnd ); typedef BOOL (EFIAPI *H2O_WM_SHOW_WINDOW) ( HWND hwnd, INT32 nCmdShow ); typedef BOOL (EFIAPI *H2O_WM_INVALIDATE_RECT) ( HWND hwnd, CONST RECT *lpRect, BOOL bErase ); typedef BOOL (EFIAPI *H2O_WM_INVALIDATE_RGN) ( HWND hwnd, HRGN hrgn, BOOL bErase ); typedef BOOL (EFIAPI *H2O_WM_VALIDATE_RECT) ( HWND hwnd, CONST RECT *lprc ); typedef BOOL (EFIAPI *H2O_WM_VALIDATE_RGN) ( HWND hwnd, HRGN hrgn ); typedef BOOL (EFIAPI *H2O_WM_UPDATE_WINDOW) ( HWND hwnd ); typedef HWND (EFIAPI *H2O_WM_GET_FOCUS) ( VOID ); typedef HWND (EFIAPI *H2O_WM_SET_FOCUS) ( HWND hwnd ); typedef BOOL (EFIAPI *H2O_WM_SET_FOREGROUND_WINDOW) ( HWND hwnd ); typedef HWND (EFIAPI *H2O_WM_SET_ACTIVE_WINDOW) ( HWND hwnd ); typedef HWND (EFIAPI *H2O_WM_GET_ACTIVE_WINDOW) ( VOID ); typedef BOOL (EFIAPI *H2O_WM_BRING_WINDOW_TO_TOP) ( HWND hwnd ); typedef HWND (EFIAPI *H2O_WM_GET_DESKTOP_WINDOW) ( VOID ); typedef HWND (EFIAPI *H2O_WM_GET_PARENT) ( HWND hwnd ); typedef BOOL (EFIAPI *H2O_WM_ENABLE_WINDOW) ( HWND hwnd, BOOL bEnable ); typedef BOOL (EFIAPI *H2O_WM_ADJUST_WINDOW_RECT_EX) ( LPRECT lpRect, UINT32 dwStyle, BOOL bMenu, UINT32 dwExStyle ); typedef BOOL (EFIAPI *H2O_WM_GET_CLIENT_RECT) ( HWND hwnd, LPRECT lpRect ); typedef BOOL (EFIAPI *H2O_WM_GET_WINDOW_RECT) ( HWND hwnd, LPRECT lpRect ); typedef BOOL (EFIAPI *H2O_WM_CLIENT_TO_SCREEN) ( HWND hwnd, LPPOINT lpPoint ); typedef BOOL (EFIAPI *H2O_WM_SCREEN_TO_CLIENT) ( HWND hwnd, LPPOINT lpPoint ); typedef INT32 (EFIAPI *H2O_WM_MAP_WINDOW_POINTS) ( HWND hwndFrom, HWND hwndTo, LPPOINT lpPoints, UINT32 cPoints ); typedef BOOL (EFIAPI *H2O_WM_SET_RECT) ( LPRECT lprc, INT32 xLeft, INT32 yTop, INT32 xRight, INT32 yBottom ); typedef BOOL (EFIAPI *H2O_WM_SET_RECT_EMPTY) ( LPRECT lprc ); typedef BOOL (EFIAPI *H2O_WM_COPY_RECT) ( LPRECT lprcDst, CONST RECT *lprcSrc ); typedef BOOL (EFIAPI *H2O_WM_IS_RECT_EMPTY) ( CONST RECT *lprc ); typedef BOOL (EFIAPI *H2O_WM_INFLATE_RECT) ( LPRECT lprc, INT32 dx, INT32 dy ); typedef BOOL (EFIAPI *H2O_WM_OFFSET_RECT) ( LPRECT lprc, INT32 dx, INT32 dy ); typedef BOOL (EFIAPI *H2O_WM_PT_IN_RECT) ( CONST RECT *lprc, POINT pt ); typedef INT32 (EFIAPI *H2O_WM_GET_WINDOW_LONG) ( HWND hwnd, INT32 nIndex ); typedef INTN (EFIAPI *H2O_WM_GET_WINDOW_LONG_PTR ) ( HWND hwnd, INT32 nIndex ); typedef INT32 (EFIAPI *H2O_WM_SET_WINDOW_LONG) ( HWND hwnd, INT32 nIndex, INT32 lNewLong ); typedef INTN (EFIAPI *H2O_WM_SET_WINDOW_LONG_PTR ) ( HWND hwnd, INT32 nIndex, INTN lNewLong ); typedef UINT16 (EFIAPI *H2O_WM_GET_WINDOW_WORD) ( HWND hwnd, INT32 nIndex ); typedef UINT16 (EFIAPI *H2O_WM_SET_WINDOW_WORD) ( HWND hwnd, INT32 nIndex, UINT16 wNewWord ); typedef ATOM (EFIAPI *H2O_WM_GLOBAL_FIND_ATOM) ( LPCWSTR lpString ); typedef ATOM (EFIAPI *H2O_WM_GLOBAL_ADD_ATOM) ( LPCWSTR lpString ); typedef BOOL (EFIAPI *H2O_WM_SET_PROP) ( HWND hWnd, LPCWSTR lpString, HANDLE hData ); typedef HANDLE (EFIAPI *H2O_WM_GET_PROP) ( HWND hWnd, LPCWSTR lpString ); typedef HANDLE (EFIAPI *H2O_WM_REMOVE_PROP) ( HWND hWnd, LPCWSTR lpString ); typedef UINT32 (EFIAPI *H2O_WM_GET_CLASS_LONG) ( HWND hwnd, INT32 nIndex ); typedef UINTN (EFIAPI *H2O_WM_GET_CLASS_LONG_PTR) ( HWND hwnd, INT32 nIndex ); typedef INT32 (EFIAPI *H2O_WM_GET_WINDOW_TEXT_LENGTH) ( HWND hwnd ); typedef INT32 (EFIAPI *H2O_WM_GET_WINDOW_TEXT) ( HWND hwnd, LPWSTR lpString, INT32 nMaxCount ); typedef BOOL (EFIAPI *H2O_WM_SET_WINDOW_TEXT) ( HWND hwnd, LPCWSTR lpString ); typedef BOOL (EFIAPI *H2O_WM_MOVE_WINDOW) ( HWND hwnd, INT32 x, INT32 y, INT32 nWidth, INT32 nHeight, BOOL bRepaint ); typedef BOOL (EFIAPI *H2O_WM_GET_CURSOR_POS) ( LPPOINT lpPoint ); typedef HWND (EFIAPI *H2O_WM_GET_CAPTURE) ( VOID ); typedef HWND (EFIAPI *H2O_WM_SET_CAPTURE) ( HWND hwnd ); typedef BOOL (EFIAPI *H2O_WM_RELEASE_CAPTURE) ( VOID ); typedef UINT32 (EFIAPI *H2O_WM_SET_TIMER) ( HWND hwnd, UINT32 idTimer, UINT32 uTimeout, TIMERPROC lpTimerFunc ); typedef BOOL (EFIAPI *H2O_WM_KILL_TIMER) ( HWND hwnd, UINT32 idTimer ); typedef INT32 (EFIAPI *H2O_WM_GET_SYSTEM_METRICS) ( INT32 nIndex ); typedef BOOL (EFIAPI *H2O_WM_SYSTEM_PARAMETERS_INFO ) ( UINT32 uiAction, UINT32 uiParam, PVOID pvParam, UINT32 fWinIni ); typedef HWND (EFIAPI *H2O_WM_GET_DLG_ITEM) ( HWND hDlg, INT32 nIDDlgItem ); typedef BOOL (EFIAPI *H2O_WM_ENUM_CHILD_WINDOWS) ( HWND hWndParent, WNDENUMPROC lpEnumFunc, LPARAM lParam ); typedef BOOL (EFIAPI *H2O_WM_SET_WINDOW_POS) ( HWND hwnd, HWND hwndInsertAfter, INT32 x, INT32 y, INT32 cx, INT32 cy, UINT32 fuFlags ); typedef INT32 (EFIAPI *H2O_WM_GET_CLIP_BOX) ( HDC Hdc, RECT *Rc ); typedef COLORREF (EFIAPI *H2O_WM_SET_DC_PEN_COLOR) ( HDC Hdc, COLORREF Color ); typedef COLORREF (EFIAPI *H2O_WM_SET_DC_BRUSH_COLOR) ( HDC Hdc, COLORREF Color ); typedef INT32 (EFIAPI *H2O_WM_MW_OPEN) ( VOID ); typedef VOID (EFIAPI *H2O_WM_MW_CLOSE) ( VOID ); typedef VOID (EFIAPI *H2O_WM_GD_CLOSE_MOUSE) ( VOID ); typedef INT32 (EFIAPI *H2O_WM_GD_OPEN_MOUSE) ( VOID ); typedef int (EFIAPI *H2O_WM_MW_FAST_FILL_RECT) ( IN HDC hDC, IN CONST RECT *lprc, IN COLORREF crColor ); typedef VOID (EFIAPI *H2O_WM_GD_DRAW_IMAGE_PART_TO_FIT) ( PSD psd, MWCOORD x, MWCOORD y, MWCOORD width, MWCOORD height, MWCOORD sx, MWCOORD sy, MWCOORD swidth, MWCOORD sheight, PSD pmd ); typedef PSD (EFIAPI *H2O_WM_GD_LOAD_IMAGE_FROM_BUFFER) ( IN EFI_IMAGE_INPUT *Image ); typedef PSD (EFIAPI *H2O_WM_GD_LOAD_IMAGE_FROM_BUFFER2) ( IN VOID *Buffer, IN INT32 Size, IN INT32 Flags ); typedef EFI_STATUS (EFIAPI *H2O_WM_GD_ADD_GOP_DEVICE) ( EFI_GRAPHICS_OUTPUT_PROTOCOL *Gop ); typedef EFI_STATUS (EFIAPI *H2O_WM_GD_REMOVE_GOP_DEVICE) ( EFI_GRAPHICS_OUTPUT_PROTOCOL *Gop ); typedef EFI_STATUS (EFIAPI *H2O_WM_GD_ADD_EFI_KEY_DATA) ( EFI_KEY_DATA *KeyData ); typedef EFI_STATUS (EFIAPI *H2O_WM_GD_ADD_POINTER_DATA) ( EFI_SIMPLE_POINTER_STATE *SimplePointerState OPTIONAL, EFI_ABSOLUTE_POINTER_STATE *AbsolutePointerState OPTIONAL ); typedef BOOL (EFIAPI *H2O_WM_REGISTER_HOT_KEY) ( HWND hWnd, INT32 id, UINT32 fsModifiers, UINT32 vk ); typedef BOOL (EFIAPI *H2O_WM_UNREGISTER_HOT_KEY)( HWND hWnd, INT32 id ); typedef HWND (EFIAPI *H2O_WM_GET_WINDOW) ( HWND hWnd, UINT uCmd ); typedef BOOL (EFIAPI *H2O_WM_IS_CHILD) ( HWND Parent, HWND Child ); struct _H2O_WINDOW_PROTOCOL { UINT32 Size; H2O_WM_SEND_MESSAGE SendMessage; H2O_WM_POST_MESSAGE PostMessage; H2O_WM_POST_QUIT_MESSAGE PostQuitMessage; H2O_WM_GET_MESSAGE GetMessage; H2O_WM_PEEK_MESSAGE PeekMessage; H2O_WM_TRANSLATE_MESSAGE TranslateMessage; H2O_WM_DISPATCH_MESSAGE DispatchMessage; H2O_WM_REGISTER_CLASS RegisterClass; //H2O_WM_UNREGISTER_CLASS UnRegisterClass; H2O_WM_CREATE_WINDOW_EX CreateWindowEx; H2O_WM_DESTROY_WINDOW DestroyWindow; //H2O_WM_GET_WINDOW_LONG GetWindowLong; //H2O_WM_SET_WINDOW_LONG SetWindowLong; H2O_WM_GET_WINDOW_WORD GetWindowWord; H2O_WM_SET_WINDOW_WORD SetWindowWord; //H2O_WM_GET_CLASS_LONG GetClassLong; H2O_WM_GET_WINDOW_TEXT GetWindowText; H2O_WM_SET_WINDOW_TEXT SetWindowText; H2O_WM_SET_TEXT_COLOR SetTextColor; H2O_WM_SET_BK_COLOR SetBkColor; H2O_WM_GET_SYS_COLOR GetSysColor; H2O_WM_SET_SYS_COLOR SetSysColor; H2O_WM_SET_BK_MODE SetBkMode; H2O_WM_SET_ROP2 SetROP2; H2O_WM_SET_PIXEL SetPixel; H2O_WM_MOVE_TO_EX MoveToEx; H2O_WM_LINE_TO LineTo; H2O_WM_RECTANGLE Rectangle; H2O_WM_FILL_RECT FillRect; H2O_WM_TEXT_OUT TextOut; //H2O_WM_EXT_TEXT_OUT ExtTextOut; H2O_WM_DRAW_TEXT DrawText; //H2O_WM_DRAW_DIB DrawDIB; H2O_WM_SELECT_OBJECT SelectObject; H2O_WM_GET_STOCK_OBJECT GetStockObject; H2O_WM_CREATE_PEN CreatePen; H2O_WM_CREATE_SOLID_BRUSH CreateSolidBrush; H2O_WM_CREATE_COMPATIBLE_BITMAP CreateCompatibleBitmap; H2O_WM_DELETE_OBJECT DeleteObject; H2O_WM_CREATE_COMPATIBLE_DC CreateCompatibleDC; H2O_WM_DELETE_DC DeleteDC; H2O_WM_BIT_BLT BitBlt; //H2O_WM_GET_SYSTEM_PALETTE_ENTRIES GetSystemPaletteEntries; //H2O_WM_WND_SET_DESKTOP_WALLPAPER WndSetSetDesktopWallpaper; //H2O_WM_WND_SET_CURSOR WndSetCursor; //H2O_WM_WND_RAISE_WINDOW WndRaiseWindow; //H2O_WM_WND_LOWER_WINDOW WndLowerWindow; //H2O_WM_WND_GET_TOP_WINDOW WndGetTopWindow; H2O_WM_GET_TICK_COUNT GetTickCount; //H2O_WM_SLEEP Sleep; H2O_WM_SET_TIMER SetTimer; H2O_WM_KILL_TIMER KillTimer; H2O_WM_GET_CURSOR_POS GetCursorPos; // H2O_WM_SET_RECT SetRect; // H2O_WM_SET_RECT_EMPTY SetRectEmpty; // H2O_WM_COPY_RECT CopyRect; // H2O_WM_IS_RECT_EMPTY IsRectEmpty; // H2O_WM_INFLATE_RECT InflateRect; // H2O_WM_OFFSET_RECT OffsetRect; // H2O_WM_PT_IN_RECT PtInRect; // H2O_WM_INTERSECT_RECT IntersectRect; // H2O_WM_UNION_RECT UnionRect; // H2O_WM_SUBTRACT_RECT SubtractRect; // H2O_WM_EQUAL_RECT EqualRect; H2O_WM_CREATE_RECT_RGN CreateRectRgn; H2O_WM_CREATE_RECT_RGN_INDIRECT CreateRectRgnIndirect; H2O_WM_SET_RECT_RGN SetRectRgn; H2O_WM_CREATE_ROUND_RECT_RGN CreateRoundRectRgn; H2O_WM_CREATE_ELLIPTIC_RGN CreateEllipticRgn; H2O_WM_CREATE_ELLIPTIC_RGN_INDIRECT CreateEllipticRgnIndirect; H2O_WM_OFFSET_RGN OffsetRgn; H2O_WM_GET_RGN_BOX GetRgnBox; //H2O_WM_GET_RGN_DATA GetRgnData; //H2O_WM_PT_IN_RGN PtInRgn; //H2O_WM_RECT_IN_RGN RectInRgn; H2O_WM_EQUAL_RGN EqualRgn; H2O_WM_COMBINE_RGN CombineRgn; //H2O_WM_SELECT_CLIP_REGION SelectClipRegion; //H2O_WM_EXT_SELECT_CLIP_REGION ExtSelectClipRegion; H2O_WM_DEF_WINDOW_PROC DefWindowProc; H2O_WM_CALL_WINDOW_PROC CallWindowProc; // // addin // H2O_WM_MW_SET_KEYBOARD_TRANSLATOR MwSetKeyboardTranslator; H2O_WM_GET_DC_EX GetDCEx; H2O_WM_GET_DC GetDC; H2O_WM_GET_WINDOW_DC GetWindowDC; H2O_WM_RELEASE_DC ReleaseDC; H2O_WM_BEGIN_PAINT BeginPaint; H2O_WM_END_PAINT EndPaint; H2O_WM_GET_TEXT_COLOR GetTextColor; H2O_WM_SET_TEXT_ALIGN SetTextAlign; H2O_WM_GET_TEXT_ALIGN GetTextAlign; H2O_WM_GET_PIXEL GetPixel; H2O_WM_POLYLINE Polyline; //H2O_WM_ELLIPSE Ellipse; //H2O_WM_PIE Pie; H2O_WM_POLYGON Polygon; H2O_WM_POLY_POLYGON PolyPolygon; H2O_WM_MW_SET_TEXT_CODING MwSetTextCoding; //H2O_WM_TEXT_OUT_W TextOutW; //H2O_WM_EXT_TEXT_OUT_W ExtTextOutW; //H2O_WM_DRAW_TEXT_A DrawTextA; H2O_WM_GET_SYS_COLOR_BRUSH GetSysColorBrush; H2O_WM_SELECT_CLIP_RGN SelectClipRgn; H2O_WM_EXT_SELECT_CLIP_RGN ExtSelectClipRgn; H2O_WM_GET_UPDATE_RGN GetUpdateRgn; H2O_WM_GET_UPDATE_RECT GetUpdateRect; H2O_WM_STRETCH_BLT StretchBlt; H2O_WM_GET_DEVICE_CAPS GetDeviceCaps; //H2O_WM_DRAW_FOCUS_RECT DrawFocusRect; //H2O_WM_TABBED_TEXT_OUT TabbedTextOut; //H2O_WM_GET_TABBED_TEXT_EXTENT GetTabbedTextExtent; //H2O_WM_MUL_DIV MulDiv; H2O_WM_GET_TEXT_EXTENT_POINT32 GetTextExtentPoint32; //H2O_WM_SLEEP Sleep; H2O_WM_CREATE_POLYGON_RGN CreatePolygonRgn; H2O_WM_GET_REGION_DATA GetRegionData; H2O_WM_PT_IN_REGION PtInRegion; H2O_WM_RECT_IN_REGION RectInRegion; H2O_WM_POST_THREAD_MESSAGE PostThreadMessage; H2O_WM_UNREGISTER_CLASS UnregisterClass; H2O_WM_IS_WINDOW IsWindow; H2O_WM_SHOW_WINDOW ShowWindow; H2O_WM_INVALIDATE_RECT InvalidateRect; H2O_WM_INVALIDATE_RGN InvalidateRgn; H2O_WM_VALIDATE_RECT ValidateRect; H2O_WM_VALIDATE_RGN ValidateRgn; H2O_WM_UPDATE_WINDOW UpdateWindow; H2O_WM_GET_FOCUS GetFocus; H2O_WM_SET_FOCUS SetFocus; H2O_WM_SET_FOREGROUND_WINDOW SetForegroundWindow; H2O_WM_SET_ACTIVE_WINDOW SetActiveWindow; H2O_WM_GET_ACTIVE_WINDOW GetActiveWindow; H2O_WM_BRING_WINDOW_TO_TOP BringWindowToTop; H2O_WM_GET_DESKTOP_WINDOW GetDesktopWindow; H2O_WM_GET_PARENT GetParent; H2O_WM_ENABLE_WINDOW EnableWindow; H2O_WM_ADJUST_WINDOW_RECT_EX AdjustWindowRectEx; H2O_WM_GET_CLIENT_RECT GetClientRect; H2O_WM_GET_WINDOW_RECT GetWindowRect; H2O_WM_CLIENT_TO_SCREEN ClientToScreen; H2O_WM_SCREEN_TO_CLIENT ScreenToClient; H2O_WM_MAP_WINDOW_POINTS MapWindowPoints; //H2O_WM_GET_WINDOW_LONG GetWindowLong; H2O_WM_GET_WINDOW_LONG_PTR GetWindowLongPtr; //H2O_WM_SET_WINDOW_LONG SetWindowLong; H2O_WM_SET_WINDOW_LONG_PTR SetWindowLongPtr; //H2O_WM_GLOBAL_FIND_ATOM GlobalFindAtom; //H2O_WM_GLOBAL_ADD_ATOM GlobalAddAtom; H2O_WM_SET_PROP SetProp; H2O_WM_GET_PROP GetProp; H2O_WM_REMOVE_PROP RemoveProp; //H2O_WM_GET_CLASS_LONG GetClassLong; H2O_WM_GET_CLASS_LONG_PTR GetClassLongPtr; H2O_WM_GET_WINDOW_TEXT_LENGTH GetWindowTextLength; H2O_WM_MOVE_WINDOW MoveWindow; H2O_WM_GET_CAPTURE GetCapture; H2O_WM_SET_CAPTURE SetCapture; H2O_WM_RELEASE_CAPTURE ReleaseCapture; H2O_WM_GET_SYSTEM_METRICS GetSystemMetrics; H2O_WM_SYSTEM_PARAMETERS_INFO SystemParametersInfo; H2O_WM_GET_DLG_ITEM GetDlgItem; H2O_WM_ENUM_CHILD_WINDOWS EnumChildWindows; H2O_WM_SET_WINDOW_POS SetWindowPos; H2O_WM_GET_CLIP_BOX GetClipBox; H2O_WM_SET_DC_PEN_COLOR SetDCPenColor; H2O_WM_SET_DC_BRUSH_COLOR SetDCBrushColor; H2O_WM_REGISTER_HOT_KEY RegisterHotKey; H2O_WM_UNREGISTER_HOT_KEY UnregisterHotKey; // // microwindows functions // H2O_WM_MW_OPEN MwOpen; H2O_WM_GD_CLOSE_MOUSE GdCloseMouse; H2O_WM_GD_OPEN_MOUSE GdOpenMouse; H2O_WM_MW_FAST_FILL_RECT MwFastFillRect; H2O_WM_GD_DRAW_IMAGE_PART_TO_FIT GdDrawImagePartToFit; H2O_WM_GD_LOAD_IMAGE_FROM_BUFFER GdLoadImageFromBuffer; H2O_WM_GD_LOAD_IMAGE_FROM_BUFFER2 GdLoadImageFromBuffer2; H2O_WM_GD_ADD_GOP_DEVICE GdAddGopDevice; H2O_WM_GD_ADD_EFI_KEY_DATA GdAddEfiKeyData; H2O_WM_GD_ADD_POINTER_DATA GdAddPointerData; H2O_WM_GET_WINDOW GetWindow; H2O_WM_IS_CHILD IsChild; H2O_WM_GD_REMOVE_GOP_DEVICE GdRemoveGopDevice; H2O_WM_MW_CLOSE MwClose; }; extern EFI_GUID gH2OWindowProtocolGuid; #endif