mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +00:00
[MSCTFIME][SDK] Implement CtfImeGuidAtom (#6196)
- Add CTFIMECONTEXT structure. - Add CicInputContext class. - Rename INPUTCONTEXTDX.dwUnknown5 as hCtfImeContext and retype it as HIMCC. - Implement CtfImeGetGuidAtom by using them. CORE-19360
This commit is contained in:
parent
6d100d5b29
commit
52bd0c0c18
3 changed files with 68 additions and 3 deletions
|
@ -82,6 +82,38 @@ IsInteractiveUserLogon(VOID)
|
||||||
return bOK && IsMember;
|
return bOK && IsMember;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class CicInputContext
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
HRESULT
|
||||||
|
GetGuidAtom(
|
||||||
|
_Inout_ IMCLock& imcLock,
|
||||||
|
_In_ DWORD dwUnknown,
|
||||||
|
_Out_opt_ LPDWORD pdwGuidAtom);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
HRESULT
|
||||||
|
CicInputContext::GetGuidAtom(
|
||||||
|
_Inout_ IMCLock& imcLock,
|
||||||
|
_In_ DWORD dwUnknown,
|
||||||
|
_Out_opt_ LPDWORD pdwGuidAtom)
|
||||||
|
{
|
||||||
|
InternalIMCCLock<CTFIMECONTEXT> imeContext(imcLock.m_pIC->hCompStr);
|
||||||
|
|
||||||
|
HRESULT hr = imeContext.m_hr;
|
||||||
|
if (!imeContext)
|
||||||
|
hr = E_FAIL;
|
||||||
|
|
||||||
|
if (FAILED(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
|
// FIXME
|
||||||
|
return hr;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -756,14 +788,39 @@ CtfImeEscapeEx(
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* CtfImeGetGuidAtom (MSCTFIME.@)
|
||||||
|
*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
EXTERN_C HRESULT WINAPI
|
EXTERN_C HRESULT WINAPI
|
||||||
CtfImeGetGuidAtom(
|
CtfImeGetGuidAtom(
|
||||||
_In_ HIMC hIMC,
|
_In_ HIMC hIMC,
|
||||||
_In_ DWORD dwUnknown,
|
_In_ DWORD dwUnknown,
|
||||||
_Out_opt_ LPDWORD pdwGuidAtom)
|
_Out_opt_ LPDWORD pdwGuidAtom)
|
||||||
{
|
{
|
||||||
FIXME("stub:(%p, 0x%lX, %p)\n", hIMC, dwUnknown, pdwGuidAtom);
|
TRACE("(%p, 0x%lX, %p)\n", hIMC, dwUnknown, pdwGuidAtom);
|
||||||
return E_FAIL;
|
|
||||||
|
IMCLock imcLock(hIMC);
|
||||||
|
|
||||||
|
HRESULT hr = imcLock.m_hr;
|
||||||
|
if (!imcLock)
|
||||||
|
hr = E_FAIL;
|
||||||
|
if (FAILED(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
|
InternalIMCCLock<CTFIMECONTEXT> imccLock(imcLock.m_pIC->hCtfImeContext);
|
||||||
|
hr = imccLock.m_hr;
|
||||||
|
if (!imccLock)
|
||||||
|
hr = E_FAIL;
|
||||||
|
if (FAILED(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
|
if (!imccLock.m_pIMCC->m_pCicIC)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
|
hr = imccLock.m_pIMCC->m_pCicIC->GetGuidAtom(imcLock, dwUnknown, pdwGuidAtom);
|
||||||
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
|
|
@ -25,6 +25,14 @@
|
||||||
#include <cicero/CModulePath.h>
|
#include <cicero/CModulePath.h>
|
||||||
#include <cicero/imclock.h>
|
#include <cicero/imclock.h>
|
||||||
|
|
||||||
|
class CicInputContext;
|
||||||
|
|
||||||
|
typedef struct tagCTFIMECONTEXT
|
||||||
|
{
|
||||||
|
CicInputContext *m_pCicIC;
|
||||||
|
DWORD m_dwCicFlags;
|
||||||
|
} CTFIMECONTEXT, *PCTFIMECONTEXT;
|
||||||
|
|
||||||
#include <wine/debug.h>
|
#include <wine/debug.h>
|
||||||
|
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
|
|
|
@ -149,7 +149,7 @@ typedef struct INPUTCONTEXTDX
|
||||||
DWORD dwUnknown2;
|
DWORD dwUnknown2;
|
||||||
struct IME_STATE *pState; // +0x154
|
struct IME_STATE *pState; // +0x154
|
||||||
DWORD dwChange; // +0x158
|
DWORD dwChange; // +0x158
|
||||||
DWORD dwUnknown5;
|
HIMCC hCtfImeContext;
|
||||||
} INPUTCONTEXTDX, *PINPUTCONTEXTDX, *LPINPUTCONTEXTDX;
|
} INPUTCONTEXTDX, *PINPUTCONTEXTDX, *LPINPUTCONTEXTDX;
|
||||||
|
|
||||||
// bits of fdwInit of INPUTCONTEXT
|
// bits of fdwInit of INPUTCONTEXT
|
||||||
|
|
Loading…
Reference in a new issue