msimtf: Add a mostly wrapper stub for IActiveIMMApp.
This commit is contained in:
parent
40c06ea296
commit
a971489dd0
|
@ -3,9 +3,12 @@ TOPOBJDIR = ../..
|
|||
SRCDIR = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
MODULE = msimtf.dll
|
||||
IMPORTS = uuid kernel32
|
||||
IMPORTS = uuid imm32 kernel32
|
||||
|
||||
C_SRCS = \
|
||||
activeimmapp.c \
|
||||
main.c
|
||||
|
||||
C_SRCS = main.c
|
||||
RC_SRCS = rsrc.rc
|
||||
|
||||
@MAKE_DLL_RULES@
|
||||
|
|
|
@ -0,0 +1,827 @@
|
|||
/*
|
||||
* ActiveIMMApp Interface
|
||||
*
|
||||
* Copyright 2008 CodeWeavers, Aric Stewart
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
#define COBJMACROS
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "wingdi.h"
|
||||
#include "winreg.h"
|
||||
#include "winuser.h"
|
||||
#include "winerror.h"
|
||||
#include "objbase.h"
|
||||
#include "advpub.h"
|
||||
#include "dimm.h"
|
||||
#include "imm.h"
|
||||
|
||||
#include "wine/unicode.h"
|
||||
|
||||
#include "wine/debug.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(msimtf);
|
||||
|
||||
typedef struct tagActiveIMMApp {
|
||||
const IActiveIMMAppVtbl *vtbl;
|
||||
LONG refCount;
|
||||
} ActiveIMMApp;
|
||||
|
||||
static void ActiveIMMApp_Destructor(ActiveIMMApp* This)
|
||||
{
|
||||
TRACE("\n");
|
||||
HeapFree(GetProcessHeap(),0,This);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_QueryInterface (IActiveIMMApp* iface,
|
||||
REFIID iid, LPVOID *ppvOut)
|
||||
{
|
||||
ActiveIMMApp *This = (ActiveIMMApp*)iface;
|
||||
*ppvOut = NULL;
|
||||
|
||||
if (IsEqualIID(iid, &IID_IUnknown) || IsEqualIID(iid, &IID_IActiveIMMApp))
|
||||
{
|
||||
*ppvOut = This;
|
||||
}
|
||||
|
||||
if (*ppvOut)
|
||||
{
|
||||
IUnknown_AddRef(iface);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
WARN("unsupported interface: %s\n", debugstr_guid(iid));
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI ActiveIMMApp_AddRef(IActiveIMMApp* iface)
|
||||
{
|
||||
ActiveIMMApp *This = (ActiveIMMApp*)iface;
|
||||
return InterlockedIncrement(&This->refCount);
|
||||
}
|
||||
|
||||
static ULONG WINAPI ActiveIMMApp_Release(IActiveIMMApp* iface)
|
||||
{
|
||||
ActiveIMMApp *This = (ActiveIMMApp*)iface;
|
||||
ULONG ret;
|
||||
|
||||
ret = InterlockedDecrement(&This->refCount);
|
||||
if (ret == 0)
|
||||
ActiveIMMApp_Destructor(This);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_AssociateContext(IActiveIMMApp* iface,
|
||||
HWND hWnd, HIMC hIME, HIMC *phPrev)
|
||||
{
|
||||
*phPrev = ImmAssociateContext(hWnd,hIME);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_ConfigureIMEA(IActiveIMMApp* This,
|
||||
HKL hKL, HWND hwnd, DWORD dwMode, REGISTERWORDA *pData)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmConfigureIMEA(hKL, hwnd, dwMode, pData);
|
||||
if (rc)
|
||||
return E_FAIL;
|
||||
else
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_ConfigureIMEW(IActiveIMMApp* This,
|
||||
HKL hKL, HWND hWnd, DWORD dwMode, REGISTERWORDW *pData)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmConfigureIMEW(hKL, hWnd, dwMode, pData);
|
||||
if (rc)
|
||||
return E_FAIL;
|
||||
else
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_CreateContext(IActiveIMMApp* This,
|
||||
HIMC *phIMC)
|
||||
{
|
||||
*phIMC = ImmCreateContext();
|
||||
if (*phIMC)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_DestroyContext(IActiveIMMApp* This,
|
||||
HIMC hIME)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmDestroyContext(hIME);
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_EnumRegisterWordA(IActiveIMMApp* This,
|
||||
HKL hKL, LPSTR szReading, DWORD dwStyle, LPSTR szRegister,
|
||||
LPVOID pData, IEnumRegisterWordA **pEnum)
|
||||
{
|
||||
FIXME("Stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_EnumRegisterWordW(IActiveIMMApp* This,
|
||||
HKL hKL, LPWSTR szReading, DWORD dwStyle, LPWSTR szRegister,
|
||||
LPVOID pData, IEnumRegisterWordW **pEnum)
|
||||
{
|
||||
FIXME("Stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_EscapeA(IActiveIMMApp* This,
|
||||
HKL hKL, HIMC hIMC, UINT uEscape, LPVOID pData, LRESULT *plResult)
|
||||
{
|
||||
*plResult = ImmEscapeA(hKL, hIMC, uEscape, pData);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_EscapeW(IActiveIMMApp* This,
|
||||
HKL hKL, HIMC hIMC, UINT uEscape, LPVOID pData, LRESULT *plResult)
|
||||
{
|
||||
*plResult = ImmEscapeW(hKL, hIMC, uEscape, pData);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetCandidateListA(IActiveIMMApp* This,
|
||||
HIMC hIMC, DWORD dwIndex, UINT uBufLen, CANDIDATELIST *pCandList,
|
||||
UINT *puCopied)
|
||||
{
|
||||
*puCopied = ImmGetCandidateListA(hIMC, dwIndex, pCandList, uBufLen);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetCandidateListW(IActiveIMMApp* This,
|
||||
HIMC hIMC, DWORD dwIndex, UINT uBufLen, CANDIDATELIST *pCandList,
|
||||
UINT *puCopied)
|
||||
{
|
||||
*puCopied = ImmGetCandidateListW(hIMC, dwIndex, pCandList, uBufLen);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetCandidateListCountA(IActiveIMMApp* This,
|
||||
HIMC hIMC, DWORD *pdwListSize, DWORD *pdwBufLen)
|
||||
{
|
||||
*pdwBufLen = ImmGetCandidateListCountA(hIMC, pdwListSize);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetCandidateListCountW(IActiveIMMApp* This,
|
||||
HIMC hIMC, DWORD *pdwListSize, DWORD *pdwBufLen)
|
||||
{
|
||||
*pdwBufLen = ImmGetCandidateListCountA(hIMC, pdwListSize);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetCandidateWindow(IActiveIMMApp* This,
|
||||
HIMC hIMC, DWORD dwIndex, CANDIDATEFORM *pCandidate)
|
||||
{
|
||||
BOOL rc;
|
||||
rc = ImmGetCandidateWindow(hIMC,dwIndex,pCandidate);
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetCompositionFontA(IActiveIMMApp* This,
|
||||
HIMC hIMC, LOGFONTA *plf)
|
||||
{
|
||||
BOOL rc;
|
||||
rc = ImmGetCompositionFontA(hIMC,plf);
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetCompositionFontW(IActiveIMMApp* This,
|
||||
HIMC hIMC, LOGFONTW *plf)
|
||||
{
|
||||
BOOL rc;
|
||||
rc = ImmGetCompositionFontW(hIMC,plf);
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetCompositionStringA(IActiveIMMApp* This,
|
||||
HIMC hIMC, DWORD dwIndex, DWORD dwBufLen, LONG *plCopied, LPVOID pBuf)
|
||||
{
|
||||
*plCopied = ImmGetCompositionStringA(hIMC, dwIndex, pBuf, dwBufLen);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetCompositionStringW(IActiveIMMApp* This,
|
||||
HIMC hIMC, DWORD dwIndex, DWORD dwBufLen, LONG *plCopied, LPVOID pBuf)
|
||||
{
|
||||
*plCopied = ImmGetCompositionStringW(hIMC, dwIndex, pBuf, dwBufLen);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetCompositionWindow(IActiveIMMApp* This,
|
||||
HIMC hIMC, COMPOSITIONFORM *pCompForm)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmGetCompositionWindow(hIMC,pCompForm);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetContext(IActiveIMMApp* This,
|
||||
HWND hwnd, HIMC *phIMC)
|
||||
{
|
||||
*phIMC = ImmGetContext(hwnd);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetConversionListA(IActiveIMMApp* This,
|
||||
HKL hKL, HIMC hIMC, LPSTR pSrc, UINT uBufLen, UINT uFlag,
|
||||
CANDIDATELIST *pDst, UINT *puCopied)
|
||||
{
|
||||
*puCopied = ImmGetConversionListA(hKL, hIMC, pSrc, pDst, uBufLen, uFlag);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetConversionListW(IActiveIMMApp* This,
|
||||
HKL hKL, HIMC hIMC, LPWSTR pSrc, UINT uBufLen, UINT uFlag,
|
||||
CANDIDATELIST *pDst, UINT *puCopied)
|
||||
{
|
||||
*puCopied = ImmGetConversionListW(hKL, hIMC, pSrc, pDst, uBufLen, uFlag);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetConversionStatus(IActiveIMMApp* This,
|
||||
HIMC hIMC, DWORD *pfdwConversion, DWORD *pfdwSentence)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmGetConversionStatus(hIMC, pfdwConversion, pfdwSentence);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetDefaultIMEWnd(IActiveIMMApp* This,
|
||||
HWND hWnd, HWND *phDefWnd)
|
||||
{
|
||||
*phDefWnd = ImmGetDefaultIMEWnd(hWnd);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetDescriptionA(IActiveIMMApp* This,
|
||||
HKL hKL, UINT uBufLen, LPSTR szDescription, UINT *puCopied)
|
||||
{
|
||||
*puCopied = ImmGetDescriptionA(hKL, szDescription, uBufLen);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetDescriptionW(IActiveIMMApp* This,
|
||||
HKL hKL, UINT uBufLen, LPWSTR szDescription, UINT *puCopied)
|
||||
{
|
||||
*puCopied = ImmGetDescriptionW(hKL, szDescription, uBufLen);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetGuideLineA(IActiveIMMApp* This,
|
||||
HIMC hIMC, DWORD dwIndex, DWORD dwBufLen, LPSTR pBuf,
|
||||
DWORD *pdwResult)
|
||||
{
|
||||
*pdwResult = ImmGetGuideLineA(hIMC, dwIndex, pBuf, dwBufLen);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetGuideLineW(IActiveIMMApp* This,
|
||||
HIMC hIMC, DWORD dwIndex, DWORD dwBufLen, LPWSTR pBuf,
|
||||
DWORD *pdwResult)
|
||||
{
|
||||
*pdwResult = ImmGetGuideLineW(hIMC, dwIndex, pBuf, dwBufLen);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetIMEFileNameA(IActiveIMMApp* This,
|
||||
HKL hKL, UINT uBufLen, LPSTR szFileName, UINT *puCopied)
|
||||
{
|
||||
*puCopied = ImmGetIMEFileNameA(hKL, szFileName, uBufLen);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetIMEFileNameW(IActiveIMMApp* This,
|
||||
HKL hKL, UINT uBufLen, LPWSTR szFileName, UINT *puCopied)
|
||||
{
|
||||
*puCopied = ImmGetIMEFileNameW(hKL, szFileName, uBufLen);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetOpenStatus(IActiveIMMApp* This,
|
||||
HIMC hIMC)
|
||||
{
|
||||
return ImmGetOpenStatus(hIMC);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetProperty(IActiveIMMApp* This,
|
||||
HKL hKL, DWORD fdwIndex, DWORD *pdwProperty)
|
||||
{
|
||||
*pdwProperty = ImmGetProperty(hKL, fdwIndex);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetRegisterWordStyleA(IActiveIMMApp* This,
|
||||
HKL hKL, UINT nItem, STYLEBUFA *pStyleBuf, UINT *puCopied)
|
||||
{
|
||||
*puCopied = ImmGetRegisterWordStyleA(hKL, nItem, pStyleBuf);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetRegisterWordStyleW(IActiveIMMApp* This,
|
||||
HKL hKL, UINT nItem, STYLEBUFW *pStyleBuf, UINT *puCopied)
|
||||
{
|
||||
*puCopied = ImmGetRegisterWordStyleW(hKL, nItem, pStyleBuf);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetStatusWindowPos(IActiveIMMApp* This,
|
||||
HIMC hIMC, POINT *pptPos)
|
||||
{
|
||||
BOOL rc;
|
||||
rc = ImmGetStatusWindowPos(hIMC, pptPos);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetVirtualKey(IActiveIMMApp* This,
|
||||
HWND hWnd, UINT *puVirtualKey)
|
||||
{
|
||||
*puVirtualKey = ImmGetVirtualKey(hWnd);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_InstallIMEA(IActiveIMMApp* This,
|
||||
LPSTR szIMEFileName, LPSTR szLayoutText, HKL *phKL)
|
||||
{
|
||||
*phKL = ImmInstallIMEA(szIMEFileName,szLayoutText);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_InstallIMEW(IActiveIMMApp* This,
|
||||
LPWSTR szIMEFileName, LPWSTR szLayoutText, HKL *phKL)
|
||||
{
|
||||
*phKL = ImmInstallIMEW(szIMEFileName,szLayoutText);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_IsIME(IActiveIMMApp* This,
|
||||
HKL hKL)
|
||||
{
|
||||
return ImmIsIME(hKL);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_IsUIMessageA(IActiveIMMApp* This,
|
||||
HWND hWndIME, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
return ImmIsUIMessageA(hWndIME,msg,wParam,lParam);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_IsUIMessageW(IActiveIMMApp* This,
|
||||
HWND hWndIME, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
return ImmIsUIMessageW(hWndIME,msg,wParam,lParam);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_NotifyIME(IActiveIMMApp* This,
|
||||
HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmNotifyIME(hIMC,dwAction,dwIndex,dwValue);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_RegisterWordA(IActiveIMMApp* This,
|
||||
HKL hKL, LPSTR szReading, DWORD dwStyle, LPSTR szRegister)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmRegisterWordA(hKL,szReading,dwStyle,szRegister);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_RegisterWordW(IActiveIMMApp* This,
|
||||
HKL hKL, LPWSTR szReading, DWORD dwStyle, LPWSTR szRegister)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmRegisterWordW(hKL,szReading,dwStyle,szRegister);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_ReleaseContext(IActiveIMMApp* This,
|
||||
HWND hWnd, HIMC hIMC)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmReleaseContext(hWnd,hIMC);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_SetCandidateWindow(IActiveIMMApp* This,
|
||||
HIMC hIMC, CANDIDATEFORM *pCandidate)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmSetCandidateWindow(hIMC,pCandidate);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_SetCompositionFontA(IActiveIMMApp* This,
|
||||
HIMC hIMC, LOGFONTA *plf)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmSetCompositionFontA(hIMC,plf);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_SetCompositionFontW(IActiveIMMApp* This,
|
||||
HIMC hIMC, LOGFONTW *plf)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmSetCompositionFontW(hIMC,plf);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_SetCompositionStringA(IActiveIMMApp* This,
|
||||
HIMC hIMC, DWORD dwIndex, LPVOID pComp, DWORD dwCompLen,
|
||||
LPVOID pRead, DWORD dwReadLen)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmSetCompositionStringA(hIMC,dwIndex,pComp,dwCompLen,pRead,dwReadLen);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_SetCompositionStringW(IActiveIMMApp* This,
|
||||
HIMC hIMC, DWORD dwIndex, LPVOID pComp, DWORD dwCompLen,
|
||||
LPVOID pRead, DWORD dwReadLen)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmSetCompositionStringW(hIMC,dwIndex,pComp,dwCompLen,pRead,dwReadLen);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_SetCompositionWindow(IActiveIMMApp* This,
|
||||
HIMC hIMC, COMPOSITIONFORM *pCompForm)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmSetCompositionWindow(hIMC,pCompForm);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_SetConversionStatus(IActiveIMMApp* This,
|
||||
HIMC hIMC, DWORD fdwConversion, DWORD fdwSentence)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmSetConversionStatus(hIMC,fdwConversion,fdwSentence);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_SetOpenStatus(IActiveIMMApp* This,
|
||||
HIMC hIMC, BOOL fOpen)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmSetOpenStatus(hIMC,fOpen);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_SetStatusWindowPos(IActiveIMMApp* This,
|
||||
HIMC hIMC, POINT *pptPos)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmSetStatusWindowPos(hIMC,pptPos);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_SimulateHotKey(IActiveIMMApp* This,
|
||||
HWND hwnd, DWORD dwHotKeyID)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmSimulateHotKey(hwnd,dwHotKeyID);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_UnregisterWordA(IActiveIMMApp* This,
|
||||
HKL hKL, LPSTR szReading, DWORD dwStyle, LPSTR szUnregister)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmUnregisterWordA(hKL,szReading,dwStyle,szUnregister);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_UnregisterWordW(IActiveIMMApp* This,
|
||||
HKL hKL, LPWSTR szReading, DWORD dwStyle, LPWSTR szUnregister)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmUnregisterWordW(hKL,szReading,dwStyle,szUnregister);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_Activate(IActiveIMMApp* This,
|
||||
BOOL fRestoreLayout)
|
||||
{
|
||||
FIXME("Stub\n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_Deactivate(IActiveIMMApp* This)
|
||||
{
|
||||
FIXME("Stub\n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_OnDefWindowProc(IActiveIMMApp* This,
|
||||
HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, LRESULT *plResult)
|
||||
{
|
||||
FIXME("Stub (%p %x %lx %lx)\n",hWnd,Msg,wParam,lParam);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_FilterClientWindows(IActiveIMMApp* This,
|
||||
ATOM *aaClassList, UINT uSize)
|
||||
{
|
||||
FIXME("Stub\n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetCodePageA(IActiveIMMApp* This,
|
||||
HKL hKL, UINT *uCodePage)
|
||||
{
|
||||
FIXME("Stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetLangId(IActiveIMMApp* This,
|
||||
HKL hKL, LANGID *plid)
|
||||
{
|
||||
FIXME("Stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_AssociateContextEx(IActiveIMMApp* This,
|
||||
HWND hWnd, HIMC hIMC, DWORD dwFlags)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmAssociateContextEx(hWnd,hIMC,dwFlags);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_DisableIME(IActiveIMMApp* This,
|
||||
DWORD idThread)
|
||||
{
|
||||
BOOL rc;
|
||||
|
||||
rc = ImmDisableIME(idThread);
|
||||
|
||||
if (rc)
|
||||
return S_OK;
|
||||
else
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetImeMenuItemsA(IActiveIMMApp* This,
|
||||
HIMC hIMC, DWORD dwFlags, DWORD dwType,
|
||||
IMEMENUITEMINFOA *pImeParentMenu, IMEMENUITEMINFOA *pImeMenu,
|
||||
DWORD dwSize, DWORD *pdwResult)
|
||||
{
|
||||
*pdwResult = ImmGetImeMenuItemsA(hIMC,dwFlags,dwType,pImeParentMenu,pImeMenu,dwSize);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_GetImeMenuItemsW(IActiveIMMApp* This,
|
||||
HIMC hIMC, DWORD dwFlags, DWORD dwType,
|
||||
IMEMENUITEMINFOW *pImeParentMenu, IMEMENUITEMINFOW *pImeMenu,
|
||||
DWORD dwSize, DWORD *pdwResult)
|
||||
{
|
||||
*pdwResult = ImmGetImeMenuItemsW(hIMC,dwFlags,dwType,pImeParentMenu,pImeMenu,dwSize);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ActiveIMMApp_EnumInputContext(IActiveIMMApp* This,
|
||||
DWORD idThread, IEnumInputContext **ppEnum)
|
||||
{
|
||||
FIXME("Stub\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static const IActiveIMMAppVtbl ActiveIMMAppVtbl =
|
||||
{
|
||||
ActiveIMMApp_QueryInterface,
|
||||
ActiveIMMApp_AddRef,
|
||||
ActiveIMMApp_Release,
|
||||
|
||||
ActiveIMMApp_AssociateContext,
|
||||
ActiveIMMApp_ConfigureIMEA,
|
||||
ActiveIMMApp_ConfigureIMEW,
|
||||
ActiveIMMApp_CreateContext,
|
||||
ActiveIMMApp_DestroyContext,
|
||||
ActiveIMMApp_EnumRegisterWordA,
|
||||
ActiveIMMApp_EnumRegisterWordW,
|
||||
ActiveIMMApp_EscapeA,
|
||||
ActiveIMMApp_EscapeW,
|
||||
ActiveIMMApp_GetCandidateListA,
|
||||
ActiveIMMApp_GetCandidateListW,
|
||||
ActiveIMMApp_GetCandidateListCountA,
|
||||
ActiveIMMApp_GetCandidateListCountW,
|
||||
ActiveIMMApp_GetCandidateWindow,
|
||||
ActiveIMMApp_GetCompositionFontA,
|
||||
ActiveIMMApp_GetCompositionFontW,
|
||||
ActiveIMMApp_GetCompositionStringA,
|
||||
ActiveIMMApp_GetCompositionStringW,
|
||||
ActiveIMMApp_GetCompositionWindow,
|
||||
ActiveIMMApp_GetContext,
|
||||
ActiveIMMApp_GetConversionListA,
|
||||
ActiveIMMApp_GetConversionListW,
|
||||
ActiveIMMApp_GetConversionStatus,
|
||||
ActiveIMMApp_GetDefaultIMEWnd,
|
||||
ActiveIMMApp_GetDescriptionA,
|
||||
ActiveIMMApp_GetDescriptionW,
|
||||
ActiveIMMApp_GetGuideLineA,
|
||||
ActiveIMMApp_GetGuideLineW,
|
||||
ActiveIMMApp_GetIMEFileNameA,
|
||||
ActiveIMMApp_GetIMEFileNameW,
|
||||
ActiveIMMApp_GetOpenStatus,
|
||||
ActiveIMMApp_GetProperty,
|
||||
ActiveIMMApp_GetRegisterWordStyleA,
|
||||
ActiveIMMApp_GetRegisterWordStyleW,
|
||||
ActiveIMMApp_GetStatusWindowPos,
|
||||
ActiveIMMApp_GetVirtualKey,
|
||||
ActiveIMMApp_InstallIMEA,
|
||||
ActiveIMMApp_InstallIMEW,
|
||||
ActiveIMMApp_IsIME,
|
||||
ActiveIMMApp_IsUIMessageA,
|
||||
ActiveIMMApp_IsUIMessageW,
|
||||
ActiveIMMApp_NotifyIME,
|
||||
ActiveIMMApp_RegisterWordA,
|
||||
ActiveIMMApp_RegisterWordW,
|
||||
ActiveIMMApp_ReleaseContext,
|
||||
ActiveIMMApp_SetCandidateWindow,
|
||||
ActiveIMMApp_SetCompositionFontA,
|
||||
ActiveIMMApp_SetCompositionFontW,
|
||||
ActiveIMMApp_SetCompositionStringA,
|
||||
ActiveIMMApp_SetCompositionStringW,
|
||||
ActiveIMMApp_SetCompositionWindow,
|
||||
ActiveIMMApp_SetConversionStatus,
|
||||
ActiveIMMApp_SetOpenStatus,
|
||||
ActiveIMMApp_SetStatusWindowPos,
|
||||
ActiveIMMApp_SimulateHotKey,
|
||||
ActiveIMMApp_UnregisterWordA,
|
||||
ActiveIMMApp_UnregisterWordW,
|
||||
|
||||
ActiveIMMApp_Activate,
|
||||
ActiveIMMApp_Deactivate,
|
||||
ActiveIMMApp_OnDefWindowProc,
|
||||
ActiveIMMApp_FilterClientWindows,
|
||||
ActiveIMMApp_GetCodePageA,
|
||||
ActiveIMMApp_GetLangId,
|
||||
ActiveIMMApp_AssociateContextEx,
|
||||
ActiveIMMApp_DisableIME,
|
||||
ActiveIMMApp_GetImeMenuItemsA,
|
||||
ActiveIMMApp_GetImeMenuItemsW,
|
||||
ActiveIMMApp_EnumInputContext
|
||||
};
|
||||
|
||||
HRESULT ActiveIMMApp_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
|
||||
{
|
||||
ActiveIMMApp *This;
|
||||
if (pUnkOuter)
|
||||
return CLASS_E_NOAGGREGATION;
|
||||
|
||||
This = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(ActiveIMMApp));
|
||||
if (This == NULL)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
This->vtbl = &ActiveIMMAppVtbl;
|
||||
This->refCount = 1;
|
||||
|
||||
TRACE("returning %p\n",This);
|
||||
*ppOut = (IUnknown *)This;
|
||||
return S_OK;
|
||||
}
|
|
@ -36,13 +36,9 @@
|
|||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(msimtf);
|
||||
|
||||
static HINSTANCE msimtf_instance;
|
||||
extern HRESULT ActiveIMMApp_Constructor(IUnknown *punkOuter, IUnknown **ppOut);
|
||||
|
||||
static HRESULT CActiveIMM_Create(IUnknown *outer, REFIID riid, void **ppv)
|
||||
{
|
||||
FIXME("(%p %s %p)\n", outer, debugstr_guid(riid), ppv);
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
static HINSTANCE msimtf_instance;
|
||||
|
||||
/******************************************************************
|
||||
* DllMain (msimtf.@)
|
||||
|
@ -66,7 +62,7 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
|
|||
typedef struct {
|
||||
const IClassFactoryVtbl *lpClassFactoryVtbl;
|
||||
|
||||
HRESULT (*cf)(IUnknown*,REFIID,void**);
|
||||
HRESULT (*cf)(IUnknown*,IUnknown**);
|
||||
} ClassFactory;
|
||||
|
||||
static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface,
|
||||
|
@ -105,7 +101,17 @@ static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface,
|
|||
IUnknown *pOuter, REFIID riid, void **ppv)
|
||||
{
|
||||
ClassFactory *This = (ClassFactory*)iface;
|
||||
return This->cf(pOuter, riid, ppv);
|
||||
HRESULT ret;
|
||||
IUnknown *obj;
|
||||
TRACE("(%p, %p, %s, %p)\n", iface, pOuter, debugstr_guid(riid), ppv);
|
||||
|
||||
ret = This->cf(pOuter, &obj);
|
||||
if (FAILED(ret))
|
||||
return ret;
|
||||
|
||||
ret = IUnknown_QueryInterface(obj,riid,ppv);
|
||||
IUnknown_Release(obj);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL dolock)
|
||||
|
@ -130,11 +136,9 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
|
|||
if(IsEqualGUID(&CLSID_CActiveIMM, rclsid)) {
|
||||
static ClassFactory cf = {
|
||||
&ClassFactoryVtbl,
|
||||
CActiveIMM_Create
|
||||
ActiveIMMApp_Constructor,
|
||||
};
|
||||
|
||||
TRACE("CLSID_CActiveIMM\n");
|
||||
|
||||
return IClassFactory_QueryInterface((IClassFactory*)&cf, riid, ppv);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue