1/* 2 * Copyright (C) 2004 Mike McCormack 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 23interface IStream; 24 25cpp_quote("#define CPIOD_PEEK 0x40000000") 26cpp_quote("#define CPIOD_FORCE_PROMPT 0x80000000") 27 28[ 29 uuid(275c23e0-3747-11d0-9fea-00aa003f8646), 30 lcid(0x0000), 31 version(0.2) 32] 33library MultiLanguage 34{ 35 importlib("stdole2.tlb"); 36 37[ 38 object, 39 uuid(359f3443-bd4a-11d0-b188-00aa0038c969), 40 pointer_default(unique) 41] 42interface IMLangCodePages : IUnknown 43{ 44 HRESULT GetCharCodePages( 45 [in] WCHAR chSrc, 46 [out] DWORD *pdwCodePages); 47 HRESULT GetStrCodePages( 48 [in, size_is(cchSrc)] const WCHAR *pszSrc, 49 [in] LONG cchSrc, 50 [in] DWORD dwPriorityCodePages, 51 [out] DWORD *pdwCodePages, 52 [out] LONG *pcchCodePages); 53 HRESULT CodePageToCodePages( 54 [in] UINT uCodePage, 55 [out] DWORD *pdwCodePages); 56 HRESULT CodePagesToCodePage( 57 [in] DWORD dwCodePages, 58 [in] UINT uDefaultCodePage, 59 [out] UINT *puCodePage); 60} 61 62[ 63 object, 64 uuid(359f3441-bd4a-11d0-b188-00aa0038c969), 65 pointer_default(unique) 66] 67interface IMLangFontLink : IMLangCodePages 68{ 69 HRESULT GetFontCodePages( 70 [in] HDC hDC, 71 [in] HFONT hFont, 72 [out] DWORD *pdwCodePages ); 73 74 HRESULT MapFont( 75 [in] HDC hDC, 76 [in] DWORD dwCodePages, 77 [in] HFONT hSrcFont, 78 [out] HFONT *phDestFont); 79 80 HRESULT ReleaseFont( 81 [in] HFONT hFont); 82 83 HRESULT ResetFontMapping(); 84} 85 86[ 87 object, 88 uuid(ae5f1430-388b-11d2-8380-00c04f8f5da1), 89 pointer_default(unique) 90] 91interface IEnumScript : IUnknown 92{ 93 const USHORT MAX_SCRIPT_NAME = 48; 94 const USHORT MAX_MIMEFACE_NAME = 32; 95 96 typedef BYTE SCRIPT_ID; 97 typedef __int64 SCRIPT_IDS; 98 99 typedef enum tagSCRIPTCONTF 100 { 101 sidDefault = 0, 102 sidMerge = sidDefault + 1, 103 sidAsciiSym = sidMerge + 1, 104 sidAsciiLatin = sidAsciiSym + 1, 105 sidLatin = sidAsciiLatin + 1, 106 sidGreek = sidLatin + 1, 107 sidCyrillic = sidGreek + 1, 108 sidArmenian = sidCyrillic + 1, 109 sidHebrew = sidArmenian + 1, 110 sidArabic = sidHebrew + 1, 111 sidDevanagari = sidArabic + 1, 112 sidBengali = sidDevanagari + 1, 113 sidGurmukhi = sidBengali + 1, 114 sidGujarati = sidGurmukhi + 1, 115 sidOriya = sidGujarati + 1, 116 sidTamil = sidOriya + 1, 117 sidTelugu = sidTamil + 1, 118 sidKannada = sidTelugu + 1, 119 sidMalayalam = sidKannada + 1, 120 sidThai = sidMalayalam + 1, 121 sidLao = sidThai + 1, 122 sidTibetan = sidLao + 1, 123 sidGeorgian = sidTibetan + 1, 124 sidHangul = sidGeorgian + 1, 125 sidKana = sidHangul + 1, 126 sidBopomofo = sidKana + 1, 127 sidHan = sidBopomofo + 1, 128 sidEthiopic = sidHan + 1, 129 sidCanSyllabic = sidEthiopic + 1, 130 sidCherokee = sidCanSyllabic + 1, 131 sidYi = sidCherokee + 1, 132 sidBraille = sidYi + 1, 133 sidRunic = sidBraille + 1, 134 sidOgham = sidRunic + 1, 135 sidSinhala = sidOgham + 1, 136 sidSyriac = sidSinhala + 1, 137 sidBurmese = sidSyriac + 1, 138 sidKhmer = sidBurmese + 1, 139 sidThaana = sidKhmer + 1, 140 sidMongolian = sidThaana + 1, 141 sidUserDefined = sidMongolian + 1, 142 sidLim = sidUserDefined + 1, 143 sidFEFirst = sidHangul, 144 sidFELast = sidHan 145 } SCRIPTCONTF; 146 147 typedef enum tagSCRIPTFONTCONTF 148 { 149 SCRIPTCONTF_FIXED_FONT = 0x1, 150 SCRIPTCONTF_PROPORTIONAL_FONT = 0x2, 151 SCRIPTCONTF_SCRIPT_USER = 0x10000, 152 SCRIPTCONTF_SCRIPT_HIDE = 0x20000, 153 SCRIPTCONTF_SCRIPT_SYSTEM = 0x40000 154 } SCRIPTFONTCONTF; 155 156 typedef struct tagSCRIPFONTINFO 157 { 158 SCRIPT_IDS scripts; 159 WCHAR wszFont[MAX_MIMEFACE_NAME]; 160 } SCRIPTFONTINFO, *PSCRIPTFONTINFO; 161 162 typedef struct tagSCRIPTINFO { 163 SCRIPT_ID ScriptId; 164 UINT uiCodePage; 165 WCHAR wszDescription[MAX_SCRIPT_NAME]; 166 WCHAR wszFixedWidthFont[MAX_MIMEFACE_NAME]; 167 WCHAR wszProportionalFont[MAX_MIMEFACE_NAME]; 168 } SCRIPTINFO, *PSCRIPTINFO; 169 170 HRESULT Clone( 171 [out] IEnumScript **ppEnum); 172 173 HRESULT Next( 174 [in] ULONG celt, 175 [out] PSCRIPTINFO rgelt, 176 [out] ULONG *pceltFetched); 177 178 HRESULT Reset(); 179 180 HRESULT Skip( 181 [in] ULONG celt); 182} 183 184[ 185 object, 186 uuid(dccfc162-2b38-11d2-b7ec-00c04f8f5d9a), 187 pointer_default(unique) 188] 189interface IMLangFontLink2 : IMLangCodePages 190{ 191 typedef struct tagUNICODERANGE 192 { 193 WCHAR wcFrom; 194 WCHAR wcTo; 195 } UNICODERANGE; 196 197 typedef [unique] IMLangFontLink2 *PMLANGFONTLINK2; 198 199 HRESULT GetFontCodePages( 200 [in] HDC hDC, 201 [in] HFONT hFont, 202 [out] DWORD *pdwCodePages ); 203 204 HRESULT ReleaseFont( 205 [in] HFONT hFont); 206 207 HRESULT ResetFontMapping(); 208 209 HRESULT MapFont( 210 [in] HDC hDC, 211 [in] DWORD dwCodePages, 212 [in] WCHAR chSrc, 213 [out] HFONT *pFont); 214 215 HRESULT GetFontUnicodeRanges( 216 [in] HDC hDC, 217 [in,out] UINT *puiRanges, 218 [out] UNICODERANGE* pUranges); 219 220 HRESULT GetScriptFontInfo( 221 [in] SCRIPT_ID sid, 222 [in] DWORD dwFlags, 223 [in,out] UINT *puiFonts, 224 [out] SCRIPTFONTINFO* pScriptFont); 225 226 HRESULT CodePageToScriptID( 227 [in] UINT uiCodePage, 228 [out] SCRIPT_ID *pSid); 229} 230 231[ 232 object, 233 uuid(c04d65ce-b70d-11d0-b188-00aa0038c969), 234 pointer_default(unique) 235] 236interface IMLangString : IUnknown 237{ 238#ifdef NEWMLSTR 239 HRESULT LockMLStr( 240 [in] LONG lPos, 241 [in] DWORD dwFlags, 242 [out] DWORD* pdwCookie, 243 [out] LONG* plActualPos, 244 [out] LONG* plActualLen); 245 246 HRESULT UnlockMLStr( 247 [in] DWORD dwCookie); 248#else 249 HRESULT Sync( 250 [in] BOOL fNoAccess); 251#endif 252 HRESULT GetLength( 253 [out, retval] LONG* plLen); 254 HRESULT SetMLStr( 255 [in] LONG lDestPos, 256 [in] LONG lDestLen, 257 [in] IUnknown *pSrcMLStr, 258 [in] LONG lSrcPos, 259 [in] LONG lSrcLen); 260#ifdef NEWMLSTR 261 HRESULT RegisterAttr( 262 [in] IUnknown *pUnk, 263 [out] DWORD* pdwCookie); 264 HRESULT UnregisterAttr( 265 [in] DWORD dwCookie); 266 HRESULT EnumAttr( 267 [out] IEnumUnknown **ppEnumUnk); 268 HRESULT FindAttr( 269 [in] REFIID riid, 270 [in] LPARAM lParam, 271 [out] IUnknown **ppUnk); 272#else 273 HRESULT GetMLStr( 274 [in] LONG lSrcPos, 275 [in] LONG lSrcLen, 276 [in] IUnknown *pUnkOuter, 277 [in] DWORD dwClsContext, 278 [in] const IID* piid, 279 [out] IUnknown** ppDestMLStr, 280 [out] LONG* plDestPos, 281 [out] LONG* plDestLen); 282#endif 283} 284 285[ 286 object, 287 uuid(f5be2ee1-bfd7-11d0-b188-00aa0038c969), 288 pointer_default(unique) 289] 290interface IMLangLineBreakConsole : IUnknown 291{ 292 HRESULT BreakLineML( 293 [in] IMLangString* pSrcMLStr, 294 [in] LONG lSrcPos, 295 [in] LONG lSrcLen, 296 [in] LONG cMinColumns, 297 [in] LONG cMaxColumns, 298 [out] LONG* plLineLen, 299 [out] LONG* plSkipLen); 300 301 HRESULT BreakLineW( 302 [in] LCID locale, 303 [in, size_is(cchSrc)] const WCHAR* pszSrc, 304 [in] LONG cchSrc, 305 [in] LONG cMaxColumns, 306 [out] LONG* pcchLine, 307 [out] LONG* pcchSkip ); 308 309 HRESULT BreakLineA( 310 [in] LCID locale, 311 [in] UINT uCodePage, 312 [in, size_is(cchSrc)] const CHAR* pszSrc, 313 [in] LONG cchSrc, 314 [in] LONG cMaxColumns, 315 [out] LONG* pcchLine, 316 [out] LONG* pcchSkip); 317} 318 319[ 320 object, 321 uuid(275c23e3-3747-11d0-9fea-00aa003f8646), 322 pointer_default(unique) 323] 324interface IEnumCodePage : IUnknown 325{ 326 const USHORT MAX_MIMECP_NAME = 64; 327 const USHORT MAX_MIMECSET_NAME = 50; 328 329 typedef enum tagMIMECONTF 330 { 331 MIMECONTF_MAILNEWS = 0x00000001, 332 MIMECONTF_BROWSER = 0x00000002, 333 MIMECONTF_MINIMAL = 0x00000004, 334 MIMECONTF_IMPORT = 0x00000008, 335 MIMECONTF_SAVABLE_MAILNEWS = 0x00000100, 336 MIMECONTF_SAVABLE_BROWSER = 0x00000200, 337 MIMECONTF_EXPORT = 0x00000400, 338 MIMECONTF_PRIVCONVERTER = 0x00010000, 339 MIMECONTF_VALID = 0x00020000, 340 MIMECONTF_VALID_NLS = 0x00040000, 341 MIMECONTF_MIME_IE4 = 0x10000000, 342 MIMECONTF_MIME_LATEST = 0x20000000, 343 MIMECONTF_MIME_REGISTRY = 0x40000000 344 } MIMECONTF; 345 346 typedef struct tagMIMECPINFO { 347 DWORD dwFlags; 348 UINT uiCodePage; 349 UINT uiFamilyCodePage; 350 WCHAR wszDescription[MAX_MIMECP_NAME]; 351 WCHAR wszWebCharset[MAX_MIMECSET_NAME]; 352 WCHAR wszHeaderCharset[MAX_MIMECSET_NAME]; 353 WCHAR wszBodyCharset[MAX_MIMECSET_NAME]; 354 WCHAR wszFixedWidthFont[MAX_MIMEFACE_NAME]; 355 WCHAR wszProportionalFont[MAX_MIMEFACE_NAME]; 356 BYTE bGDICharset; 357 } MIMECPINFO, *PMIMECPINFO; 358 359 typedef struct tagMIMECSETINFO 360 { 361 UINT uiCodePage; 362 UINT uiInternetEncoding; 363 WCHAR wszCharset[MAX_MIMECSET_NAME]; 364 } MIMECSETINFO, *PMIMECSETINFO; 365 366 HRESULT Clone( 367 [out] IEnumCodePage **ppEnum); 368 369 HRESULT Next( 370 [in] ULONG celt, 371 [out] PMIMECPINFO rgelt, 372 [out] ULONG *pceltFetched); 373 374 HRESULT Reset(); 375 376 HRESULT Skip( 377 [in] ULONG celt); 378} 379 380[ 381 object, 382 uuid(d66d6f98-cdaa-11d0-b822-00c04fc9b31f), 383 pointer_default(unique) 384] 385interface IMLangConvertCharset : IUnknown 386{ 387 typedef enum tagMLCONVCHARF 388 { 389 MLCONVCHARF_AUTODETECT = 1, 390 MLCONVCHARF_ENTITIZE = 2, 391 MLCONVCHARF_NCR_ENTITIZE = 2, 392 MLCONVCHARF_NAME_ENTITIZE = 4, 393 MLCONVCHARF_USEDEFCHAR = 8, 394 MLCONVCHARF_NOBESTFITCHARS = 16, 395 MLCONVCHARF_DETECTJPN = 32 396 } MLCONVCHAR; 397 398 typedef enum tagMLCPF 399 { 400 MLDETECTF_MAILNEWS = 0x0001, 401 MLDETECTF_BROWSER = 0x0002, 402 MLDETECTF_VALID = 0x0004, 403 MLDETECTF_VALID_NLS = 0x0008, 404 MLDETECTF_PRESERVE_ORDER = 0x0010, 405 MLDETECTF_PREFERRED_ONLY = 0x0020, 406 MLDETECTF_FILTER_SPECIALCHAR = 0x0040, 407 MLDETECTF_EURO_UTF8 = 0x0080 408 } MLCP; 409 410 HRESULT Initialize( 411 [in] UINT uiSrcCodePage, 412 [in] UINT uiDstCodePage, 413 [in] DWORD dwProperty); 414 415 HRESULT GetSourceCodePage( 416 [out] UINT *puiSrcCodePage); 417 418 HRESULT GetDestinationCodePage( 419 [out] UINT *puiDstCodePage); 420 421 HRESULT GetProperty( 422 [out] DWORD *pdwProperty); 423 424 HRESULT DoConversion( 425 [in] BYTE *pSrcStr, 426 [in,out] UINT *pcSrcSize, 427 [in] BYTE *pDstStr, 428 [in,out] UINT *pcDstSize); 429 430 HRESULT DoConversionToUnicode( 431 [in] CHAR *pSrcStr, 432 [in,out] UINT *pcSrcSize, 433 [in] WCHAR *pDstStr, 434 [in,out] UINT *pcDstSize); 435 436 HRESULT DoConversionFromUnicode( 437 [in] WCHAR *pSrcStr, 438 [in,out] UINT *pcSrcSize, 439 [in] CHAR *pDstStr, 440 [in,out] UINT *pcDstSize); 441} 442 443[ 444 uuid(d66d6f99-cdaa-11d0-b822-00c04fc9b31f) 445] 446coclass CMLangConvertCharset 447{ 448 [default] interface IMLangConvertCharset; 449}; 450 451[ 452 object, 453 uuid(3dc39d1d-c030-11d0-b81b-00c04fc9b31f), 454 pointer_default(unique) 455] 456interface IEnumRfc1766 : IUnknown 457{ 458 const USHORT MAX_RFC1766_NAME = 6; 459 const USHORT MAX_LOCALE_NAME = 32; 460 461 typedef struct tagRFC1766INFO 462 { 463 LCID lcid; 464 WCHAR wszRfc1766[MAX_RFC1766_NAME]; 465 WCHAR wszLocaleName[MAX_LOCALE_NAME]; 466 } RFC1766INFO, *PRFC1766INFO; 467 468 HRESULT Clone( 469 [out] IEnumRfc1766 **ppEnum); 470 471 HRESULT Next( 472 [in] ULONG celt, 473 [out] PRFC1766INFO rgelt, 474 [out] ULONG *pceltFetched); 475 476 HRESULT Reset(); 477 478 HRESULT Skip( 479 [in] ULONG celt); 480} 481 482[ 483 object, 484 uuid(275c23e1-3747-11d0-9fea-00aa003f8646), 485 pointer_default(unique) 486] 487interface IMultiLanguage : IUnknown 488{ 489 HRESULT GetNumberOfCodePageInfo( 490 [out] UINT *pcCodePage); 491 492 HRESULT GetCodePageInfo( 493 [in] UINT uiCodePage, 494 [out] PMIMECPINFO pCodePageInfo); 495 496 HRESULT GetFamilyCodePage( 497 [in] UINT uiCodePage, 498 [out] UINT *puiFamilyCodePage); 499 500 HRESULT EnumCodePages( 501 [in] DWORD grfFlags, 502 [out] IEnumCodePage **ppEnumCodePage); 503 504 HRESULT GetCharsetInfo( 505 [in] BSTR Charset, 506 [in] PMIMECSETINFO pCharsetInfo); 507 508 HRESULT IsConvertible( 509 [in] DWORD dwSrcEncoding, 510 [in] DWORD dwDstEncoding); 511 512 HRESULT ConvertString( 513 [in,out] DWORD *pdwMode, 514 [in] DWORD dwSrcEncoding, 515 [in] DWORD dwDstEncoding, 516 [in] BYTE *pSrcStr, 517 [in,out] UINT *pcSrcSize, 518 [in] BYTE *pDstStr, 519 [in,out] UINT *pcDstSize); 520 521 HRESULT ConvertStringToUnicode( 522 [in,out] DWORD *pdwMode, 523 [in] DWORD dwEncoding, 524 [in] CHAR *pSrcStr, 525 [in,out] UINT *pcSrcSize, 526 [in] WCHAR *pDstStr, 527 [in,out] UINT *pcDstSize); 528 529 HRESULT ConvertStringFromUnicode( 530 [in,out] DWORD *pdwMode, 531 [in] DWORD dwEncoding, 532 [in] WCHAR *pSrcStr, 533 [in,out] UINT *pcSrcSize, 534 [in] CHAR *pDstStr, 535 [in,out] UINT *pcDstSize); 536 537 HRESULT ConvertStringReset(); 538 539 HRESULT GetRfc1766FromLcid( 540 [in] LCID Locale, 541 [out] BSTR *pbstrRfc1766); 542 543 HRESULT GetLcidFromRfc1766( 544 [out] LCID *pLocale, 545 [in] BSTR bstrRfc1766); 546 547 HRESULT EnumRfc1766( 548 [out] IEnumRfc1766 **ppEnumRfc1766); 549 550 HRESULT GetRfc1766Info( 551 [in] LCID Locale, 552 [out] PRFC1766INFO pRfc1766Info); 553 554 HRESULT CreateConvertCharset( 555 [in] UINT uiSrcCodePage, 556 [in] UINT uiDstCodePage, 557 [in] DWORD dwProperty, 558 [out] IMLangConvertCharset **ppMLangConvertCharset); 559 560} 561 562[ 563 object, 564 uuid(dccfc164-2b38-11d2-b7ec-00c04f8f5d9a), 565 pointer_default(unique) 566] 567interface IMultiLanguage2 : IUnknown 568{ 569 typedef struct tagDetectEncodingInfo 570 { 571 UINT nLangID; 572 UINT nCodePage; 573 INT nDocPercent; 574 INT nConfidence; 575 } DetectEncodingInfo, *pDetectEncodingInfo; 576 577 HRESULT GetNumberOfCodePageInfo( 578 [out] UINT *pcCodePage); 579 580 HRESULT GetCodePageInfo( 581 [in] UINT uiCodePage, 582 [in] LANGID LangId, 583 [out] PMIMECPINFO pCodePageInfo); 584 585 HRESULT GetFamilyCodePage( 586 [in] UINT uiCodePage, 587 [out] UINT *puiFamilyCodePage); 588 589 HRESULT EnumCodePages( 590 [in] DWORD grfFlags, 591 [in] LANGID LangId, 592 [out] IEnumCodePage **ppEnumCodePage); 593 594 HRESULT GetCharsetInfo( 595 [in] BSTR Charset, 596 [in] PMIMECSETINFO pCharsetInfo); 597 598 HRESULT IsConvertible( 599 [in] DWORD dwSrcEncoding, 600 [in] DWORD dwDstEncoding); 601 602 HRESULT ConvertString( 603 [in,out] DWORD *pdwMode, 604 [in] DWORD dwSrcEncoding, 605 [in] DWORD dwDstEncoding, 606 [in] BYTE *pSrcStr, 607 [in,out] UINT *pcSrcSize, 608 [in] BYTE *pDstStr, 609 [in,out] UINT *pcDstSize); 610 611 HRESULT ConvertStringToUnicode( 612 [in,out] DWORD *pdwMode, 613 [in] DWORD dwEncoding, 614 [in] CHAR *pSrcStr, 615 [in,out] UINT *pcSrcSize, 616 [in] WCHAR *pDstStr, 617 [in,out] UINT *pcDstSize); 618 619 HRESULT ConvertStringFromUnicode( 620 [in,out] DWORD *pdwMode, 621 [in] DWORD dwEncoding, 622 [in] WCHAR *pSrcStr, 623 [in,out] UINT *pcSrcSize, 624 [in] CHAR *pDstStr, 625 [in,out] UINT *pcDstSize); 626 627 HRESULT ConvertStringReset(); 628 629 HRESULT GetRfc1766FromLcid( 630 [in] LCID Locale, 631 [out] BSTR *pbstrRfc1766); 632 633 HRESULT GetLcidFromRfc1766( 634 [out] LCID *pLocale, 635 [in] BSTR bstrRfc1766); 636 637 HRESULT EnumRfc1766( 638 [in] LANGID LangId, 639 [out] IEnumRfc1766 **ppEnumRfc1766); 640 641 HRESULT GetRfc1766Info( 642 [in] LCID Locale, 643 [in] LANGID LangId, 644 [out] PRFC1766INFO pRfc1766Info); 645 646 HRESULT CreateConvertCharset( 647 [in] UINT uiSrcCodePage, 648 [in] UINT uiDstCodePage, 649 [in] DWORD dwProperty, 650 [out] IMLangConvertCharset **ppMLangConvertCharset); 651 652 HRESULT ConvertStringInIStream( 653 [in,out] DWORD *pdwMode, 654 [in] DWORD dwFlag, 655 [in] WCHAR *lpFallBack, 656 [in] DWORD dwSrcEncoding, 657 [in] DWORD dwDstEncoding, 658 [in] IStream *pstmIn, 659 [in] IStream *pstmOut); 660 661 HRESULT ConvertStringToUnicodeEx( 662 [in,out] DWORD *pdwMode, 663 [in] DWORD dwEncoding, 664 [in] CHAR *pSrcStr, 665 [in,out] UINT *pcSrcSize, 666 [in] WCHAR *pDstStr, 667 [in,out] UINT *pcDstSize, 668 [in] DWORD dwFlag, 669 [in] WCHAR *lpFallBack); 670 671 HRESULT ConvertStringFromUnicodeEx( 672 [in,out] DWORD *pdwMode, 673 [in] DWORD dwEncoding, 674 [in] WCHAR *pSrcStr, 675 [in,out] UINT *pcSrcSize, 676 [in] CHAR *pDstStr, 677 [in,out] UINT *pcDstSize, 678 [in] DWORD dwFlag, 679 [in] WCHAR *lpFallBack); 680 681 HRESULT DetectCodepageInIStream( 682 [in] DWORD dwFlag, 683 [in] DWORD dwPrefWinCodePage, 684 [in] IStream *pstmIn, 685 [in,out] DetectEncodingInfo *lpEncoding, 686 [in,out] INT *pnScores); 687 688 HRESULT DetectInputCodepage( 689 [in] DWORD dwFlag, 690 [in] DWORD dwPrefWinCodePage, 691 [in] CHAR *pSrcStr, 692 [in,out] INT *pcSrcSize, 693 [in,out] DetectEncodingInfo *lpEncoding, 694 [in,out] INT *pnScores); 695 696 HRESULT ValidateCodePage( 697 [in] UINT uiCodePage, 698 [in] HWND hwnd); 699 700 HRESULT GetCodePageDescription( 701 [in] UINT uiCodePage, 702 [in] LCID lcid, 703 [in,out,size_is(cchWideChar)] LPWSTR lpWideCharStr, 704 [in] int cchWideChar); 705 706 HRESULT IsCodePageInstallable( 707 [in] UINT uiCodePage); 708 709 HRESULT SetMimeDBSource( 710 [in] MIMECONTF dwSource); 711 712 HRESULT GetNumberOfScripts( 713 [out] UINT *pnScripts); 714 715 HRESULT EnumScripts( 716 [in] DWORD dwFlags, 717 [in] LANGID LangId, 718 [out] IEnumScript **ppEnumScript); 719 720 HRESULT ValidateCodePageEx( /* undocumented on MSDN */ 721 [in] UINT uiCodePage, 722 [in] HWND hwnd, 723 [in] DWORD dwfIODControl); 724} 725 726[ 727 object, 728 uuid(4e5868ab-b157-4623-9acc-6a1d9caebe04), 729 pointer_default(unique) 730] 731interface IMultiLanguage3 : IMultiLanguage2 732{ 733 typedef [unique] IMultiLanguage3 *LPMULTILANGUAGE3; 734 HRESULT DetectOutboundCodePage( 735 [in] DWORD dwFlags, 736 [in] LPCWSTR lpWideCharStr, 737 [in] UINT cchWideChar, 738 [in] UINT *puiPreferredCodePages, 739 [in] UINT nPreferredCodePages, 740 [in] UINT *puiDetectedCodePages, 741 [in, out] UINT *pnDetectedCodePages, 742 [in] WCHAR *lpSpecialChar); 743 744 HRESULT DetectOutboundCodePageInIStream( 745 [in] DWORD dwFlags, 746 [in] IStream *pStrIn, 747 [in] UINT *puiPreferredCodePages, 748 [in] UINT nPreferredCodePages, 749 [in] UINT *puiDetectedCodePages, 750 [in, out] UINT *pnDetectedCodePages, 751 [in] WCHAR *lpSpecialChar); 752} 753 754[ 755 uuid(275C23E2-3747-11d0-9FEA-00AA003f8646) 756] 757coclass CMultiLanguage 758{ 759 [default] interface IMultiLanguage; 760 interface IMLangCodePages; 761 interface IMLangFontLink; 762 /* interface IMLangLineBreakConsole; */ 763 interface IMLangFontLink2; 764}; 765 766} // library MultiLanguage 767 768cpp_quote("STDAPI LcidToRfc1766A(LCID, LPSTR, INT);") 769cpp_quote("STDAPI LcidToRfc1766W(LCID, LPWSTR, INT);") 770cpp_quote("#define LcidToRfc1766 WINELIB_NAME_AW(LcidToRfc1766)") 771 772cpp_quote("STDAPI Rfc1766ToLcidA(LCID *, LPCSTR);") 773cpp_quote("STDAPI Rfc1766ToLcidW(LCID *, LPCWSTR);") 774cpp_quote("#define Rfc1766ToLcid WINELIB_NAME_AW(Rfc1766ToLcid)") 775 776cpp_quote("STDAPI GetGlobalFontLinkObject(void **unknown);") 777cpp_quote("STDAPI IsConvertINetStringAvailable(DWORD, DWORD);") 778cpp_quote("STDAPI ConvertINetString(LPDWORD, DWORD, DWORD, LPCSTR, LPINT, LPSTR, LPINT);") 779cpp_quote("STDAPI ConvertINetMultiByteToUnicode(LPDWORD, DWORD, LPCSTR, LPINT, LPWSTR, LPINT);") 780cpp_quote("STDAPI ConvertINetUnicodeToMultiByte(LPDWORD, DWORD, LPCWSTR, LPINT, LPSTR, LPINT);") 781