1 /* 2 * PROJECT: ReactOS On-Screen Keyboard 3 * LICENSE: GPL - See COPYING in the top level directory 4 * PURPOSE: Pre-compiled header 5 * COPYRIGHT: Denis ROBERT 6 * Copyright 2019 George Bișoc (george.bisoc@reactos.org) 7 */ 8 9 #ifndef _OSK_PRECOMP_H 10 #define _OSK_PRECOMP_H 11 12 /* INCLUDES *******************************************************************/ 13 14 #include <stdio.h> 15 16 #include <windows.h> 17 #include <debug.h> 18 #include "commctrl.h" 19 #include "strsafe.h" 20 21 #include "osk_res.h" 22 23 /* TYPES **********************************************************************/ 24 25 typedef struct _KEY 26 { 27 LPCWSTR name; 28 INT_PTR scancode; 29 INT x; 30 INT y; 31 INT cx; 32 INT cy; 33 INT flags; 34 BOOL translate; 35 } KEY, *PKEY; 36 37 typedef struct _KEYBOARD_STRUCT 38 { 39 PKEY Keys; 40 INT KeyCount; 41 SIZE Size; 42 POINT LedTextStart; 43 SIZE LedTextSize; 44 INT LedTextOffset; 45 POINT LedStart; 46 SIZE LedSize; 47 INT LedGap; 48 } KEYBOARD_STRUCT, *PKEYBOARD_STRUCT; 49 50 typedef struct 51 { 52 HINSTANCE hInstance; 53 HWND hMainWnd; 54 HBRUSH hBrushGreenLed; 55 UINT_PTR iTimer; 56 PKEYBOARD_STRUCT Keyboard; 57 HWND* hKeys; 58 HFONT hFont; 59 WCHAR szTitle[MAX_PATH]; 60 61 /* On-Screen Keyboard registry settings */ 62 BOOL bShowWarning; 63 BOOL bIsEnhancedKeyboard; 64 BOOL bSoundClick; 65 BOOL bAlwaysOnTop; 66 INT PosX; 67 INT PosY; 68 WCHAR FontFaceName[LF_FACESIZE]; 69 LONG FontHeight; 70 } OSK_GLOBALS; 71 72 typedef struct 73 { 74 INT vKey; 75 INT DlgResource; 76 WORD wScanCode; 77 BOOL bWasKeyPressed; 78 } OSK_KEYLEDINDICATOR; 79 80 /* PROTOTYPES *****************************************************************/ 81 82 /* keyboard.c */ 83 extern KEYBOARD_STRUCT StandardKeyboard; 84 extern KEYBOARD_STRUCT EnhancedKeyboard; 85 86 /* main.c */ 87 int OSK_SetImage(int IdDlgItem, int IdResource); 88 LRESULT OSK_Create(HWND hwnd); 89 int OSK_Close(void); 90 int OSK_Timer(void); 91 BOOL OSK_Command(WPARAM wCommand, HWND hWndControl); 92 BOOL OSK_ReleaseKey(WORD ScanCode); 93 LRESULT APIENTRY OSK_WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); 94 DWORD WINAPI OSK_WarningDlgThread(LPVOID lpParameter); 95 int WINAPI wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int); 96 VOID OSK_RestoreDlgPlacement(HWND hDlg); 97 VOID OSK_RefreshLEDKeys(VOID); 98 INT_PTR CALLBACK OSK_WarningProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam); 99 100 /* settings.c */ 101 LONG LoadDWORDFromRegistry(IN LPCWSTR lpValueDataName, 102 OUT PDWORD pdwValueData); 103 104 LONG LoadStringFromRegistry(IN LPCWSTR lpValueDataName, 105 OUT LPWSTR lpValueData, 106 IN OUT LPUINT cchCount); 107 108 LONG SaveDWORDToRegistry(IN LPCWSTR lpValueDataName, 109 IN DWORD dwValueData); 110 111 LONG SaveStringToRegistry(IN LPCWSTR lpValueDataName, 112 IN LPCWSTR lpValueData, 113 IN UINT cchCount); 114 115 VOID LoadSettings(VOID); 116 VOID SaveSettings(VOID); 117 118 /* DEFINES ********************************************************************/ 119 120 #define SCANCODE_MASK 0xFF 121 122 extern OSK_GLOBALS Globals; 123 124 #define OSK_CLASS L"OSKMainWindow" 125 #define DEFAULT_FONTSIZE 15 126 127 /* OSK_SetKeys reasons */ 128 enum SetKeys_Reason 129 { 130 SETKEYS_INIT, 131 SETKEYS_LAYOUT, 132 SETKEYS_LANG 133 }; 134 135 #endif /* _OSK_PRECOMP_H */ 136 137 /* EOF */ 138