mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 16:36:33 +00:00
[OSK] Handle the warning dialog box in its own thread
The dialog box at the startup of On-Screen Keyboard is displayed alongside with main window. While the Microsoft's OSK in XP is written in MFC and OSK is actually a mere window whereas our OSK is a dialog, the main dialog procedure call is superseded until the user does something with the warning dialog box on startup. Just create a thread for it and handle the dialog box on startup in its own thread.
This commit is contained in:
parent
3ad573f92f
commit
aea948a79e
2 changed files with 21 additions and 2 deletions
|
@ -3,7 +3,7 @@
|
||||||
* LICENSE: GPL - See COPYING in the top level directory
|
* LICENSE: GPL - See COPYING in the top level directory
|
||||||
* PURPOSE: On-screen keyboard.
|
* PURPOSE: On-screen keyboard.
|
||||||
* COPYRIGHT: Denis ROBERT
|
* COPYRIGHT: Denis ROBERT
|
||||||
* Copyright 2019 George Bișoc (george.bisoc@reactos.org)
|
* Copyright 2019-2020 George Bișoc (george.bisoc@reactos.org)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* INCLUDES *******************************************************************/
|
/* INCLUDES *******************************************************************/
|
||||||
|
@ -94,6 +94,20 @@ INT_PTR CALLBACK OSK_WarningProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lPar
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
*
|
||||||
|
* OSK_WarningDlgThread
|
||||||
|
*
|
||||||
|
* Thread procedure routine for the warning dialog box
|
||||||
|
*/
|
||||||
|
DWORD WINAPI OSK_WarningDlgThread(LPVOID lpParameter)
|
||||||
|
{
|
||||||
|
HINSTANCE hInstance = (HINSTANCE)lpParameter;
|
||||||
|
|
||||||
|
DialogBoxW(hInstance, MAKEINTRESOURCEW(IDD_WARNINGDIALOG_OSK), Globals.hMainWnd, OSK_WarningProc);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
*
|
*
|
||||||
* OSK_About
|
* OSK_About
|
||||||
|
@ -811,7 +825,11 @@ int WINAPI wWinMain(HINSTANCE hInstance,
|
||||||
/* If the member of the struct (bShowWarning) is set then display the dialog box */
|
/* If the member of the struct (bShowWarning) is set then display the dialog box */
|
||||||
if (Globals.bShowWarning)
|
if (Globals.bShowWarning)
|
||||||
{
|
{
|
||||||
DialogBoxW(Globals.hInstance, MAKEINTRESOURCEW(IDD_WARNINGDIALOG_OSK), Globals.hMainWnd, OSK_WarningProc);
|
/* If for whatever reason the thread fails to be created then handle the dialog box in main thread... */
|
||||||
|
if (CreateThread(NULL, 0, OSK_WarningDlgThread, (PVOID)Globals.hInstance, 0, NULL) == NULL)
|
||||||
|
{
|
||||||
|
DialogBoxW(Globals.hInstance, MAKEINTRESOURCEW(IDD_WARNINGDIALOG_OSK), Globals.hMainWnd, OSK_WarningProc);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Before initializing the dialog execution, check if the chosen keyboard type is standard or enhanced */
|
/* Before initializing the dialog execution, check if the chosen keyboard type is standard or enhanced */
|
||||||
|
|
|
@ -65,6 +65,7 @@ BOOL OSK_DlgCommand(WPARAM wCommand, HWND hWndControl);
|
||||||
BOOL OSK_ReleaseKey(WORD ScanCode);
|
BOOL OSK_ReleaseKey(WORD ScanCode);
|
||||||
INT_PTR APIENTRY OSK_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
INT_PTR APIENTRY OSK_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||||
LRESULT APIENTRY OSK_ThemeHandler(HWND hDlg, NMCUSTOMDRAW *pNmDraw);
|
LRESULT APIENTRY OSK_ThemeHandler(HWND hDlg, NMCUSTOMDRAW *pNmDraw);
|
||||||
|
DWORD WINAPI OSK_WarningDlgThread(LPVOID lpParameter);
|
||||||
int WINAPI wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int);
|
int WINAPI wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int);
|
||||||
VOID OSK_RestoreDlgPlacement(HWND hDlg);
|
VOID OSK_RestoreDlgPlacement(HWND hDlg);
|
||||||
VOID OSK_RefreshLEDKeys(VOID);
|
VOID OSK_RefreshLEDKeys(VOID);
|
||||||
|
|
Loading…
Reference in a new issue