https://git.reactos.org/?p=reactos.git;a=commitdiff;h=84e162e66939a3e370d741...
commit 84e162e66939a3e370d74196a6983840468fee4d Author: Bișoc George fraizeraust99@gmail.com AuthorDate: Tue Jul 16 17:35:30 2019 +0200 Commit: Mark Jansen mark.jansen@reactos.org CommitDate: Thu Aug 15 20:35:17 2019 +0200
[OSK] General refactoring
- Replace the existing header files in favour to a pre-compiled header instead. Furthermore, move all the function prototypes in the pre-compiled header. - As per the prototype definitions, LoadDataFromRegistry() and SaveDataToRegistry() mustn't accept any number of parameters. - Rename rsrc.rc to osk.rc (main resource file) as most of user-mode applications name have their main resource as the same application's name anyways. - When querying and saving the data to registry, use only one value, greatly reducing the bloat of variables (as per the Hermes Belusca's request on #1729 PR). - Update the header description reflecting the official ReactOS Coding style guidelines. --- base/applications/osk/CMakeLists.txt | 10 +++- base/applications/osk/main.c | 16 +------ base/applications/osk/main.h | 43 ----------------- base/applications/osk/osk.h | 26 ----------- base/applications/osk/{rsrc.rc => osk.rc} | 15 ++---- base/applications/osk/osk_res.h | 5 +- base/applications/osk/precomp.h | 77 +++++++++++++++++++++++++++++++ base/applications/osk/settings.c | 71 ++++++++++++++-------------- base/applications/osk/settings.h | 15 ------ 9 files changed, 127 insertions(+), 151 deletions(-)
diff --git a/base/applications/osk/CMakeLists.txt b/base/applications/osk/CMakeLists.txt index ff5876046ca..293eba14b50 100644 --- a/base/applications/osk/CMakeLists.txt +++ b/base/applications/osk/CMakeLists.txt @@ -1,7 +1,13 @@
+list(APPEND SOURCE + main.c + settings.c + precomp.h) + file(GLOB osk_rc_deps res/*.*) -add_rc_deps(rsrc.rc ${osk_rc_deps}) -add_executable(osk main.c settings.c rsrc.rc) +add_rc_deps(osk.rc ${osk_rc_deps}) +add_executable(osk ${SOURCE} osk.rc) set_module_type(osk win32gui UNICODE) add_importlibs(osk comdlg32 uxtheme winmm shell32 user32 gdi32 advapi32 comctl32 msvcrt kernel32 ntdll) +add_pch(osk precomp.h SOURCE) add_cd_file(TARGET osk DESTINATION reactos/system32 FOR all) diff --git a/base/applications/osk/main.c b/base/applications/osk/main.c index 0a3a001fa91..a467eb24518 100644 --- a/base/applications/osk/main.c +++ b/base/applications/osk/main.c @@ -8,26 +8,12 @@
/* INCLUDES *******************************************************************/
-#include "osk.h" -#include "settings.h" +#include "precomp.h"
/* GLOBALS ********************************************************************/
OSK_GLOBALS Globals;
-/* Functions */ -int OSK_SetImage(int IdDlgItem, int IdResource); -int OSK_DlgInitDialog(HWND hDlg); -int OSK_DlgClose(void); -int OSK_DlgTimer(void); -BOOL OSK_DlgCommand(WPARAM wCommand, HWND hWndControl); -BOOL OSK_ReleaseKey(WORD ScanCode); -VOID OSK_RestoreDlgPlacement(HWND hDlg); - -INT_PTR APIENTRY OSK_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam); -LRESULT APIENTRY OSK_ThemeHandler(HWND hDlg, NMCUSTOMDRAW *pNmDraw); -int WINAPI wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int); - /* FUNCTIONS ******************************************************************/
/*********************************************************************** diff --git a/base/applications/osk/main.h b/base/applications/osk/main.h deleted file mode 100644 index 5ce6a7acb7c..00000000000 --- a/base/applications/osk/main.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * PROJECT: ReactOS On-Screen Keyboard - * LICENSE: GPL - See COPYING in the top level directory - * PURPOSE: On screen keyboard. - * COPYRIGHT: Denis ROBERT - * Copyright 2019 Bișoc George (fraizeraust99 at gmail dot com) - */ - -#ifndef _OSKMAIN_H -#define _OSKMAIN_H - -/* INCLUDES *******************************************************************/ - -#include "osk_res.h" - -/* TYPES **********************************************************************/ - -typedef struct -{ - HINSTANCE hInstance; - HWND hMainWnd; - HBRUSH hBrushGreenLed; - UINT_PTR iTimer; - /* FIXME: To be deleted when ReactOS will support WS_EX_NOACTIVATE */ - HWND hActiveWnd; - BOOL bShowWarning; - BOOL bIsEnhancedKeyboard; - BOOL bSoundClick; - BOOL bAlwaysOnTop; - INT PosX; - INT PosY; -} OSK_GLOBALS; - -/* DEFINES ********************************************************************/ - -extern OSK_GLOBALS Globals; - -#define countof(x) (sizeof(x) / sizeof((x)[0])) -#define MAX_BUFF 256 - -#endif - -/* EOF */ diff --git a/base/applications/osk/osk.h b/base/applications/osk/osk.h deleted file mode 100644 index a435e69ac6a..00000000000 --- a/base/applications/osk/osk.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * PROJECT: ReactOS On-Screen Keyboard - * LICENSE: GPL - See COPYING in the top level directory - * PURPOSE: On screen keyboard. - * COPYRIGHT: Denis ROBERT - * Copyright 2019 Bișoc George (fraizeraust99 at gmail dot com) - */ - -#ifndef _OSK_H -#define _OSK_H - -/* INCLUDES ******************************************************************/ - -#include <stdio.h> - -#include <windows.h> -#include <commctrl.h> -#include <debug.h> -#include <uxtheme.h> -#include <vsstyle.h> - -#include "main.h" - -#endif - -/* EOF */ diff --git a/base/applications/osk/rsrc.rc b/base/applications/osk/osk.rc similarity index 87% rename from base/applications/osk/rsrc.rc rename to base/applications/osk/osk.rc index 963581773d1..a897be3c8c6 100644 --- a/base/applications/osk/rsrc.rc +++ b/base/applications/osk/osk.rc @@ -1,19 +1,12 @@ /* - * PROJECT: ReactOS Kernel + * PROJECT: On-Screen Keyboard * LICENSE: GPL - See COPYING in the top level directory - * FILE: base/applications/osk/rsrc.rc - * PURPOSE: On Screen Keyboard - * PROGRAMMERS: Denis ROBERT + * PURPOSE: On-Screen Keyboard main resource file + * COPYRIGHT: Denis ROBERT */
/* INCLUDES ******************************************************************/ -#include "windef.h" -#include "winbase.h" -#include "winuser.h" -#include "main.h" -#include "winnls.h" -#include "commctrl.h" -#include "osk_res.h" +#include "precomp.h"
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS On Screen Keyboard" #define REACTOS_STR_INTERNAL_NAME "osk" diff --git a/base/applications/osk/osk_res.h b/base/applications/osk/osk_res.h index 04dd6e2b887..21d01f32f3f 100644 --- a/base/applications/osk/osk_res.h +++ b/base/applications/osk/osk_res.h @@ -1,9 +1,8 @@ /* * PROJECT: ReactOS On-Screen Keyboard * LICENSE: GPL - See COPYING in the top level directory - * FILE: base/applications/osk/osk_res.h - * PURPOSE: On screen keyboard. - * PROGRAMMERS: Denis ROBERT + * PURPOSE: On-Screen Keyboard resource identifiers + * COPYRIGHT: Denis ROBERT */
#define MAIN_DIALOG_ENHANCED_KB 2000 diff --git a/base/applications/osk/precomp.h b/base/applications/osk/precomp.h new file mode 100644 index 00000000000..c1e7e50543d --- /dev/null +++ b/base/applications/osk/precomp.h @@ -0,0 +1,77 @@ +/* + * PROJECT: ReactOS On-Screen Keyboard + * LICENSE: GPL - See COPYING in the top level directory + * PURPOSE: Pre-compiled header + * COPYRIGHT: Denis ROBERT + * Copyright 2019 Bișoc George (fraizeraust99 at gmail dot com) + */ + +#ifndef _OSK_PRECOMP_H +#define _OSK_PRECOMP_H + +/* INCLUDES *******************************************************************/ + +#include <stdio.h> + +#include <windows.h> +#include <commctrl.h> +#include <debug.h> +#include <uxtheme.h> +#include <vsstyle.h> +#include "windef.h" +#include "winbase.h" +#include "winuser.h" +#include "winnls.h" +#include "commctrl.h" + +#include "osk_res.h" + +/* TYPES **********************************************************************/ + +typedef struct +{ + HINSTANCE hInstance; + HWND hMainWnd; + HBRUSH hBrushGreenLed; + UINT_PTR iTimer; + /* FIXME: To be deleted when ReactOS will support WS_EX_NOACTIVATE */ + HWND hActiveWnd; + + /* On-Screen Keyboard registry settings */ + BOOL bShowWarning; + BOOL bIsEnhancedKeyboard; + BOOL bSoundClick; + BOOL bAlwaysOnTop; + INT PosX; + INT PosY; +} OSK_GLOBALS; + +/* PROTOTYPES *****************************************************************/ + +/* main.c */ +int OSK_SetImage(int IdDlgItem, int IdResource); +int OSK_DlgInitDialog(HWND hDlg); +int OSK_DlgClose(void); +int OSK_DlgTimer(void); +BOOL OSK_DlgCommand(WPARAM wCommand, HWND hWndControl); +BOOL OSK_ReleaseKey(WORD ScanCode); +INT_PTR APIENTRY OSK_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam); +LRESULT APIENTRY OSK_ThemeHandler(HWND hDlg, NMCUSTOMDRAW *pNmDraw); +int WINAPI wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int); +VOID OSK_RestoreDlgPlacement(HWND hDlg); + +/* settings.c */ +BOOL LoadDataFromRegistry(VOID); +BOOL SaveDataToRegistry(VOID); +INT_PTR CALLBACK OSK_WarningProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam); + +/* DEFINES ********************************************************************/ + +extern OSK_GLOBALS Globals; + +#define countof(x) (sizeof(x) / sizeof((x)[0])) +#define MAX_BUFF 256 + +#endif /* _OSK_PRECOMP_H */ + +/* EOF */ diff --git a/base/applications/osk/settings.c b/base/applications/osk/settings.c index 5d403e89d6d..b1bcb210f96 100644 --- a/base/applications/osk/settings.c +++ b/base/applications/osk/settings.c @@ -7,16 +7,15 @@
/* INCLUDES *******************************************************************/
-#include "osk.h" -#include "settings.h" +#include "precomp.h"
/* FUNCTIONS *******************************************************************/
-BOOL LoadDataFromRegistry() +BOOL LoadDataFromRegistry(VOID) { HKEY hKey; LONG lResult; - DWORD dwShowWarningData, dwLayout, dwSoundOnClick, dwPositionLeft, dwPositionTop, dwAlwaysOnTop; + DWORD dwValue; DWORD cbData = sizeof(DWORD);
/* Initialize the registry application settings */ @@ -47,7 +46,7 @@ BOOL LoadDataFromRegistry() L"ShowWarning", 0, 0, - (BYTE *)&dwShowWarningData, + (BYTE *)&dwValue, &cbData);
if (lResult != ERROR_SUCCESS) @@ -58,14 +57,14 @@ BOOL LoadDataFromRegistry() }
/* Load the data value (it can be either FALSE or TRUE depending on the data itself) */ - Globals.bShowWarning = (dwShowWarningData != 0); + Globals.bShowWarning = (dwValue != 0);
/* Query the key */ lResult = RegQueryValueExW(hKey, L"IsEnhancedKeyboard", 0, 0, - (BYTE *)&dwLayout, + (BYTE *)&dwValue, &cbData);
if (lResult != ERROR_SUCCESS) @@ -76,14 +75,14 @@ BOOL LoadDataFromRegistry() }
/* Load the dialog layout value */ - Globals.bIsEnhancedKeyboard = (dwLayout != 0); + Globals.bIsEnhancedKeyboard = (dwValue != 0);
/* Query the key */ lResult = RegQueryValueExW(hKey, L"ClickSound", 0, 0, - (BYTE *)&dwSoundOnClick, + (BYTE *)&dwValue, &cbData);
if (lResult != ERROR_SUCCESS) @@ -94,14 +93,14 @@ BOOL LoadDataFromRegistry() }
/* Load the sound on click value event */ - Globals.bSoundClick = (dwSoundOnClick != 0); + Globals.bSoundClick = (dwValue != 0);
/* Query the key */ lResult = RegQueryValueExW(hKey, L"WindowLeft", 0, 0, - (BYTE *)&dwPositionLeft, + (BYTE *)&dwValue, &cbData);
if (lResult != ERROR_SUCCESS) @@ -112,13 +111,13 @@ BOOL LoadDataFromRegistry() }
/* Load the X value data of the dialog's coordinate */ - Globals.PosX = dwPositionLeft; + Globals.PosX = dwValue;
lResult = RegQueryValueExW(hKey, L"WindowTop", 0, 0, - (BYTE *)&dwPositionTop, + (BYTE *)&dwValue, &cbData);
if (lResult != ERROR_SUCCESS) @@ -129,13 +128,13 @@ BOOL LoadDataFromRegistry() }
/* Load the Y value data of the dialog's coordinate */ - Globals.PosY = dwPositionTop; + Globals.PosY = dwValue;
lResult = RegQueryValueExW(hKey, L"AlwaysOnTop", 0, 0, - (BYTE *)&dwAlwaysOnTop, + (BYTE *)&dwValue, &cbData);
if (lResult != ERROR_SUCCESS) @@ -146,18 +145,18 @@ BOOL LoadDataFromRegistry() }
/* Load the window state value data */ - Globals.bAlwaysOnTop = (dwAlwaysOnTop != 0); + Globals.bAlwaysOnTop = (dwValue != 0);
/* If we're here then we succeed, close the key and return TRUE */ RegCloseKey(hKey); return TRUE; }
-BOOL SaveDataToRegistry() +BOOL SaveDataToRegistry(VOID) { HKEY hKey; LONG lResult; - DWORD dwShowWarningData, dwLayout, dwSoundOnClick, dwPositionLeft, dwPositionTop, dwAlwaysOnTop; + DWORD dwValue; WINDOWPLACEMENT wp;
/* Set the structure length and retrieve the dialog's placement */ @@ -182,15 +181,15 @@ BOOL SaveDataToRegistry() }
/* The data value of the subkey will be appended to the warning dialog switch */ - dwShowWarningData = Globals.bShowWarning; + dwValue = Globals.bShowWarning;
/* Welcome warning box value key */ lResult = RegSetValueExW(hKey, L"ShowWarning", 0, REG_DWORD, - (BYTE *)&dwShowWarningData, - sizeof(dwShowWarningData)); + (BYTE *)&dwValue, + sizeof(dwValue));
if (lResult != ERROR_SUCCESS) { @@ -200,15 +199,15 @@ BOOL SaveDataToRegistry() }
/* The value will be appended to the layout dialog */ - dwLayout = Globals.bIsEnhancedKeyboard; + dwValue = Globals.bIsEnhancedKeyboard;
/* Keyboard dialog switcher */ lResult = RegSetValueExW(hKey, L"IsEnhancedKeyboard", 0, REG_DWORD, - (BYTE *)&dwLayout, - sizeof(dwLayout)); + (BYTE *)&dwValue, + sizeof(dwValue));
if (lResult != ERROR_SUCCESS) { @@ -218,15 +217,15 @@ BOOL SaveDataToRegistry() }
/* The value will be appended to the sound on click event */ - dwSoundOnClick = Globals.bSoundClick; + dwValue = Globals.bSoundClick;
/* "Sound on Click" switcher value key */ lResult = RegSetValueExW(hKey, L"ClickSound", 0, REG_DWORD, - (BYTE *)&dwSoundOnClick, - sizeof(dwSoundOnClick)); + (BYTE *)&dwValue, + sizeof(dwValue));
if (lResult != ERROR_SUCCESS) { @@ -236,15 +235,15 @@ BOOL SaveDataToRegistry() }
/* The value will be appended to the X coordination dialog's placement */ - dwPositionLeft = wp.rcNormalPosition.left; + dwValue = wp.rcNormalPosition.left;
/* Position X coordination of dialog's placement value key */ lResult = RegSetValueExW(hKey, L"WindowLeft", 0, REG_DWORD, - (BYTE *)&dwPositionLeft, - sizeof(dwPositionLeft)); + (BYTE *)&dwValue, + sizeof(dwValue));
if (lResult != ERROR_SUCCESS) { @@ -254,15 +253,15 @@ BOOL SaveDataToRegistry() }
/* The value will be appended to the Y coordination dialog's placement */ - dwPositionTop = wp.rcNormalPosition.top; + dwValue = wp.rcNormalPosition.top;
/* Position Y coordination of dialog's placement value key */ lResult = RegSetValueExW(hKey, L"WindowTop", 0, REG_DWORD, - (BYTE *)&dwPositionTop, - sizeof(dwPositionTop)); + (BYTE *)&dwValue, + sizeof(dwValue));
if (lResult != ERROR_SUCCESS) { @@ -272,15 +271,15 @@ BOOL SaveDataToRegistry() }
/* Window top state value */ - dwAlwaysOnTop = Globals.bAlwaysOnTop; + dwValue = Globals.bAlwaysOnTop;
/* "Always on Top" state value key */ lResult = RegSetValueExW(hKey, L"AlwaysOnTop", 0, REG_DWORD, - (BYTE *)&dwAlwaysOnTop, - sizeof(dwAlwaysOnTop)); + (BYTE *)&dwValue, + sizeof(dwValue));
if (lResult != ERROR_SUCCESS) { diff --git a/base/applications/osk/settings.h b/base/applications/osk/settings.h deleted file mode 100644 index 05e122a4fff..00000000000 --- a/base/applications/osk/settings.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - * PROJECT: ReactOS On-Screen Keyboard - * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+) - * PURPOSE: Settings header file with function prototypes - * COPYRIGHT: Copyright 2018 Bișoc George (fraizeraust99 at gmail dot com) - */ - -#ifndef SETTINGS_OSK_H -#define SETTINGS_OSK_H - -BOOL LoadDataFromRegistry(VOID); -BOOL SaveDataToRegistry(VOID); -INT_PTR CALLBACK OSK_WarningProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam); - -#endif // SETTINGS_OSK_H