1/* 2 * Copyright 2007 Jacek Caban for CodeWeavers 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19#ifndef DO_NO_IMPORTS 20import "unknwn.idl"; 21#endif 22 23cpp_quote("#include <imm.h>") 24#ifdef _MSC_VER 25cpp_quote("DEFINE_GUID(CLSID_CActiveIMM, 0x4955dd33, 0xb159, 0x11d0, 0x8f,0xcf, 0x00,0xaa,0x00,0x6b,0xcc,0x59);") 26#endif 27cpp_quote("#if 0") 28 29typedef struct { 30 LPSTR lpReading; 31 LPSTR lpWord; 32} REGISTERWORDA; 33 34typedef struct { 35 LPWSTR lpReading; 36 LPWSTR lpWord; 37} REGISTERWORDW; 38 39#define LF_FACESIZE 32 40 41typedef struct { 42 LONG lfHeight; 43 LONG lfWidth; 44 LONG lfEscapement; 45 LONG lfOrientation; 46 LONG lfWeight; 47 BYTE lfItalic; 48 BYTE lfUnderline; 49 BYTE lfStrikeOut; 50 BYTE lfCharSet; 51 BYTE lfOutPrecision; 52 BYTE lfClipPrecision; 53 BYTE lfQuality; 54 BYTE lfPitchAndFamily; 55 CHAR lfFaceName[LF_FACESIZE]; 56} LOGFONTA; 57 58typedef struct { 59 LONG lfHeight; 60 LONG lfWidth; 61 LONG lfEscapement; 62 LONG lfOrientation; 63 LONG lfWeight; 64 BYTE lfItalic; 65 BYTE lfUnderline; 66 BYTE lfStrikeOut; 67 BYTE lfCharSet; 68 BYTE lfOutPrecision; 69 BYTE lfClipPrecision; 70 BYTE lfQuality; 71 BYTE lfPitchAndFamily; 72 WCHAR lfFaceName[LF_FACESIZE]; 73} LOGFONTW; 74 75typedef DWORD HIMC; 76typedef DWORD HIMCC; 77 78typedef struct { 79 DWORD dwIndex; 80 DWORD dwStyle; 81 POINT ptCurrentPos; 82 RECT rcArea; 83} CANDIDATEFORM; 84 85typedef struct { 86 DWORD dwStyle; 87 POINT ptCurrentPos; 88 RECT rcArea; 89} COMPOSITIONFORM; 90 91typedef struct { 92 DWORD dwSize; 93 DWORD dwStyle; 94 DWORD dwCount; 95 DWORD dwSelection; 96 DWORD dwPageStart; 97 DWORD dwPageSize; 98 DWORD dwOffset[1]; 99} CANDIDATELIST; 100 101#define STYLE_DESCRIPTION_SIZE 32 102 103typedef struct { 104 DWORD dwStyle; 105 CHAR szDescription[STYLE_DESCRIPTION_SIZE]; 106} STYLEBUFA; 107 108typedef struct { 109 DWORD dwStyle; 110 WCHAR szDescription[STYLE_DESCRIPTION_SIZE]; 111} STYLEBUFW; 112 113typedef WORD ATOM; 114 115#define IMEMENUITEM_STRING_SIZE 80 116 117typedef struct { 118 UINT cbSize; 119 UINT fType; 120 UINT fState; 121 UINT wID; 122 HBITMAP hbmpChecked; 123 HBITMAP hbmpUnchecked; 124 DWORD dwItemData; 125 CHAR szString[IMEMENUITEM_STRING_SIZE]; 126 HBITMAP hbmpItem; 127} IMEMENUITEMINFOA; 128 129typedef struct { 130 UINT cbSize; 131 UINT fType; 132 UINT fState; 133 UINT wID; 134 HBITMAP hbmpChecked; 135 HBITMAP hbmpUnchecked; 136 DWORD dwItemData; 137 WCHAR szString[IMEMENUITEM_STRING_SIZE]; 138 HBITMAP hbmpItem; 139} IMEMENUITEMINFOW; 140 141cpp_quote("#endif") 142 143[ 144 object, 145 uuid(08c03412-f96b-11d0-a475-00aa006bcc59), 146 pointer_default(unique) 147] 148interface IEnumRegisterWordA : IUnknown 149{ 150 HRESULT Clone( 151 [out] IEnumRegisterWordA **ppEnum); 152 153 HRESULT Next( 154 [in] ULONG ulCount, 155 [out] REGISTERWORDA *rgRegisterword, 156 [out] ULONG *pcFetched); 157 158 HRESULT Reset(); 159 160 HRESULT Skip( 161 [in] ULONG ulCount); 162} 163 164[ 165 object, 166 uuid(4955dd31-b159-11d0-8fcf-00aa006bcc59), 167 pointer_default(unique) 168] 169interface IEnumRegisterWordW : IUnknown 170{ 171 HRESULT Clone( 172 [out] IEnumRegisterWordW **ppEnum); 173 174 HRESULT Next( 175 [in] ULONG ulCount, 176 [out] REGISTERWORDW *rgRegisterword, 177 [out] ULONG *pcFetched); 178 179 HRESULT Reset(); 180 181 HRESULT Skip( 182 [in] ULONG ulCount); 183} 184 185[ 186 object, 187 uuid(09b5eab0-f997-11d1-93d4-0060b067b86e), 188 pointer_default(unique), 189 local 190] 191interface IEnumInputContext : IUnknown 192{ 193 HRESULT Clone( 194 [out] IEnumInputContext **ppEnum); 195 196 HRESULT Next( 197 [in] ULONG ulCount, 198 [out] HIMC *rgInputContext, 199 [out] ULONG *pcFetched); 200 201 HRESULT Reset(); 202 203 HRESULT Skip( 204 [in] ULONG ulCount); 205} 206 207[ 208 object, 209 uuid(08c0e040-62d1-11d1-9326-0060b067b86e), 210 pointer_default(unique), 211 local 212] 213interface IActiveIMMApp : IUnknown 214{ 215 HRESULT AssociateContext( 216 [in] HWND hWnd, 217 [in] HIMC hIME, 218 [out] HIMC *phPrev); 219 220 HRESULT ConfigureIMEA( 221 [in] HKL hKL, 222 [in] HWND hwnd, 223 [in] DWORD dwMode, 224 [in] REGISTERWORDA *pData); 225 226 HRESULT ConfigureIMEW( 227 [in] HKL hKL, 228 [in] HWND hWnd, 229 [in] DWORD dwMode, 230 [in] REGISTERWORDW *pData); 231 232 HRESULT CreateContext( 233 [out] HIMC *phIMC); 234 235 HRESULT DestroyContext( 236 [in] HIMC hIME); 237 238 HRESULT EnumRegisterWordA( 239 [in] HKL hKL, 240 [in] LPSTR szReading, 241 [in] DWORD dwStyle, 242 [in] LPSTR szRegister, 243 [in] LPVOID pData, 244 [out] IEnumRegisterWordA **pEnum); 245 246 HRESULT EnumRegisterWordW( 247 [in] HKL hKL, 248 [in] LPWSTR szReading, 249 [in] DWORD dwStyle, 250 [in] LPWSTR szRegister, 251 [in] LPVOID pData, 252 [out] IEnumRegisterWordW **pEnum); 253 254 HRESULT EscapeA( 255 [in] HKL hKL, 256 [in] HIMC hIMC, 257 [in] UINT uEscape, 258 [in, out] LPVOID pData, 259 [out] LRESULT *plResult); 260 261 HRESULT EscapeW( 262 [in] HKL hKL, 263 [in] HIMC hIMC, 264 [in] UINT uEscape, 265 [in, out] LPVOID pData, 266 [out] LRESULT *plResult); 267 268 HRESULT GetCandidateListA( 269 [in] HIMC hIMC, 270 [in] DWORD dwIndex, 271 [in] UINT uBufLen, 272 [out] CANDIDATELIST *pCandList, 273 [out] UINT *puCopied); 274 275 HRESULT GetCandidateListW( 276 [in] HIMC hIMC, 277 [in] DWORD dwIndex, 278 [in] UINT uBufLen, 279 [out] CANDIDATELIST *pCandList, 280 [out] UINT *puCopied); 281 282 HRESULT GetCandidateListCountA( 283 [in] HIMC hIMC, 284 [out] DWORD *pdwListSize, 285 [out] DWORD *pdwBufLen); 286 287 HRESULT GetCandidateListCountW( 288 [in] HIMC hIMC, 289 [out] DWORD *pdwListSize, 290 [out] DWORD *pdwBufLen); 291 292 HRESULT GetCandidateWindow( 293 [in] HIMC hIMC, 294 [in] DWORD dwIndex, 295 [out] CANDIDATEFORM *pCandidate); 296 297 HRESULT GetCompositionFontA( 298 [in] HIMC hIMC, 299 [out] LOGFONTA *plf); 300 301 HRESULT GetCompositionFontW( 302 [in] HIMC hIMC, 303 [out] LOGFONTW *plf); 304 305 HRESULT GetCompositionStringA( 306 [in] HIMC hIMC, 307 [in] DWORD dwIndex, 308 [in] DWORD dwBufLen, 309 [out] LONG *plCopied, 310 [out] LPVOID pBuf); 311 312 HRESULT GetCompositionStringW( 313 [in] HIMC hIMC, 314 [in] DWORD dwIndex, 315 [in] DWORD dwBufLen, 316 [out] LONG *plCopied, 317 [out] LPVOID pBuf); 318 319 HRESULT GetCompositionWindow( 320 [in] HIMC hIMC, 321 [out] COMPOSITIONFORM *pCompForm); 322 323 HRESULT GetContext( 324 [in] HWND hwnd, 325 [out] HIMC *phIMC); 326 327 HRESULT GetConversionListA( 328 [in] HKL hKL, 329 [in] HIMC hIMC, 330 [in] LPSTR pSrc, 331 [in] UINT uBufLen, 332 [in] UINT uFlag, 333 [out] CANDIDATELIST *pDst, 334 [out] UINT *puCopied); 335 336 HRESULT GetConversionListW( 337 [in] HKL hKL, 338 [in] HIMC hIMC, 339 [in] LPWSTR pSrc, 340 [in] UINT uBufLen, 341 [in] UINT uFlag, 342 [out] CANDIDATELIST *pDst, 343 [out] UINT *puCopied); 344 345 HRESULT GetConversionStatus( 346 [in] HIMC hIMC, 347 [out] DWORD *pfdwConversion, 348 [out] DWORD *pfdwSentence); 349 350 HRESULT GetDefaultIMEWnd( 351 [in] HWND hWnd, 352 [out] HWND *phDefWnd); 353 354 HRESULT GetDescriptionA( 355 [in] HKL hKL, 356 [in] UINT uBufLen, 357 [out] LPSTR szDescription, 358 [out] UINT *puCopied); 359 360 HRESULT GetDescriptionW( 361 [in] HKL hKL, 362 [in] UINT uBufLen, 363 [out] LPWSTR szDescription, 364 [out] UINT *puCopied); 365 366 HRESULT GetGuideLineA( 367 [in] HIMC hIMC, 368 [in] DWORD dwIndex, 369 [in] DWORD dwBufLen, 370 [out] LPSTR pBuf, 371 [out] DWORD *pdwResult); 372 373 HRESULT GetGuideLineW( 374 [in] HIMC hIMC, 375 [in] DWORD dwIndex, 376 [in] DWORD dwBufLen, 377 [out] LPWSTR pBuf, 378 [out] DWORD *pdwResult); 379 380 HRESULT GetIMEFileNameA( 381 [in] HKL hKL, 382 [in] UINT uBufLen, 383 [out] LPSTR szFileName, 384 [out] UINT *puCopied); 385 386 HRESULT GetIMEFileNameW( 387 [in] HKL hKL, 388 [in] UINT uBufLen, 389 [out] LPWSTR szFileName, 390 [out] UINT *puCopied); 391 392 HRESULT GetOpenStatus( 393 [in] HIMC hIMC); 394 395 HRESULT GetProperty( 396 [in] HKL hKL, 397 [in] DWORD fdwIndex, 398 [out] DWORD *pdwProperty); 399 400 HRESULT GetRegisterWordStyleA( 401 [in] HKL hKL, 402 [in] UINT nItem, 403 [out] STYLEBUFA *pStyleBuf, 404 [out] UINT *puCopied); 405 406 HRESULT GetRegisterWordStyleW( 407 [in] HKL hKL, 408 [in] UINT nItem, 409 [out] STYLEBUFW *pStyleBuf, 410 [out] UINT *puCopied); 411 412 HRESULT GetStatusWindowPos( 413 [in] HIMC hIMC, 414 [out] POINT *pptPos); 415 416 HRESULT GetVirtualKey( 417 [in] HWND hWnd, 418 [out] UINT *puVirtualKey); 419 420 HRESULT InstallIMEA( 421 [in] LPSTR szIMEFileName, 422 [in] LPSTR szLayoutText, 423 [out] HKL *phKL); 424 425 HRESULT InstallIMEW( 426 [in] LPWSTR szIMEFileName, 427 [in] LPWSTR szLayoutText, 428 [out] HKL *phKL); 429 430 HRESULT IsIME( 431 [in] HKL hKL); 432 433 HRESULT IsUIMessageA( 434 [in] HWND hWndIME, 435 [in] UINT msg, 436 [in] WPARAM wParam, 437 [in] LPARAM lParam); 438 439 HRESULT IsUIMessageW( 440 [in] HWND hWndIME, 441 [in] UINT msg, 442 [in] WPARAM wParam, 443 [in] LPARAM lParam); 444 445 HRESULT NotifyIME( 446 [in] HIMC hIMC, 447 [in] DWORD dwAction, 448 [in] DWORD dwIndex, 449 [in] DWORD dwValue); 450 451 HRESULT RegisterWordA( 452 [in] HKL hKL, 453 [in] LPSTR szReading, 454 [in] DWORD dwStyle, 455 [in] LPSTR szRegister); 456 457 HRESULT RegisterWordW( 458 [in] HKL hKL, 459 [in] LPWSTR szReading, 460 [in] DWORD dwStyle, 461 [in] LPWSTR szRegister); 462 463 HRESULT ReleaseContext( 464 [in] HWND hWnd, 465 [in] HIMC hIMC); 466 467 HRESULT SetCandidateWindow( 468 [in] HIMC hIMC, 469 [in] CANDIDATEFORM *pCandidate); 470 471 HRESULT SetCompositionFontA( 472 [in] HIMC hIMC, 473 [in] LOGFONTA *plf); 474 475 HRESULT SetCompositionFontW( 476 [in] HIMC hIMC, 477 [in] LOGFONTW *plf); 478 479 HRESULT SetCompositionStringA( 480 [in] HIMC hIMC, 481 [in] DWORD dwIndex, 482 [in] LPVOID pComp, 483 [in] DWORD dwCompLen, 484 [in] LPVOID pRead, 485 [in] DWORD dwReadLen); 486 487 HRESULT SetCompositionStringW( 488 [in] HIMC hIMC, 489 [in] DWORD dwIndex, 490 [in] LPVOID pComp, 491 [in] DWORD dwCompLen, 492 [in] LPVOID pRead, 493 [in] DWORD dwReadLen); 494 495 HRESULT SetCompositionWindow( 496 [in] HIMC hIMC, 497 [in] COMPOSITIONFORM *pCompForm); 498 499 HRESULT SetConversionStatus( 500 [in] HIMC hIMC, 501 [in] DWORD fdwConversion, 502 [in] DWORD fdwSentence); 503 504 HRESULT SetOpenStatus( 505 [in] HIMC hIMC, 506 [in] BOOL fOpen); 507 508 HRESULT SetStatusWindowPos( 509 [in] HIMC hIMC, 510 [in] POINT *pptPos); 511 512 HRESULT SimulateHotKey( 513 [in] HWND hwnd, 514 [in] DWORD dwHotKeyID); 515 516 HRESULT UnregisterWordA( 517 [in] HKL hKL, 518 [in] LPSTR szReading, 519 [in] DWORD dwStyle, 520 [in] LPSTR szUnregister); 521 522 HRESULT UnregisterWordW( 523 [in] HKL hKL, 524 [in] LPWSTR szReading, 525 [in] DWORD dwStyle, 526 [in] LPWSTR szUnregister); 527 528 HRESULT Activate( 529 [in] BOOL fRestoreLayout); 530 531 HRESULT Deactivate(); 532 533 HRESULT OnDefWindowProc( 534 [in] HWND hWnd, 535 [in] UINT Msg, 536 [in] WPARAM wParam, 537 [in] LPARAM lParam, 538 [out] LRESULT *plResult); 539 540 HRESULT FilterClientWindows( 541 [in] ATOM *aaClassList, 542 [in] UINT uSize); 543 544 HRESULT GetCodePageA( 545 [in] HKL hKL, 546 [out] UINT *uCodePage); 547 548 HRESULT GetLangId( 549 [in] HKL hKL, 550 [out] LANGID *plid); 551 552 HRESULT AssociateContextEx( 553 [in] HWND hWnd, 554 [in] HIMC hIMC, 555 [in] DWORD dwFlags); 556 557 HRESULT DisableIME( 558 [in] DWORD idThread); 559 560 HRESULT GetImeMenuItemsA( 561 [in] HIMC hIMC, 562 [in] DWORD dwFlags, 563 [in] DWORD dwType, 564 [in] IMEMENUITEMINFOA *pImeParentMenu, 565 [out] IMEMENUITEMINFOA *pImeMenu, 566 [in] DWORD dwSize, 567 [out] DWORD *pdwResult); 568 569 HRESULT GetImeMenuItemsW( 570 [in] HIMC hIMC, 571 [in] DWORD dwFlags, 572 [in] DWORD dwType, 573 [in] IMEMENUITEMINFOW *pImeParentMenu, 574 [out] IMEMENUITEMINFOW *pImeMenu, 575 [in] DWORD dwSize, 576 [out] DWORD *pdwResult); 577 578 HRESULT EnumInputContext( 579 [in] DWORD idThread, 580 [out] IEnumInputContext **ppEnum); 581} 582 583[ 584 object, 585 uuid(b5cf2cfa-8aeb-11d1-9364-0060b067b86e), 586 pointer_default(unique) 587] 588interface IActiveIMMMessagePumpOwner : IUnknown 589{ 590 HRESULT Start(); 591 HRESULT End(); 592 HRESULT OnTranslateMessage([in] const MSG *msg); 593 HRESULT Pause([out] DWORD *cookie); 594 HRESULT Resume([in] DWORD cookie); 595} 596 597[ 598 uuid(4955dd33-b159-11d0-8fcf-00aa006bcc59) 599] 600coclass CActiveIMM 601{ 602 [default] interface IActiveIMMApp; 603 /* interface IActiveIMMIME; */ 604 /* interface IActiveIMMRegistrar; */ 605 interface IActiveIMMMessagePumpOwner; 606} 607