mirror of
https://github.com/reactos/reactos.git
synced 2025-06-13 02:28:31 +00:00
[CTFMON][SDK] Add ctfmon.exe (#6149)
ctfmon.exe will be a replacement of our kbswitch.exe in the future. That is the front-end of Language Bar. It is needed to support TIPs. - Add ctfmon.exe at base/applications/ctfmon. - Add <cicero/cicbase.h>, <cicero/CModulePath.h>, and <cicero/osinfo.h> headers and use them. CORE-19362
This commit is contained in:
parent
a19ba4760e
commit
079b36542c
14 changed files with 1156 additions and 0 deletions
100
base/applications/ctfmon/CLoaderWnd.cpp
Normal file
100
base/applications/ctfmon/CLoaderWnd.cpp
Normal file
|
@ -0,0 +1,100 @@
|
|||
/*
|
||||
* PROJECT: ReactOS CTF Monitor
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* PURPOSE: Cicero TIP Bar loader window
|
||||
* COPYRIGHT: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
#include "CLoaderWnd.h"
|
||||
#include "CRegWatcher.h"
|
||||
|
||||
BOOL CLoaderWnd::s_bUninitedSystem = FALSE;
|
||||
BOOL CLoaderWnd::s_bWndClassRegistered = FALSE;
|
||||
|
||||
BOOL CLoaderWnd::Init()
|
||||
{
|
||||
if (s_bWndClassRegistered)
|
||||
return TRUE; // Already registered
|
||||
|
||||
// Register a window class
|
||||
WNDCLASSEXW wc;
|
||||
ZeroMemory(&wc, sizeof(wc));
|
||||
wc.cbSize = sizeof(wc);
|
||||
wc.style = CS_HREDRAW | CS_VREDRAW;
|
||||
wc.hInstance = g_hInst;
|
||||
wc.hCursor = LoadCursorW(NULL, (LPCWSTR)IDC_ARROW);
|
||||
wc.lpfnWndProc = WindowProc;
|
||||
wc.lpszClassName = L"CiCTipBarClass";
|
||||
if (!::RegisterClassExW(&wc))
|
||||
return FALSE;
|
||||
|
||||
s_bWndClassRegistered = TRUE; // Remember
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
HWND CLoaderWnd::CreateWnd()
|
||||
{
|
||||
m_hWnd = ::CreateWindowExW(0, L"CiCTipBarClass", NULL, WS_DISABLED,
|
||||
0, 0, 0, 0, NULL, NULL, g_hInst, NULL);
|
||||
return m_hWnd;
|
||||
}
|
||||
|
||||
LRESULT CALLBACK
|
||||
CLoaderWnd::WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_CREATE:
|
||||
break;
|
||||
|
||||
case WM_DESTROY:
|
||||
::PostQuitMessage(0);
|
||||
break;
|
||||
|
||||
case WM_QUERYENDSESSION:
|
||||
// NOTE: We don't support Win95/98/Me
|
||||
#ifdef SUPPORT_WIN9X
|
||||
if (!(g_dwOsInfo & OSINFO_NT) && (!g_fWinLogon || (lParam & ENDSESSION_LOGOFF)))
|
||||
{
|
||||
ClosePopupTipbar();
|
||||
TF_UninitSystem();
|
||||
CLoaderWnd::s_bUninitedSystem = TRUE;
|
||||
}
|
||||
#endif
|
||||
return TRUE;
|
||||
|
||||
case WM_ENDSESSION:
|
||||
if (wParam) // The session is being ended?
|
||||
{
|
||||
if (!s_bUninitedSystem)
|
||||
{
|
||||
// Un-initialize now
|
||||
UninitApp();
|
||||
TF_UninitSystem();
|
||||
s_bUninitedSystem = TRUE;
|
||||
}
|
||||
}
|
||||
else if (s_bUninitedSystem) // Once un-initialized?
|
||||
{
|
||||
// Re-initialize
|
||||
TF_InitSystem();
|
||||
if (!g_bOnWow64)
|
||||
GetPopupTipbar(hwnd, !!g_fWinLogon);
|
||||
|
||||
s_bUninitedSystem = FALSE;
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_SYSCOLORCHANGE:
|
||||
case WM_DISPLAYCHANGE:
|
||||
if (!g_bOnWow64) // Is the system x86/x64 native?
|
||||
CRegWatcher::StartSysColorChangeTimer();
|
||||
break;
|
||||
|
||||
default:
|
||||
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue