| /* | 
 |  * Copyright 2007 Jacek Caban for CodeWeavers | 
 |  * | 
 |  * 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 | 
 |  */ | 
 |  | 
 | #ifndef DO_NO_IMPORTS | 
 | import "unknwn.idl"; | 
 | #endif | 
 |  | 
 | cpp_quote("#include <imm.h>") | 
 |  | 
 | cpp_quote("#if 0") | 
 |  | 
 | typedef WORD LANGID; | 
 |  | 
 | typedef struct { | 
 |     LPSTR lpReading; | 
 |     LPSTR lpWord; | 
 | } REGISTERWORDA; | 
 |  | 
 | typedef struct { | 
 |     LPWSTR lpReading; | 
 |     LPWSTR lpWord; | 
 | } REGISTERWORDW; | 
 |  | 
 | #define LF_FACESIZE         32 | 
 |  | 
 | typedef struct { | 
 |     LONG lfHeight; | 
 |     LONG lfWidth; | 
 |     LONG lfEscapement; | 
 |     LONG lfOrientation; | 
 |     LONG lfWeight; | 
 |     BYTE lfItalic; | 
 |     BYTE lfUnderline; | 
 |     BYTE lfStrikeOut; | 
 |     BYTE lfCharSet; | 
 |     BYTE lfOutPrecision; | 
 |     BYTE lfClipPrecision; | 
 |     BYTE lfQuality; | 
 |     BYTE lfPitchAndFamily; | 
 |     CHAR lfFaceName[LF_FACESIZE]; | 
 | } LOGFONTA; | 
 |  | 
 | typedef struct { | 
 |     LONG  lfHeight; | 
 |     LONG  lfWidth; | 
 |     LONG  lfEscapement; | 
 |     LONG  lfOrientation; | 
 |     LONG  lfWeight; | 
 |     BYTE  lfItalic; | 
 |     BYTE  lfUnderline; | 
 |     BYTE  lfStrikeOut; | 
 |     BYTE  lfCharSet; | 
 |     BYTE  lfOutPrecision; | 
 |     BYTE  lfClipPrecision; | 
 |     BYTE  lfQuality; | 
 |     BYTE  lfPitchAndFamily; | 
 |     WCHAR lfFaceName[LF_FACESIZE]; | 
 | } LOGFONTW; | 
 |  | 
 | typedef DWORD HIMC; | 
 | typedef DWORD HIMCC; | 
 |  | 
 | typedef struct { | 
 |     DWORD dwIndex; | 
 |     DWORD dwStyle; | 
 |     POINT ptCurrentPos; | 
 |     RECT  rcArea; | 
 | } CANDIDATEFORM; | 
 |  | 
 | typedef struct { | 
 |     DWORD dwStyle; | 
 |     POINT ptCurrentPos; | 
 |     RECT  rcArea; | 
 | } COMPOSITIONFORM; | 
 |  | 
 | typedef struct { | 
 |     DWORD dwSize; | 
 |     DWORD dwStyle; | 
 |     DWORD dwCount; | 
 |     DWORD dwSelection; | 
 |     DWORD dwPageStart; | 
 |     DWORD dwPageSize; | 
 |     DWORD dwOffset[1]; | 
 | } CANDIDATELIST; | 
 |  | 
 | #define STYLE_DESCRIPTION_SIZE  32 | 
 |  | 
 | typedef struct { | 
 |     DWORD dwStyle; | 
 |     CHAR  szDescription[STYLE_DESCRIPTION_SIZE]; | 
 | } STYLEBUFA; | 
 |  | 
 | typedef struct { | 
 |     DWORD dwStyle; | 
 |     WCHAR szDescription[STYLE_DESCRIPTION_SIZE]; | 
 | } STYLEBUFW; | 
 |  | 
 | typedef WORD ATOM; | 
 |  | 
 | #define IMEMENUITEM_STRING_SIZE 80 | 
 |  | 
 | typedef struct { | 
 |     UINT    cbSize; | 
 |     UINT    fType; | 
 |     UINT    fState; | 
 |     UINT    wID; | 
 |     HBITMAP hbmpChecked; | 
 |     HBITMAP hbmpUnchecked; | 
 |     DWORD   dwItemData; | 
 |     CHAR    szString[IMEMENUITEM_STRING_SIZE]; | 
 |     HBITMAP hbmpItem; | 
 | } IMEMENUITEMINFOA; | 
 |  | 
 | typedef struct { | 
 |     UINT    cbSize; | 
 |     UINT    fType; | 
 |     UINT    fState; | 
 |     UINT    wID; | 
 |     HBITMAP hbmpChecked; | 
 |     HBITMAP hbmpUnchecked; | 
 |     DWORD   dwItemData; | 
 |     WCHAR   szString[IMEMENUITEM_STRING_SIZE]; | 
 |     HBITMAP hbmpItem; | 
 | } IMEMENUITEMINFOW; | 
 |  | 
 | cpp_quote("#endif") | 
 |  | 
 | [ | 
 |     object, | 
 |     uuid(08c03412-f96b-11d0-a475-00aa006bcc59), | 
 |     pointer_default(unique) | 
 | ] | 
 | interface IEnumRegisterWordA : IUnknown | 
 | { | 
 |     HRESULT Clone( | 
 |             [out] IEnumRegisterWordA **ppEnum); | 
 |  | 
 |     HRESULT Next( | 
 |             [in]  ULONG ulCount, | 
 |             [out] REGISTERWORDA *rgRegisterword, | 
 |             [out] ULONG *pcFetched); | 
 |  | 
 |     HRESULT Reset(); | 
 |  | 
 |     HRESULT Skip( | 
 |             [in]  ULONG ulCount); | 
 | } | 
 |  | 
 | [ | 
 |     object, | 
 |     uuid(4955dd31-b159-11d0-8fcf-00aa006bcc59), | 
 |     pointer_default(unique) | 
 | ] | 
 | interface IEnumRegisterWordW : IUnknown | 
 | { | 
 |     HRESULT Clone( | 
 |             [out] IEnumRegisterWordW **ppEnum); | 
 |  | 
 |     HRESULT Next( | 
 |             [in]  ULONG ulCount, | 
 |             [out] REGISTERWORDW *rgRegisterword, | 
 |             [out] ULONG *pcFetched); | 
 |  | 
 |     HRESULT Reset(); | 
 |  | 
 |     HRESULT Skip( | 
 |             [in]  ULONG ulCount); | 
 | } | 
 |  | 
 | [ | 
 |     object, | 
 |     uuid(09b5eab0-f997-11d1-93d4-0060b067b86e), | 
 |     pointer_default(unique), | 
 |     local | 
 | ] | 
 | interface IEnumInputContext : IUnknown | 
 | { | 
 |     HRESULT Clone( | 
 |             [out] IEnumInputContext **ppEnum); | 
 |  | 
 |     HRESULT Next( | 
 |             [in]  ULONG ulCount, | 
 |             [out] HIMC *rgInputContext, | 
 |             [out] ULONG *pcFetched); | 
 |  | 
 |     HRESULT Reset(); | 
 |  | 
 |     HRESULT Skip( | 
 |             [in]  ULONG ulCount); | 
 | } | 
 |  | 
 | [ | 
 |     object, | 
 |     uuid(08c0e040-62d1-11d1-9326-0060b067b86e), | 
 |     pointer_default(unique), | 
 |     local | 
 | ] | 
 | interface IActiveIMMApp : IUnknown | 
 | { | 
 |     HRESULT AssociateContext( | 
 |             [in]  HWND hWnd, | 
 |             [in]  HIMC hIME, | 
 |             [out] HIMC *phPrev); | 
 |  | 
 |     HRESULT ConfigureIMEA( | 
 |             [in]  HKL hKL, | 
 |             [in]  HWND hwnd, | 
 |             [in]  DWORD dwMode, | 
 |             [in]  REGISTERWORDA *pData); | 
 |  | 
 |     HRESULT ConfigureIMEW( | 
 |             [in]  HKL hKL, | 
 |             [in]  HWND hWnd, | 
 |             [in]  DWORD dwMode, | 
 |             [in]  REGISTERWORDW *pData); | 
 |  | 
 |     HRESULT CreateContext( | 
 |             [out] HIMC *phIMC); | 
 |  | 
 |     HRESULT DestroyContext( | 
 |             [in]  HIMC hIME); | 
 |  | 
 |     HRESULT EnumRegisterWordA( | 
 |             [in]  HKL hKL, | 
 |             [in]  LPSTR szReading, | 
 |             [in]  DWORD dwStyle, | 
 |             [in]  LPSTR szRegister, | 
 |             [in]  LPVOID pData, | 
 |             [out] IEnumRegisterWordA **pEnum); | 
 |  | 
 |     HRESULT EnumRegisterWordW( | 
 |             [in]  HKL hKL, | 
 |             [in]  LPWSTR szReading, | 
 |             [in]  DWORD dwStyle, | 
 |             [in]  LPWSTR szRegister, | 
 |             [in]  LPVOID pData, | 
 |             [out] IEnumRegisterWordW **pEnum); | 
 |  | 
 |     HRESULT EscapeA( | 
 |             [in]  HKL hKL, | 
 |             [in]  HIMC hIMC, | 
 |             [in]  UINT uEscape, | 
 |             [in, out] LPVOID pData, | 
 |             [out] LRESULT *plResult); | 
 |  | 
 |     HRESULT EscapeW( | 
 |             [in]  HKL hKL, | 
 |             [in]  HIMC hIMC, | 
 |             [in]  UINT uEscape, | 
 |             [in, out] LPVOID pData, | 
 |             [out] LRESULT *plResult); | 
 |  | 
 |     HRESULT GetCandidateListA( | 
 |             [in]  HIMC hIMC, | 
 |             [in]  DWORD dwIndex, | 
 |             [in]  UINT uBufLen, | 
 |             [out] CANDIDATELIST *pCandList, | 
 |             [out] UINT *puCopied); | 
 |  | 
 |     HRESULT GetCandidateListW( | 
 |             [in]  HIMC hIMC, | 
 |             [in]  DWORD dwIndex, | 
 |             [in]  UINT uBufLen, | 
 |             [out] CANDIDATELIST *pCandList, | 
 |             [out] UINT *puCopied); | 
 |  | 
 |     HRESULT GetCandidateListCountA( | 
 |             [in]  HIMC hIMC, | 
 |             [out] DWORD *pdwListSize, | 
 |             [out] DWORD *pdwBufLen); | 
 |  | 
 |     HRESULT GetCandidateListCountW( | 
 |             [in]  HIMC hIMC, | 
 |             [out] DWORD *pdwListSize, | 
 |             [out] DWORD *pdwBufLen); | 
 |  | 
 |     HRESULT GetCandidateWindow( | 
 |             [in]  HIMC hIMC, | 
 |             [in]  DWORD dwIndex, | 
 |             [out] CANDIDATEFORM *pCandidate); | 
 |  | 
 |     HRESULT GetCompositionFontA( | 
 |             [in]  HIMC hIMC, | 
 |             [out] LOGFONTA *plf); | 
 |  | 
 |     HRESULT GetCompositionFontW( | 
 |             [in]  HIMC hIMC, | 
 |             [out] LOGFONTW *plf); | 
 |  | 
 |     HRESULT GetCompositionStringA( | 
 |             [in]  HIMC hIMC, | 
 |             [in]  DWORD dwIndex, | 
 |             [in]  DWORD dwBufLen, | 
 |             [out] LONG *plCopied, | 
 |             [out] LPVOID pBuf); | 
 |  | 
 |     HRESULT GetCompositionStringW( | 
 |             [in]  HIMC hIMC, | 
 |             [in]  DWORD dwIndex, | 
 |             [in]  DWORD dwBufLen, | 
 |             [out] LONG *plCopied, | 
 |             [out] LPVOID pBuf); | 
 |  | 
 |     HRESULT GetCompositionWindow( | 
 |             [in]  HIMC hIMC, | 
 |             [out] COMPOSITIONFORM *pCompForm); | 
 |  | 
 |     HRESULT GetContext( | 
 |             [in]  HWND hwnd, | 
 |             [out] HIMC *phIMC); | 
 |  | 
 |     HRESULT GetConversionListA( | 
 |             [in]  HKL hKL, | 
 |             [in]  HIMC hIMC, | 
 |             [in]  LPSTR pSrc, | 
 |             [in]  UINT uBufLen, | 
 |             [in]  UINT uFlag, | 
 |             [out] CANDIDATELIST *pDst, | 
 |             [out] UINT *puCopied); | 
 |  | 
 |     HRESULT GetConversionListW( | 
 |             [in]  HKL hKL, | 
 |             [in]  HIMC hIMC, | 
 |             [in]  LPWSTR pSrc, | 
 |             [in]  UINT uBufLen, | 
 |             [in]  UINT uFlag, | 
 |             [out] CANDIDATELIST *pDst, | 
 |             [out] UINT *puCopied); | 
 |  | 
 |     HRESULT GetConversionStatus( | 
 |             [in] HIMC hIMC, | 
 |             [out] DWORD *pfdwConversion, | 
 |             [out] DWORD *pfdwSentence); | 
 |  | 
 |     HRESULT GetDefaultIMEWnd( | 
 |             [in] HWND hWnd, | 
 |             [out] HWND *phDefWnd); | 
 |  | 
 |     HRESULT GetDescriptionA( | 
 |             [in]  HKL hKL, | 
 |             [in]  UINT uBufLen, | 
 |             [out] LPSTR szDescription, | 
 |             [out] UINT *puCopied); | 
 |  | 
 |     HRESULT GetDescriptionW( | 
 |             [in]  HKL hKL, | 
 |             [in]  UINT uBufLen, | 
 |             [out] LPWSTR szDescription, | 
 |             [out] UINT *puCopied); | 
 |  | 
 |     HRESULT GetGuideLineA( | 
 |             [in]  HIMC hIMC, | 
 |             [in]  DWORD dwIndex, | 
 |             [in]  DWORD dwBufLen, | 
 |             [out] LPSTR pBuf, | 
 |             [out] DWORD *pdwResult); | 
 |  | 
 |     HRESULT GetGuideLineW( | 
 |             [in]  HIMC hIMC, | 
 |             [in]  DWORD dwIndex, | 
 |             [in]  DWORD dwBufLen, | 
 |             [out] LPWSTR pBuf, | 
 |             [out] DWORD *pdwResult); | 
 |  | 
 |     HRESULT GetIMEFileNameA( | 
 |             [in]  HKL hKL, | 
 |             [in]  UINT uBufLen, | 
 |             [out] LPSTR szFileName, | 
 |             [out] UINT *puCopied); | 
 |  | 
 |     HRESULT GetIMEFileNameW( | 
 |             [in]  HKL hKL, | 
 |             [in]  UINT uBufLen, | 
 |             [out] LPWSTR szFileName, | 
 |             [out] UINT *puCopied); | 
 |  | 
 |     HRESULT GetOpenStatus( | 
 |             [in]  HIMC hIMC); | 
 |  | 
 |     HRESULT GetProperty( | 
 |             [in]  HKL hKL, | 
 |             [in]  DWORD fdwIndex, | 
 |             [out] DWORD *pdwProperty); | 
 |  | 
 |     HRESULT GetRegisterWordStyleA( | 
 |             [in]  HKL hKL, | 
 |             [in]  UINT nItem, | 
 |             [out] STYLEBUFA *pStyleBuf, | 
 |             [out] UINT *puCopied); | 
 |  | 
 |     HRESULT GetRegisterWordStyleW( | 
 |             [in]  HKL hKL, | 
 |             [in]  UINT nItem, | 
 |             [out] STYLEBUFW *pStyleBuf, | 
 |             [out] UINT *puCopied); | 
 |  | 
 |     HRESULT GetStatusWindowPos( | 
 |             [in]  HIMC hIMC, | 
 |             [out] POINT *pptPos); | 
 |  | 
 |     HRESULT GetVirtualKey( | 
 |             [in]  HWND hWnd, | 
 |             [out] UINT *puVirtualKey); | 
 |  | 
 |     HRESULT InstallIMEA( | 
 |             [in]  LPSTR szIMEFileName, | 
 |             [in]  LPSTR szLayoutText, | 
 |             [out] HKL *phKL); | 
 |  | 
 |     HRESULT InstallIMEW( | 
 |             [in]  LPWSTR szIMEFileName, | 
 |             [in]  LPWSTR szLayoutText, | 
 |             [out] HKL *phKL); | 
 |  | 
 |     HRESULT IsIME( | 
 |             [in]  HKL hKL); | 
 |  | 
 |     HRESULT IsUIMessageA( | 
 |             [in]  HWND hWndIME, | 
 |             [in]  UINT msg, | 
 |             [in]  WPARAM wParam, | 
 |             [in]  LPARAM lParam); | 
 |  | 
 |     HRESULT IsUIMessageW( | 
 |             [in]  HWND hWndIME, | 
 |             [in]  UINT msg, | 
 |             [in]  WPARAM wParam, | 
 |             [in]  LPARAM lParam); | 
 |  | 
 |     HRESULT NotifyIME( | 
 |             [in]  HIMC hIMC, | 
 |             [in]  DWORD dwAction, | 
 |             [in]  DWORD dwIndex, | 
 |             [in]  DWORD dwValue); | 
 |  | 
 |     HRESULT RegisterWordA( | 
 |             [in]  HKL hKL, | 
 |             [in]  LPSTR szReading, | 
 |             [in]  DWORD dwStyle, | 
 |             [in]  LPSTR szRegister); | 
 |  | 
 |     HRESULT RegisterWordW( | 
 |             [in]  HKL hKL, | 
 |             [in]  LPWSTR szReading, | 
 |             [in]  DWORD dwStyle, | 
 |             [in]  LPWSTR szRegister); | 
 |  | 
 |     HRESULT ReleaseContext( | 
 |             [in]  HWND hWnd, | 
 |             [in]  HIMC hIMC); | 
 |  | 
 |     HRESULT SetCandidateWindow( | 
 |             [in]  HIMC hIMC, | 
 |             [in]  CANDIDATEFORM *pCandidate); | 
 |  | 
 |     HRESULT SetCompositionFontA( | 
 |             [in]  HIMC hIMC, | 
 |             [in]  LOGFONTA *plf); | 
 |  | 
 |     HRESULT SetCompositionFontW( | 
 |             [in]  HIMC hIMC, | 
 |             [in]  LOGFONTW *plf); | 
 |  | 
 |     HRESULT SetCompositionStringA( | 
 |             [in]  HIMC hIMC, | 
 |             [in]  DWORD dwIndex, | 
 |             [in]  LPVOID pComp, | 
 |             [in]  DWORD dwCompLen, | 
 |             [in]  LPVOID pRead, | 
 |             [in]  DWORD dwReadLen); | 
 |  | 
 |     HRESULT SetCompositionStringW( | 
 |             [in]  HIMC hIMC, | 
 |             [in]  DWORD dwIndex, | 
 |             [in]  LPVOID pComp, | 
 |             [in]  DWORD dwCompLen, | 
 |             [in]  LPVOID pRead, | 
 |             [in]  DWORD dwReadLen); | 
 |  | 
 |     HRESULT SetCompositionWindow( | 
 |             [in]  HIMC hIMC, | 
 |             [in]  COMPOSITIONFORM *pCompForm); | 
 |  | 
 |     HRESULT SetConversionStatus( | 
 |             [in]  HIMC hIMC, | 
 |             [in]  DWORD fdwConversion, | 
 |             [in]  DWORD fdwSentence); | 
 |  | 
 |     HRESULT SetOpenStatus( | 
 |             [in]  HIMC hIMC, | 
 |             [in]  BOOL fOpen); | 
 |  | 
 |     HRESULT SetStatusWindowPos( | 
 |             [in]  HIMC hIMC, | 
 |             [in]  POINT *pptPos); | 
 |  | 
 |     HRESULT SimulateHotKey( | 
 |             [in]  HWND hwnd, | 
 |             [in]  DWORD dwHotKeyID); | 
 |  | 
 |     HRESULT UnregisterWordA( | 
 |             [in]  HKL hKL, | 
 |             [in]  LPSTR szReading, | 
 |             [in]  DWORD dwStyle, | 
 |             [in]  LPSTR szUnregister); | 
 |  | 
 |     HRESULT UnregisterWordW( | 
 |             [in]  HKL hKL, | 
 |             [in]  LPWSTR szReading, | 
 |             [in]  DWORD dwStyle, | 
 |             [in]  LPWSTR szUnregister); | 
 |  | 
 |     HRESULT Activate( | 
 |             [in]  BOOL fRestoreLayout); | 
 |  | 
 |     HRESULT Deactivate(); | 
 |  | 
 |     HRESULT OnDefWindowProc( | 
 |             [in]  HWND hWnd, | 
 |             [in]  UINT Msg, | 
 |             [in]  WPARAM wParam, | 
 |             [in]  LPARAM lParam, | 
 |             [out] LRESULT *plResult); | 
 |  | 
 |     HRESULT FilterClientWindows( | 
 |             [in]  ATOM *aaClassList, | 
 |             [in]  UINT uSize); | 
 |  | 
 |     HRESULT GetCodePageA( | 
 |             [in]  HKL hKL, | 
 |             [out] UINT *uCodePage); | 
 |  | 
 |     HRESULT GetLangId( | 
 |             [in]  HKL hKL, | 
 |             [out] LANGID *plid); | 
 |  | 
 |     HRESULT AssociateContextEx( | 
 |             [in]  HWND hWnd, | 
 |             [in]  HIMC hIMC, | 
 |             [in]  DWORD dwFlags); | 
 |  | 
 |     HRESULT DisableIME( | 
 |             [in]  DWORD idThread); | 
 |  | 
 |     HRESULT GetImeMenuItemsA( | 
 |             [in]  HIMC hIMC, | 
 |             [in]  DWORD dwFlags, | 
 |             [in]  DWORD dwType, | 
 |             [in]  IMEMENUITEMINFOA *pImeParentMenu, | 
 |             [out] IMEMENUITEMINFOA *pImeMenu, | 
 |             [in]  DWORD dwSize, | 
 |             [out] DWORD *pdwResult); | 
 |  | 
 |     HRESULT GetImeMenuItemsW( | 
 |             [in]  HIMC hIMC, | 
 |             [in]  DWORD dwFlags, | 
 |             [in]  DWORD dwType, | 
 |             [in]  IMEMENUITEMINFOW *pImeParentMenu, | 
 |             [out] IMEMENUITEMINFOW *pImeMenu, | 
 |             [in]  DWORD dwSize, | 
 |             [out] DWORD *pdwResult); | 
 |  | 
 |     HRESULT EnumInputContext( | 
 |             [in]  DWORD idThread, | 
 |             [out] IEnumInputContext **ppEnum); | 
 | } | 
 |  | 
 | [ | 
 |     uuid(4955dd33-b159-11d0-8fcf-00aa006bcc59) | 
 | ] | 
 | coclass CActiveIMM | 
 | { | 
 |     [default] interface IActiveIMMApp; | 
 |     /* interface IActiveIMMIME; */ | 
 |     /* interface IActiveIMMRegistrar; */ | 
 |     /* interface IActiveIMMMessagePumpOwner; */ | 
 | } |