reactos/base/applications/ctfmon/CLoaderWnd.cpp
Katayama Hirofumi MZ f4460c3fcd
[CTFMON][MSCTF][MSUTB][SDK] Add msutb.dll (stub) (#6222)
msutb.dll is the GUI back-end
of Language Bar (Tipbar).
- Add msutb.dll module at
  dll/win32/msutb/.
- The implementation of
  msutb.dll is currently stub.
- Modify msctf.spec and msctf.idl.
- Add <cicero/cicutb.h>.
- Adapt ctfmon.exe to these changes.
CORE-19362, CORE-19363
2023-12-25 22:29:57 +09:00

101 lines
2.7 KiB
C++

/*
* PROJECT: ReactOS CTF Monitor
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
* PURPOSE: Cicero Tipbar (Language 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 & CIC_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;
}