mirror of
https://github.com/reactos/reactos.git
synced 2025-06-04 00:40:31 +00:00
[MSCTFIME][MSUTB][SDK] Add cicInitUIFLib and cicDoneUIFLib (#6307)
Supporting TIPs... JIRA issue: CORE-19360 - Implement cicInitUIFLib and cicDoneUIFLib functions. - Use them in msctfime and msutb. - Add CUIFSystemInfo class in <cicero/cicuif.h>.
This commit is contained in:
parent
afb132a90b
commit
bf92fa2386
4 changed files with 101 additions and 33 deletions
|
@ -3646,18 +3646,6 @@ VOID DetachIME(VOID)
|
||||||
UnregisterImeClass();
|
UnregisterImeClass();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @unimplemented
|
|
||||||
VOID InitUIFLib(VOID)
|
|
||||||
{
|
|
||||||
//FIXME
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @unimplemented
|
|
||||||
VOID DoneUIFLib(VOID)
|
|
||||||
{
|
|
||||||
//FIXME
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @implemented
|
/// @implemented
|
||||||
BOOL ProcessAttach(HINSTANCE hinstDLL)
|
BOOL ProcessAttach(HINSTANCE hinstDLL)
|
||||||
{
|
{
|
||||||
|
@ -3670,7 +3658,7 @@ BOOL ProcessAttach(HINSTANCE hinstDLL)
|
||||||
|
|
||||||
cicGetOSInfo(&g_uACP, &g_dwOSInfo);
|
cicGetOSInfo(&g_uACP, &g_dwOSInfo);
|
||||||
|
|
||||||
InitUIFLib();
|
cicInitUIFLib();
|
||||||
|
|
||||||
if (!TFInitLib())
|
if (!TFInitLib())
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -3695,7 +3683,7 @@ VOID ProcessDetach(HINSTANCE hinstDLL)
|
||||||
DeleteCriticalSection(&g_csLock);
|
DeleteCriticalSection(&g_csLock);
|
||||||
TLS::InternalDestroyTLS();
|
TLS::InternalDestroyTLS();
|
||||||
TLS::Uninitialize();
|
TLS::Uninitialize();
|
||||||
DoneUIFLib();
|
cicDoneUIFLib();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @implemented
|
/// @implemented
|
||||||
|
|
|
@ -121,22 +121,6 @@ STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
|
||||||
return gModule.DllGetClassObject(rclsid, riid, ppv);
|
return gModule.DllGetClassObject(rclsid, riid, ppv);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID InitUIFLib(VOID)
|
|
||||||
{
|
|
||||||
//FIXME
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID DoneUIFLib(VOID)
|
|
||||||
{
|
|
||||||
//FIXME
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -167,7 +151,7 @@ BOOL ProcessAttach(HINSTANCE hinstDLL)
|
||||||
cicGetOSInfo(&g_uACP, &g_dwOSInfo);
|
cicGetOSInfo(&g_uACP, &g_dwOSInfo);
|
||||||
|
|
||||||
TFInitLib(MsUtbCoCreateInstance);
|
TFInitLib(MsUtbCoCreateInstance);
|
||||||
InitUIFLib();
|
cicInitUIFLib();
|
||||||
|
|
||||||
//CTrayIconWnd::RegisterClassW(); //FIXME
|
//CTrayIconWnd::RegisterClassW(); //FIXME
|
||||||
|
|
||||||
|
@ -184,7 +168,7 @@ BOOL ProcessAttach(HINSTANCE hinstDLL)
|
||||||
*/
|
*/
|
||||||
VOID ProcessDetach(HINSTANCE hinstDLL)
|
VOID ProcessDetach(HINSTANCE hinstDLL)
|
||||||
{
|
{
|
||||||
DoneUIFLib();
|
cicDoneUIFLib();
|
||||||
TFUninitLib();
|
TFUninitLib();
|
||||||
::DeleteCriticalSection(&g_cs);
|
::DeleteCriticalSection(&g_cs);
|
||||||
gModule.Term();
|
gModule.Term();
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
#include <atlcom.h>
|
#include <atlcom.h>
|
||||||
#include <strsafe.h>
|
#include <strsafe.h>
|
||||||
#undef STATUS_NO_MEMORY
|
#undef STATUS_NO_MEMORY
|
||||||
#include <cicero/cicbase.h>
|
#include <cicero/cicuif.h>
|
||||||
|
|
||||||
#include <wine/debug.h>
|
#include <wine/debug.h>
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
#include "cicarray.h"
|
#include "cicarray.h"
|
||||||
|
|
||||||
|
class CUIFSystemInfo;
|
||||||
struct CUIFTheme;
|
struct CUIFTheme;
|
||||||
class CUIFObject;
|
class CUIFObject;
|
||||||
class CUIFWindow;
|
class CUIFWindow;
|
||||||
|
@ -21,6 +22,27 @@ class CUIFScheme;
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class CUIFSystemInfo : OSVERSIONINFO
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static CUIFSystemInfo *s_pSystemInfo;
|
||||||
|
DWORD m_cBitsPixels;
|
||||||
|
BOOL m_bHighContrast1;
|
||||||
|
BOOL m_bHighContrast2;
|
||||||
|
|
||||||
|
CUIFSystemInfo();
|
||||||
|
void GetSystemMetrics();
|
||||||
|
void Initialize();
|
||||||
|
};
|
||||||
|
|
||||||
|
DECLSPEC_SELECTANY CUIFSystemInfo *CUIFSystemInfo::s_pSystemInfo = NULL;
|
||||||
|
|
||||||
|
void cicInitUIFSys(void);
|
||||||
|
void cicDoneUIFSys(void);
|
||||||
|
void cicUpdateUIFSys(void);
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#include <uxtheme.h>
|
#include <uxtheme.h>
|
||||||
|
|
||||||
// uxtheme.dll
|
// uxtheme.dll
|
||||||
|
@ -340,6 +362,80 @@ class CUIFWindow : public CUIFObject
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
inline void cicInitUIFLib(void)
|
||||||
|
{
|
||||||
|
cicInitUIFSys();
|
||||||
|
cicInitUIFScheme();
|
||||||
|
cicInitUIFUtil();
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void cicDoneUIFLib(void)
|
||||||
|
{
|
||||||
|
cicDoneUIFScheme();
|
||||||
|
cicDoneUIFSys();
|
||||||
|
cicDoneUIFUtil();
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
inline CUIFSystemInfo::CUIFSystemInfo()
|
||||||
|
{
|
||||||
|
dwMajorVersion = 4;
|
||||||
|
dwMinorVersion = 0;
|
||||||
|
dwBuildNumber = 0;
|
||||||
|
dwPlatformId = VER_PLATFORM_WIN32_WINDOWS;
|
||||||
|
m_cBitsPixels = 8;
|
||||||
|
m_bHighContrast1 = m_bHighContrast2 = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void CUIFSystemInfo::GetSystemMetrics()
|
||||||
|
{
|
||||||
|
HDC hDC = ::GetDC(NULL);
|
||||||
|
m_cBitsPixels = ::GetDeviceCaps(hDC, BITSPIXEL);
|
||||||
|
::ReleaseDC(NULL, hDC);
|
||||||
|
|
||||||
|
HIGHCONTRAST HighContrast = { sizeof(HighContrast) };
|
||||||
|
::SystemParametersInfo(SPI_GETHIGHCONTRAST, sizeof(HighContrast), &HighContrast, 0);
|
||||||
|
m_bHighContrast1 = !!(HighContrast.dwFlags & HCF_HIGHCONTRASTON);
|
||||||
|
COLORREF rgbBtnText = ::GetSysColor(COLOR_BTNTEXT);
|
||||||
|
COLORREF rgbBtnFace = ::GetSysColor(COLOR_BTNFACE);
|
||||||
|
const COLORREF black = RGB(0, 0, 0), white = RGB(255, 255, 255);
|
||||||
|
m_bHighContrast2 = (m_bHighContrast1 ||
|
||||||
|
(rgbBtnText == black && rgbBtnFace == white) ||
|
||||||
|
(rgbBtnText == white && rgbBtnFace == black));
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void CUIFSystemInfo::Initialize()
|
||||||
|
{
|
||||||
|
dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
||||||
|
::GetVersionEx(this);
|
||||||
|
GetSystemMetrics();
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void cicInitUIFSys(void)
|
||||||
|
{
|
||||||
|
CUIFSystemInfo::s_pSystemInfo = new(cicNoThrow) CUIFSystemInfo();
|
||||||
|
if (CUIFSystemInfo::s_pSystemInfo)
|
||||||
|
CUIFSystemInfo::s_pSystemInfo->Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void cicDoneUIFSys(void)
|
||||||
|
{
|
||||||
|
if (CUIFSystemInfo::s_pSystemInfo)
|
||||||
|
{
|
||||||
|
delete CUIFSystemInfo::s_pSystemInfo;
|
||||||
|
CUIFSystemInfo::s_pSystemInfo = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void cicUpdateUIFSys(void)
|
||||||
|
{
|
||||||
|
if (CUIFSystemInfo::s_pSystemInfo)
|
||||||
|
CUIFSystemInfo::s_pSystemInfo->GetSystemMetrics();
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
inline HRESULT CUIFTheme::InternalOpenThemeData(HWND hWnd)
|
inline HRESULT CUIFTheme::InternalOpenThemeData(HWND hWnd)
|
||||||
{
|
{
|
||||||
if (!hWnd || !m_pszClassList)
|
if (!hWnd || !m_pszClassList)
|
||||||
|
|
Loading…
Reference in a new issue