Reactos
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
25typedef 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
37typedef 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
50typedef 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
72typedef struct
73{
74 INT vKey;
75 INT DlgResource;
76 WORD wScanCode;
77 BOOL bWasKeyPressed;
78} OSK_KEYLEDINDICATOR;
79
80/* PROTOTYPES *****************************************************************/
81
82/* keyboard.c */
83extern KEYBOARD_STRUCT StandardKeyboard;
84extern KEYBOARD_STRUCT EnhancedKeyboard;
85
86/* main.c */
87int OSK_SetImage(int IdDlgItem, int IdResource);
88LRESULT OSK_Create(HWND hwnd);
89int OSK_Close(void);
90int OSK_Timer(void);
91BOOL OSK_Command(WPARAM wCommand, HWND hWndControl);
92BOOL OSK_ReleaseKey(WORD ScanCode);
93LRESULT APIENTRY OSK_WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
94DWORD WINAPI OSK_WarningDlgThread(LPVOID lpParameter);
95int WINAPI wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int);
96VOID OSK_RestoreDlgPlacement(HWND hDlg);
97VOID OSK_RefreshLEDKeys(VOID);
98INT_PTR CALLBACK OSK_WarningProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
99
100/* settings.c */
101LONG LoadDWORDFromRegistry(IN LPCWSTR lpValueDataName,
102 OUT PDWORD pdwValueData);
103
104LONG LoadStringFromRegistry(IN LPCWSTR lpValueDataName,
105 OUT LPWSTR lpValueData,
106 IN OUT LPUINT cchCount);
107
108LONG SaveDWORDToRegistry(IN LPCWSTR lpValueDataName,
109 IN DWORD dwValueData);
110
111LONG SaveStringToRegistry(IN LPCWSTR lpValueDataName,
112 IN LPCWSTR lpValueData,
113 IN UINT cchCount);
114
115VOID LoadSettings(VOID);
116VOID SaveSettings(VOID);
117
118/* DEFINES ********************************************************************/
119
120#define SCANCODE_MASK 0xFF
121
122extern OSK_GLOBALS Globals;
123
124#define OSK_CLASS L"OSKMainWindow"
125#define DEFAULT_FONTSIZE 15
126
127/* OSK_SetKeys reasons */
128enum SetKeys_Reason
129{
130 SETKEYS_INIT,
131 SETKEYS_LAYOUT,
132 SETKEYS_LANG
133};
134
135#endif /* _OSK_PRECOMP_H */
136
137/* EOF */