MLang.Idl 42 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078
  1. //+-------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (c) Microsoft Corporation. All rights reserved.
  5. //
  6. // File: mlang.idl
  7. //
  8. // Contents: IMultiLanguage interface definition
  9. //
  10. //
  11. //--------------------------------------------------------------------------
  12. cpp_quote("//=--------------------------------------------------------------------------=")
  13. cpp_quote("// MLang.h ")
  14. cpp_quote("//=--------------------------------------------------------------------------=")
  15. cpp_quote("// Copyright (c) Microsoft Corporation. All rights reserved.")
  16. cpp_quote("// ")
  17. cpp_quote("// THIS CODE AND INFORMATION IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF ")
  18. cpp_quote("// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO ")
  19. cpp_quote("// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A ")
  20. cpp_quote("// PARTICULAR PURPOSE. ")
  21. cpp_quote("//=--------------------------------------------------------------------------=")
  22. cpp_quote(" ")
  23. cpp_quote("#pragma comment(lib,\"uuid.lib\") ")
  24. cpp_quote(" ")
  25. cpp_quote("//----------------------------------------------------------------------------")
  26. cpp_quote("// IMultiLanguage Interfaces. ")
  27. cpp_quote(" ")
  28. #ifndef DO_NO_IMPORTS
  29. import "unknwn.idl";
  30. #endif
  31. [
  32. uuid(275c23e0-3747-11d0-9fea-00aa003f8646),
  33. helpstring("MultiLanguage Object Model"),
  34. lcid(0x0000),
  35. version(0.2)
  36. ]
  37. library MultiLanguage
  38. {
  39. importlib("stdole2.tlb");
  40. typedef WORD LANGID;
  41. typedef enum tagMLSTR_FLAGS
  42. {
  43. #ifdef NEWMLSTR
  44. MLSTR_READ = 0x0001,
  45. MLSTR_WRITE = 0x000A,
  46. MLSTR_SHARE_DENYREAD = 0x0004,
  47. MLSTR_SHARE_DENYWRITE = 0x0008,
  48. MLSTR_MOVE = 0x0010,
  49. MLSTR_NOWAIT = 0x0020
  50. #else
  51. MLSTR_READ = 1,
  52. MLSTR_WRITE = 2
  53. #endif
  54. } MLSTR_FLAGS;
  55. [
  56. uuid(D24ACD21-BA72-11D0-B188-00AA0038C969),
  57. helpstring("IMLangStringBufW Interface"),
  58. pointer_default(unique)
  59. ]
  60. interface IMLangStringBufW : IUnknown
  61. {
  62. [helpstring("method GetStatus")] HRESULT GetStatus([out] long* plFlags, [out] long* pcchBuf);
  63. [helpstring("method LockBuf")] HRESULT LockBuf([in] long cchOffset, [in] long cchMaxLock, [out, size_is(,*pcchBuf)] WCHAR** ppszBuf, [out] long* pcchBuf);
  64. [helpstring("method UnlockBuf")] HRESULT UnlockBuf([in, size_is(cchWrite - cchOffset)] const WCHAR* pszBuf, [in] long cchOffset, [in] long cchWrite);
  65. [helpstring("method Insert")] HRESULT Insert([in] long cchOffset, [in] long cchMaxInsert, [out] long* pcchActual);
  66. [helpstring("method Delete")] HRESULT Delete([in] long cchOffset, [in] long cchDelete);
  67. };
  68. [
  69. uuid(D24ACD23-BA72-11D0-B188-00AA0038C969),
  70. helpstring("IMLangStringBufA Interface"),
  71. pointer_default(unique)
  72. ]
  73. interface IMLangStringBufA : IUnknown
  74. {
  75. [helpstring("method GetStatus")] HRESULT GetStatus([out] long* plFlags, [out] long* pcchBuf);
  76. [helpstring("method LockBuf")] HRESULT LockBuf([in] long cchOffset, [in] long cchMaxLock, [out, size_is(,*pcchBuf)] CHAR** ppszBuf, [out] long* pcchBuf);
  77. [helpstring("method UnlockBuf")] HRESULT UnlockBuf([in, size_is(cchWrite - cchOffset)] const CHAR* pszBuf, [in] long cchOffset, [in] long cchWrite);
  78. [helpstring("method Insert")] HRESULT Insert([in] long cchOffset, [in] long cchMaxInsert, [out] long* pcchActual);
  79. [helpstring("method Delete")] HRESULT Delete([in] long cchOffset, [in] long cchDelete);
  80. };
  81. #ifdef NEWMLSTR
  82. [
  83. uuid(9c0782c0-5087-11d1-998c-00aa00601ea8),
  84. helpstring("IMLStrAttr Interface"),
  85. pointer_default(unique)
  86. ]
  87. interface IMLStrAttr : IUnknown
  88. {
  89. [helpstring("method SetClient")] HRESULT SetClient([in] IUnknown* pUnk);
  90. [helpstring("method GetClient")] HRESULT GetClient([out] IUnknown** ppUnk);
  91. [helpstring("method QueryAttr")] HRESULT QueryAttr([in] REFIID riid, [in] LPARAM lParam, [out] IUnknown** ppUnk, [out] long* lConf);
  92. [helpstring("method GetAttrInterface")] HRESULT GetAttrInterface([out] IID* pIID, [out] LPARAM* plParam);
  93. [helpstring("method SetMLStr")] HRESULT SetMLStr([in] long lDestPos, [in] long lDestLen, [in] IUnknown* pSrcMLStr, [in] long lSrcPos, [in] long lSrcLen);
  94. };
  95. [
  96. uuid(39a623c0-5109-11d1-998c-00aa00601ea8),
  97. helpstring("IMLStrAttrWStr Interface"),
  98. pointer_default(unique)
  99. ]
  100. interface IMLStrAttrWStr : IMLStrAttr
  101. {
  102. [helpstring("method SetWStr")] HRESULT SetWStr([in] long lDestPos, [in] long lDestLen, [in, size_is(cchSrc)] const WCHAR* pszSrc, [in] long cchSrc, [out] long* pcchActual, [out] long* plActualLen);
  103. [helpstring("method SetStrBufW")] HRESULT SetStrBufW([in] long lDestPos, [in] long lDestLen, [in] IMLangStringBufW* pSrcBuf, [out] long* pcchActual, [out] long* plActualLen);
  104. [helpstring("method GetWStr")] HRESULT GetWStr([in] long lSrcPos, [in] long lSrcLen, [out, size_is(cchDest)] WCHAR* pszDest, [in] long cchDest, [out] long* pcchActual, [out] long* plActualLen);
  105. [helpstring("method GetStrBufW")] HRESULT GetStrBufW([in] long lSrcPos, [in] long lSrcMaxLen, [out] IMLangStringBufW** ppDestBuf, [out] long* plDestLen);
  106. [helpstring("method LockWStr")] HRESULT LockWStr([in] long lSrcPos, [in] long lSrcLen, [in] long lFlags, [in] long cchRequest, [out, size_is(,*pcchDest)] WCHAR** ppszDest, [out] long* pcchDest, [out] long* plDestLen);
  107. [helpstring("method UnlockWStr")] HRESULT UnlockWStr([in, size_is(cchSrc)] const WCHAR* pszSrc, [in] long cchSrc, [out] long* pcchActual, [out] long* plActualLen);
  108. };
  109. [
  110. uuid(39a623c1-5109-11d1-998c-00aa00601ea8),
  111. helpstring("IMLStrAttrAStr Interface"),
  112. pointer_default(unique)
  113. ]
  114. interface IMLStrAttrAStr : IMLStrAttr
  115. {
  116. [helpstring("method SetAStr")] HRESULT SetAStr([in] long lDestPos, [in] long lDestLen, [in] UINT uCodePage, [in, size_is(cchSrc)] const CHAR* pszSrc, [in] long cchSrc, [out] long* pcchActual, [out] long* plActualLen);
  117. [helpstring("method SetStrBufA")] HRESULT SetStrBufA([in] long lDestPos, [in] long lDestLen, [in] UINT uCodePage, [in] IMLangStringBufA* pSrcBuf, [out] long* pcchActual, [out] long* plActualLen);
  118. [helpstring("method GetAStr")] HRESULT GetAStr([in] long lSrcPos, [in] long lSrcLen, [in] UINT uCodePageIn, [out] UINT* puCodePageOut, [out, size_is(cchDest)] CHAR* pszDest, [in] long cchDest, [out] long* pcchActual, [out] long* plActualLen);
  119. [helpstring("method GetStrBufA")] HRESULT GetStrBufA([in] long lSrcPos, [in] long lSrcMaxLen, [out] UINT* puDestCodePage, [out] IMLangStringBufA** ppDestBuf, [out] long* plDestLen);
  120. [helpstring("method LockAStr")] HRESULT LockAStr([in] long lSrcPos, [in] long lSrcLen, [in] long lFlags, [in] UINT uCodePageIn, [in] long cchRequest, [out] UINT* puCodePageOut, [out, size_is(,*pcchDest)] CHAR** ppszDest, [out] long* pcchDest, [out] long* plDestLen);
  121. [helpstring("method UnlockAStr")] HRESULT UnlockAStr([in, size_is(cchSrc)] const CHAR* pszSrc, [in] long cchSrc, [out] long* pcchActual, [out] long* plActualLen);
  122. };
  123. [
  124. uuid(39a623c2-5109-11d1-998c-00aa00601ea8),
  125. helpstring("IMLStrAttrLong Interface"),
  126. pointer_default(unique)
  127. ]
  128. interface IMLStrAttrLong : IMLStrAttr
  129. {
  130. [helpstring("method SetLong")] HRESULT SetLong([in] long lDestPos, [in] long lDestLen, [in] long lValue);
  131. [helpstring("method GetLong")] HRESULT GetLong([in] long lSrcPos, [in] long lSrcLen, [out] long* plValue, [out] long* plActualPos, [out] long* plActualLen);
  132. };
  133. [
  134. uuid(39a623c3-5109-11d1-998c-00aa00601ea8),
  135. helpstring("IMLStrAttrLocale Interface"),
  136. pointer_default(unique)
  137. ]
  138. interface IMLStrAttrLocale : IMLStrAttrLong
  139. {
  140. };
  141. [
  142. uuid(8d0dcf40-520d-11d1-998c-00aa00601ea8),
  143. helpstring("IMLStrAttrNotifySink Interface"),
  144. pointer_default(unique)
  145. ]
  146. interface IMLStrAttrNotifySink : IUnknown
  147. {
  148. [helpstring("method OnRequestEdit")] HRESULT OnRequestEdit([in] long lDestPos, [in] long lDestLen, [in] long lNewLen, [in] REFIID riid, [in] LPARAM lParam, [in] IUnknown* pUnk);
  149. [helpstring("method OnCanceledEdit")] HRESULT OnCanceledEdit([in] long lDestPos, [in] long lDestLen, [in] long lNewLen, [in] REFIID riid, [in] LPARAM lParam, [in] IUnknown* pUnk);
  150. [helpstring("method OnChanged")] HRESULT OnChanged([in] long lDestPos, [in] long lDestLen, [in] long lNewLen, [in] REFIID riid, [in] LPARAM lParam, [in] IUnknown* pUnk);
  151. };
  152. [
  153. uuid(c454b4e0-510f-11d1-998c-00aa00601ea8),
  154. helpstring("CMLStrAttrWStr Class")
  155. ]
  156. coclass CMLStrAttrWStr
  157. {
  158. [default] interface IMLStrAttrWStr;
  159. [source] interface IMLStrAttrNotifySink;
  160. };
  161. [
  162. uuid(c454b4e1-510f-11d1-998c-00aa00601ea8),
  163. helpstring("CMLStrAttrAStr Class")
  164. ]
  165. coclass CMLStrAttrAStr
  166. {
  167. [default] interface IMLStrAttrAStr;
  168. [source] interface IMLStrAttrNotifySink;
  169. };
  170. [
  171. uuid(c454b4e2-510f-11d1-998c-00aa00601ea8),
  172. helpstring("CMLStrAttrLocale Class")
  173. ]
  174. coclass CMLStrAttrLocale
  175. {
  176. [default] interface IMLStrAttrLocale;
  177. [source] interface IMLStrAttrNotifySink;
  178. };
  179. #endif // NEWMLSTR
  180. [
  181. uuid(C04D65CE-B70D-11D0-B188-00AA0038C969),
  182. helpstring("IMLangString Interface"),
  183. pointer_default(unique)
  184. ]
  185. interface IMLangString : IUnknown
  186. {
  187. #ifdef NEWMLSTR
  188. [helpstring("method LockMLStr")] HRESULT LockMLStr([in] long lPos, [in] long lLen, [in] DWORD dwFlags, [out] DWORD* pdwCookie, [out] long* plActualPos, [out] long* plActualLen);
  189. [helpstring("method UnlockMLStr")] HRESULT UnlockMLStr([in] DWORD dwCookie);
  190. #else
  191. [helpstring("method Sync")] HRESULT Sync([in] BOOL fNoAccess);
  192. #endif
  193. [helpstring("method GetLength")] HRESULT GetLength([out, retval] long* plLen);
  194. [helpstring("method SetMLStr")] HRESULT SetMLStr([in] long lDestPos, [in] long lDestLen, [in] IUnknown* pSrcMLStr, [in] long lSrcPos, [in] long lSrcLen);
  195. #ifdef NEWMLSTR
  196. [helpstring("method RegisterAttr")] HRESULT RegisterAttr([in] IUnknown* pUnk, [out] DWORD* pdwCookie);
  197. [helpstring("method UnregisterAttr")] HRESULT UnregisterAttr([in] DWORD dwCookie);
  198. [helpstring("method EnumAttr")] HRESULT EnumAttr([out] IEnumUnknown** ppEnumUnk);
  199. [helpstring("method FindAttr")] HRESULT FindAttr([in] REFIID riid, [in] LPARAM lParam, [out] IUnknown** ppUnk);
  200. #else
  201. [helpstring("method GetMLStr")] HRESULT GetMLStr([in] long lSrcPos, [in] long lSrcLen, [in] IUnknown* pUnkOuter, [in] DWORD dwClsContext, [in] const IID* piid, [out] IUnknown** ppDestMLStr, [out] long* plDestPos, [out] long* plDestLen);
  202. #endif
  203. };
  204. [
  205. uuid(C04D65D0-B70D-11D0-B188-00AA0038C969),
  206. helpstring("IMLangStringWStr Interface"),
  207. pointer_default(unique)
  208. ]
  209. interface IMLangStringWStr : IMLangString
  210. {
  211. [helpstring("method SetWStr")] HRESULT SetWStr([in] long lDestPos, [in] long lDestLen, [in, size_is(cchSrc)] const WCHAR* pszSrc, [in] long cchSrc, [out] long* pcchActual, [out] long* plActualLen);
  212. [helpstring("method SetStrBufW")] HRESULT SetStrBufW([in] long lDestPos, [in] long lDestLen, [in] IMLangStringBufW* pSrcBuf, [out] long* pcchActual, [out] long* plActualLen);
  213. [helpstring("method GetWStr")] HRESULT GetWStr([in] long lSrcPos, [in] long lSrcLen, [out, size_is(cchDest)] WCHAR* pszDest, [in] long cchDest, [out] long* pcchActual, [out] long* plActualLen);
  214. [helpstring("method GetStrBufW")] HRESULT GetStrBufW([in] long lSrcPos, [in] long lSrcMaxLen, [out] IMLangStringBufW** ppDestBuf, [out] long* plDestLen);
  215. [helpstring("method LockWStr")] HRESULT LockWStr([in] long lSrcPos, [in] long lSrcLen, [in] long lFlags, [in] long cchRequest, [out, size_is(,*pcchDest)] WCHAR** ppszDest, [out] long* pcchDest, [out] long* plDestLen);
  216. [helpstring("method UnlockWStr")] HRESULT UnlockWStr([in, size_is(cchSrc)] const WCHAR* pszSrc, [in] long cchSrc, [out] long* pcchActual, [out] long* plActualLen);
  217. [helpstring("method SetLocale")] HRESULT SetLocale([in] long lDestPos, [in] long lDestLen, [in] LCID locale);
  218. [helpstring("method GetLocale")] HRESULT GetLocale([in] long lSrcPos, [in] long lSrcMaxLen, [out] LCID* plocale, [out] long* plLocalePos, [out] long* plLocaleLen);
  219. };
  220. [
  221. uuid(C04D65D2-B70D-11D0-B188-00AA0038C969),
  222. helpstring("IMLangStringAStr Interface"),
  223. pointer_default(unique)
  224. ]
  225. interface IMLangStringAStr : IMLangString
  226. {
  227. [helpstring("method SetAStr")] HRESULT SetAStr([in] long lDestPos, [in] long lDestLen, [in] UINT uCodePage, [in, size_is(cchSrc)] const CHAR* pszSrc, [in] long cchSrc, [out] long* pcchActual, [out] long* plActualLen);
  228. [helpstring("method SetStrBufA")] HRESULT SetStrBufA([in] long lDestPos, [in] long lDestLen, [in] UINT uCodePage, [in] IMLangStringBufA* pSrcBuf, [out] long* pcchActual, [out] long* plActualLen);
  229. [helpstring("method GetAStr")] HRESULT GetAStr([in] long lSrcPos, [in] long lSrcLen, [in] UINT uCodePageIn, [out] UINT* puCodePageOut, [out, size_is(cchDest)] CHAR* pszDest, [in] long cchDest, [out] long* pcchActual, [out] long* plActualLen);
  230. [helpstring("method GetStrBufA")] HRESULT GetStrBufA([in] long lSrcPos, [in] long lSrcMaxLen, [out] UINT* puDestCodePage, [out] IMLangStringBufA** ppDestBuf, [out] long* plDestLen);
  231. [helpstring("method LockAStr")] HRESULT LockAStr([in] long lSrcPos, [in] long lSrcLen, [in] long lFlags, [in] UINT uCodePageIn, [in] long cchRequest, [out] UINT* puCodePageOut, [out, size_is(,*pcchDest)] CHAR** ppszDest, [out] long* pcchDest, [out] long* plDestLen);
  232. [helpstring("method UnlockAStr")] HRESULT UnlockAStr([in, size_is(cchSrc)] const CHAR* pszSrc, [in] long cchSrc, [out] long* pcchActual, [out] long* plActualLen);
  233. [helpstring("method SetLocale")] HRESULT SetLocale([in] long lDestPos, [in] long lDestLen, [in] LCID locale);
  234. [helpstring("method GetLocale")] HRESULT GetLocale([in] long lSrcPos, [in] long lSrcMaxLen, [out] LCID* plocale, [out] long* plLocalePos, [out] long* plLocaleLen);
  235. };
  236. #ifdef NEWMLSTR
  237. [
  238. uuid(4d94b420-5382-11d1-998c-00aa00601ea8),
  239. helpstring("IMLangStringNotifySink Interface"),
  240. pointer_default(unique)
  241. ]
  242. interface IMLangStringNotifySink : IUnknown
  243. {
  244. [helpstring("method OnRegisterAttr")] HRESULT OnRegisterAttr([in] IUnknown* pUnk);
  245. [helpstring("method OnUnregisterAttr")] HRESULT OnUnregisterAttr([in] IUnknown* pUnk);
  246. [helpstring("method OnRequestEdit")] HRESULT OnRequestEdit([in] long lDestPos, [in] long lDestLen, [in] long lNewLen, [in] REFIID riid, [in] LPARAM lParam, [in] IUnknown* pUnk);
  247. [helpstring("method OnCanceledEdit")] HRESULT OnCanceledEdit([in] long lDestPos, [in] long lDestLen, [in] long lNewLen, [in] REFIID riid, [in] LPARAM lParam, [in] IUnknown* pUnk);
  248. [helpstring("method OnChanged")] HRESULT OnChanged([in] long lDestPos, [in] long lDestLen, [in] long lNewLen, [in] REFIID riid, [in] LPARAM lParam, [in] IUnknown* pUnk);
  249. };
  250. #endif
  251. [
  252. uuid(C04D65CF-B70D-11D0-B188-00AA0038C969),
  253. helpstring("MLangString Class")
  254. ]
  255. coclass CMLangString
  256. {
  257. [default] interface IMLangString;
  258. interface IMLangStringWStr;
  259. interface IMLangStringAStr;
  260. #ifdef NEWMLSTR
  261. [source] interface IMLangStringNotifySink;
  262. #endif
  263. };
  264. [
  265. uuid(F5BE2EE1-BFD7-11D0-B188-00AA0038C969),
  266. helpstring("IMLangLineBreakConsole Interface"),
  267. pointer_default(unique)
  268. ]
  269. interface IMLangLineBreakConsole : IUnknown
  270. {
  271. [helpstring("method BreakLineML")] HRESULT BreakLineML([in] IMLangString* pSrcMLStr, [in] long lSrcPos, [in] long lSrcLen, [in] long cMinColumns, [in] long cMaxColumns, [out] long* plLineLen, [out] long* plSkipLen);
  272. [helpstring("method BreakLineW")] HRESULT BreakLineW([in] LCID locale, [in, size_is(cchSrc)] const WCHAR* pszSrc, [in] long cchSrc, [in] long cMaxColumns, [out] long* pcchLine, [out] long* pcchSkip);
  273. [helpstring("method BreakLineA")] HRESULT BreakLineA([in] LCID locale, [in] UINT uCodePage, [in, size_is(cchSrc)] const CHAR* pszSrc, [in] long cchSrc, [in] long cMaxColumns, [out] long* pcchLine, [out] long* pcchSkip);
  274. };
  275. [
  276. object,
  277. uuid(275c23e3-3747-11d0-9fea-00aa003f8646),
  278. pointer_default(unique)
  279. ]
  280. interface IEnumCodePage : IUnknown
  281. {
  282. const USHORT MAX_MIMECP_NAME = 64;
  283. const USHORT MAX_MIMECSET_NAME = 50;
  284. const USHORT MAX_MIMEFACE_NAME = 32;
  285. typedef enum tagMIMECONTF
  286. {
  287. MIMECONTF_MAILNEWS = 0x00000001,
  288. MIMECONTF_BROWSER = 0x00000002,
  289. MIMECONTF_MINIMAL = 0x00000004,
  290. MIMECONTF_IMPORT = 0x00000008,
  291. MIMECONTF_SAVABLE_MAILNEWS = 0x00000100,
  292. MIMECONTF_SAVABLE_BROWSER = 0x00000200,
  293. MIMECONTF_EXPORT = 0x00000400,
  294. MIMECONTF_PRIVCONVERTER = 0x00010000,
  295. MIMECONTF_VALID = 0x00020000,
  296. MIMECONTF_VALID_NLS = 0x00040000,
  297. MIMECONTF_MIME_IE4 = 0x10000000,
  298. MIMECONTF_MIME_LATEST = 0x20000000,
  299. MIMECONTF_MIME_REGISTRY = 0x40000000
  300. } MIMECONTF;
  301. typedef struct tagMIMECPINFO
  302. {
  303. DWORD dwFlags;
  304. UINT uiCodePage;
  305. UINT uiFamilyCodePage;
  306. WCHAR wszDescription[MAX_MIMECP_NAME];
  307. WCHAR wszWebCharset[MAX_MIMECSET_NAME];
  308. WCHAR wszHeaderCharset[MAX_MIMECSET_NAME];
  309. WCHAR wszBodyCharset[MAX_MIMECSET_NAME];
  310. WCHAR wszFixedWidthFont[MAX_MIMEFACE_NAME];
  311. WCHAR wszProportionalFont[MAX_MIMEFACE_NAME];
  312. BYTE bGDICharset;
  313. } MIMECPINFO, *PMIMECPINFO;
  314. typedef struct tagMIMECSETINFO
  315. {
  316. UINT uiCodePage;
  317. UINT uiInternetEncoding;
  318. WCHAR wszCharset[MAX_MIMECSET_NAME];
  319. } MIMECSETINFO, *PMIMECSETINFO;
  320. typedef [unique] IEnumCodePage *LPENUMCODEPAGE;
  321. HRESULT Clone
  322. (
  323. [out] IEnumCodePage **ppEnum
  324. );
  325. HRESULT Next
  326. (
  327. [in] ULONG celt,
  328. [out] PMIMECPINFO rgelt,
  329. [out] ULONG *pceltFetched
  330. );
  331. HRESULT Reset();
  332. HRESULT Skip
  333. (
  334. [in] ULONG celt
  335. );
  336. };
  337. [
  338. object,
  339. uuid(3dc39d1d-c030-11d0-b81b-00c04fc9b31f),
  340. pointer_default(unique)
  341. ]
  342. interface IEnumRfc1766 : IUnknown
  343. {
  344. const USHORT MAX_RFC1766_NAME = 6;
  345. const USHORT MAX_LOCALE_NAME = 32;
  346. typedef struct tagRFC1766INFO
  347. {
  348. LCID lcid;
  349. WCHAR wszRfc1766[MAX_RFC1766_NAME];
  350. WCHAR wszLocaleName[MAX_LOCALE_NAME];
  351. } RFC1766INFO, *PRFC1766INFO;
  352. typedef [unique] IEnumRfc1766 *LPENUMRFC1766;
  353. HRESULT Clone
  354. (
  355. [out] IEnumRfc1766 **ppEnum
  356. );
  357. HRESULT Next
  358. (
  359. [in] ULONG celt,
  360. [out] PRFC1766INFO rgelt,
  361. [out] ULONG *pceltFetched
  362. );
  363. HRESULT Reset();
  364. HRESULT Skip
  365. (
  366. [in] ULONG celt
  367. );
  368. };
  369. [
  370. object,
  371. uuid(AE5F1430-388B-11d2-8380-00C04F8F5DA1),
  372. pointer_default(unique)
  373. ]
  374. interface IEnumScript : IUnknown
  375. {
  376. const USHORT MAX_SCRIPT_NAME = 48;
  377. typedef BYTE SCRIPT_ID;
  378. typedef __int64 SCRIPT_IDS;
  379. typedef enum tagSCRIPTCONTF
  380. {
  381. sidDefault, // 0
  382. sidMerge, // 1
  383. sidAsciiSym, // 2
  384. sidAsciiLatin, // 3
  385. sidLatin, // 4
  386. sidGreek, // 5
  387. sidCyrillic, // 6
  388. sidArmenian, // 7
  389. sidHebrew, // 8
  390. sidArabic, // 9
  391. sidDevanagari, // 10
  392. sidBengali, // 11
  393. sidGurmukhi, // 12
  394. sidGujarati, // 13
  395. sidOriya, // 14
  396. sidTamil, // 15
  397. sidTelugu, // 16
  398. sidKannada, // 17
  399. sidMalayalam, // 18
  400. sidThai, // 19
  401. sidLao, // 20
  402. sidTibetan, // 21
  403. sidGeorgian, // 22
  404. sidHangul, // 23
  405. sidKana, // 24
  406. sidBopomofo, // 25
  407. sidHan, // 26
  408. sidEthiopic, // 27
  409. sidCanSyllabic, // 28
  410. sidCherokee, // 29
  411. sidYi, // 30
  412. sidBraille, // 31
  413. sidRunic, // 32
  414. sidOgham, // 33
  415. sidSinhala, // 34
  416. sidSyriac, // 35
  417. sidBurmese, // 36
  418. sidKhmer, // 37
  419. sidThaana, // 38
  420. sidMongolian, // 39
  421. sidUserDefined, // 40
  422. sidLim, // 41
  423. sidFEFirst = sidHangul,
  424. sidFELast = sidHan
  425. } SCRIPTCONTF;
  426. typedef struct tagSCRIPTINFO
  427. {
  428. SCRIPT_ID ScriptId;
  429. UINT uiCodePage;
  430. WCHAR wszDescription[MAX_SCRIPT_NAME];
  431. WCHAR wszFixedWidthFont[MAX_MIMEFACE_NAME];
  432. WCHAR wszProportionalFont[MAX_MIMEFACE_NAME];
  433. } SCRIPTINFO, *PSCRIPTINFO;
  434. typedef [unique] IEnumScript *LPENUMScript;
  435. HRESULT Clone
  436. (
  437. [out] IEnumScript **ppEnum
  438. );
  439. HRESULT Next
  440. (
  441. [in] ULONG celt,
  442. [out] PSCRIPTINFO rgelt,
  443. [out] ULONG *pceltFetched
  444. );
  445. HRESULT Reset();
  446. HRESULT Skip
  447. (
  448. [in] ULONG celt
  449. );
  450. };
  451. [
  452. object,
  453. uuid(d66d6f98-cdaa-11d0-b822-00c04fc9b31f),
  454. pointer_default(unique)
  455. ]
  456. interface IMLangConvertCharset : IUnknown
  457. {
  458. typedef enum tagMLCONVCHARF
  459. {
  460. MLCONVCHARF_AUTODETECT = 1,
  461. MLCONVCHARF_ENTITIZE = 2,
  462. MLCONVCHARF_NCR_ENTITIZE = 2,
  463. MLCONVCHARF_NAME_ENTITIZE = 4,
  464. MLCONVCHARF_USEDEFCHAR = 8,
  465. MLCONVCHARF_NOBESTFITCHARS = 16,
  466. MLCONVCHARF_DETECTJPN = 32
  467. } MLCONVCHAR;
  468. typedef enum tagMLCPF
  469. {
  470. MLDETECTF_MAILNEWS = 0x0001, // Outgoing encoding for mail client
  471. MLDETECTF_BROWSER = 0x0002, // Outgoing encoding for browser client
  472. MLDETECTF_VALID = 0x0004, // Detection result must be valid for conversion and text rendering
  473. MLDETECTF_VALID_NLS = 0x0008, // Detection result must be valid for conversion
  474. MLDETECTF_PRESERVE_ORDER = 0x0010, // Perserve perferred code page order
  475. MLDETECTF_PREFERRED_ONLY = 0x0020, // Only return one of preferred code pages as detection result
  476. MLDETECTF_FILTER_SPECIALCHAR= 0x0040, // Filter out graphical symbols and punctuations
  477. MLDETECTF_EURO_UTF8 = 0x0080, // Force dection result to be UTF8 when EURO character encountered
  478. } MLCP;
  479. typedef [unique] IMLangConvertCharset *LPMLANGCONVERTCHARSET;
  480. HRESULT Initialize
  481. (
  482. [in] UINT uiSrcCodePage,
  483. [in] UINT uiDstCodePage,
  484. [in] DWORD dwProperty
  485. );
  486. HRESULT GetSourceCodePage
  487. (
  488. [out] UINT *puiSrcCodePage
  489. );
  490. HRESULT GetDestinationCodePage
  491. (
  492. [out] UINT *puiDstCodePage
  493. );
  494. HRESULT GetProperty
  495. (
  496. [out] DWORD *pdwProperty
  497. );
  498. HRESULT DoConversion
  499. (
  500. [in] BYTE *pSrcStr,
  501. [in,out] UINT *pcSrcSize,
  502. [in] BYTE *pDstStr,
  503. [in,out] UINT *pcDstSize
  504. );
  505. HRESULT DoConversionToUnicode
  506. (
  507. [in] CHAR *pSrcStr,
  508. [in,out] UINT *pcSrcSize,
  509. [in] WCHAR *pDstStr,
  510. [in,out] UINT *pcDstSize
  511. );
  512. HRESULT DoConversionFromUnicode
  513. (
  514. [in] WCHAR *pSrcStr,
  515. [in,out] UINT *pcSrcSize,
  516. [in] CHAR *pDstStr,
  517. [in,out] UINT *pcDstSize
  518. );
  519. };
  520. [
  521. uuid(d66d6f99-cdaa-11d0-b822-00c04fc9b31f),
  522. ]
  523. coclass CMLangConvertCharset
  524. {
  525. [default] interface IMLangConvertCharset;
  526. };
  527. [
  528. object,
  529. uuid(275c23e1-3747-11d0-9fea-00aa003f8646),
  530. pointer_default(unique)
  531. ]
  532. interface IMultiLanguage : IUnknown
  533. {
  534. typedef [unique] IMultiLanguage *LPMULTILANGUAGE;
  535. HRESULT GetNumberOfCodePageInfo
  536. (
  537. [out] UINT *pcCodePage
  538. );
  539. HRESULT GetCodePageInfo
  540. (
  541. [in] UINT uiCodePage,
  542. [out] PMIMECPINFO pCodePageInfo
  543. );
  544. HRESULT GetFamilyCodePage
  545. (
  546. [in] UINT uiCodePage,
  547. [out] UINT *puiFamilyCodePage
  548. );
  549. HRESULT EnumCodePages
  550. (
  551. [in] DWORD grfFlags,
  552. [out] IEnumCodePage **ppEnumCodePage
  553. );
  554. HRESULT GetCharsetInfo
  555. (
  556. [in] BSTR Charset,
  557. [out] PMIMECSETINFO pCharsetInfo
  558. );
  559. HRESULT IsConvertible
  560. (
  561. [in] DWORD dwSrcEncoding,
  562. [in] DWORD dwDstEncoding
  563. );
  564. HRESULT ConvertString
  565. (
  566. [in,out] DWORD *pdwMode,
  567. [in] DWORD dwSrcEncoding,
  568. [in] DWORD dwDstEncoding,
  569. [in] BYTE *pSrcStr,
  570. [in,out] UINT *pcSrcSize,
  571. [in] BYTE *pDstStr,
  572. [in,out] UINT *pcDstSize
  573. );
  574. HRESULT ConvertStringToUnicode
  575. (
  576. [in,out] DWORD *pdwMode,
  577. [in] DWORD dwEncoding,
  578. [in] CHAR *pSrcStr,
  579. [in,out] UINT *pcSrcSize,
  580. [in] WCHAR *pDstStr,
  581. [in,out] UINT *pcDstSize
  582. );
  583. HRESULT ConvertStringFromUnicode
  584. (
  585. [in,out] DWORD *pdwMode,
  586. [in] DWORD dwEncoding,
  587. [in] WCHAR *pSrcStr,
  588. [in,out] UINT *pcSrcSize,
  589. [in] CHAR *pDstStr,
  590. [in,out] UINT *pcDstSize
  591. );
  592. HRESULT ConvertStringReset();
  593. HRESULT GetRfc1766FromLcid
  594. (
  595. [in] LCID Locale,
  596. [out] BSTR *pbstrRfc1766
  597. );
  598. HRESULT GetLcidFromRfc1766
  599. (
  600. [out] LCID *pLocale,
  601. [in] BSTR bstrRfc1766
  602. );
  603. HRESULT EnumRfc1766
  604. (
  605. [out] IEnumRfc1766 **ppEnumRfc1766
  606. );
  607. HRESULT GetRfc1766Info
  608. (
  609. [in] LCID Locale,
  610. [out] PRFC1766INFO pRfc1766Info
  611. );
  612. HRESULT CreateConvertCharset
  613. (
  614. [in] UINT uiSrcCodePage,
  615. [in] UINT uiDstCodePage,
  616. [in] DWORD dwProperty,
  617. [out] IMLangConvertCharset **ppMLangConvertCharset
  618. );
  619. };
  620. cpp_quote("// dwfIODControl definitions for ValidateCodePageEx()")
  621. cpp_quote("#define CPIOD_PEEK 0x40000000L")
  622. cpp_quote("#define CPIOD_FORCE_PROMPT 0x80000000L")
  623. [
  624. object,
  625. uuid(DCCFC164-2B38-11d2-B7EC-00C04F8F5D9A),
  626. pointer_default(unique)
  627. ]
  628. interface IMultiLanguage2 : IUnknown
  629. {
  630. typedef [unique] IMultiLanguage2 *LPMULTILANGUAGE2;
  631. typedef enum tagMLDETECTCP
  632. {
  633. MLDETECTCP_NONE = 0,
  634. MLDETECTCP_7BIT = 1,
  635. MLDETECTCP_8BIT = 2,
  636. MLDETECTCP_DBCS = 4,
  637. MLDETECTCP_HTML = 8,
  638. MLDETECTCP_NUMBER = 16
  639. } MLDETECTCP ;
  640. typedef struct tagDetectEncodingInfo
  641. {
  642. UINT nLangID; // Win32 primary language ID
  643. UINT nCodePage; // Win32 code page (valid for SBCS and DBCS input only!)
  644. INT nDocPercent; // % of doc in this language, 0-100
  645. INT nConfidence; // Relative confidence measure, approx 0-100
  646. } DetectEncodingInfo, *pDetectEncodingInfo;
  647. typedef enum tagSCRIPTFONTCONTF
  648. {
  649. SCRIPTCONTF_FIXED_FONT = 0x00000001,
  650. SCRIPTCONTF_PROPORTIONAL_FONT = 0x00000002,
  651. SCRIPTCONTF_SCRIPT_USER = 0x00010000,
  652. SCRIPTCONTF_SCRIPT_HIDE = 0x00020000,
  653. SCRIPTCONTF_SCRIPT_SYSTEM = 0x00040000
  654. } SCRIPTFONTCONTF;
  655. typedef struct tagSCRIPFONTINFO
  656. {
  657. SCRIPT_IDS scripts;
  658. WCHAR wszFont[MAX_MIMEFACE_NAME];
  659. } SCRIPTFONTINFO, *PSCRIPTFONTINFO;
  660. HRESULT GetNumberOfCodePageInfo
  661. (
  662. [out] UINT *pcCodePage
  663. );
  664. HRESULT GetCodePageInfo
  665. (
  666. [in] UINT uiCodePage,
  667. [in] LANGID LangId,
  668. [out] PMIMECPINFO pCodePageInfo
  669. );
  670. HRESULT GetFamilyCodePage
  671. (
  672. [in] UINT uiCodePage,
  673. [out] UINT *puiFamilyCodePage
  674. );
  675. HRESULT EnumCodePages
  676. (
  677. [in] DWORD grfFlags,
  678. [in] LANGID LangId,
  679. [out] IEnumCodePage **ppEnumCodePage
  680. );
  681. HRESULT GetCharsetInfo
  682. (
  683. [in] BSTR Charset,
  684. [out] PMIMECSETINFO pCharsetInfo
  685. );
  686. HRESULT IsConvertible
  687. (
  688. [in] DWORD dwSrcEncoding,
  689. [in] DWORD dwDstEncoding
  690. );
  691. HRESULT ConvertString
  692. (
  693. [in,out] DWORD *pdwMode,
  694. [in] DWORD dwSrcEncoding,
  695. [in] DWORD dwDstEncoding,
  696. [in] BYTE *pSrcStr,
  697. [in,out] UINT *pcSrcSize,
  698. [in] BYTE *pDstStr,
  699. [in,out] UINT *pcDstSize
  700. );
  701. HRESULT ConvertStringToUnicode
  702. (
  703. [in,out] DWORD *pdwMode,
  704. [in] DWORD dwEncoding,
  705. [in] CHAR *pSrcStr,
  706. [in,out] UINT *pcSrcSize,
  707. [in] WCHAR *pDstStr,
  708. [in,out] UINT *pcDstSize
  709. );
  710. HRESULT ConvertStringFromUnicode
  711. (
  712. [in,out] DWORD *pdwMode,
  713. [in] DWORD dwEncoding,
  714. [in] WCHAR *pSrcStr,
  715. [in,out] UINT *pcSrcSize,
  716. [in] CHAR *pDstStr,
  717. [in,out] UINT *pcDstSize
  718. );
  719. HRESULT ConvertStringReset();
  720. HRESULT GetRfc1766FromLcid
  721. (
  722. [in] LCID Locale,
  723. [out] BSTR *pbstrRfc1766
  724. );
  725. HRESULT GetLcidFromRfc1766
  726. (
  727. [out] LCID *pLocale,
  728. [in] BSTR bstrRfc1766
  729. );
  730. HRESULT EnumRfc1766
  731. (
  732. [in] LANGID LangId,
  733. [out] IEnumRfc1766 **ppEnumRfc1766
  734. );
  735. HRESULT GetRfc1766Info
  736. (
  737. [in] LCID Locale,
  738. [in] LANGID LangId,
  739. [out] PRFC1766INFO pRfc1766Info
  740. );
  741. HRESULT CreateConvertCharset
  742. (
  743. [in] UINT uiSrcCodePage,
  744. [in] UINT uiDstCodePage,
  745. [in] DWORD dwProperty,
  746. [out] IMLangConvertCharset **ppMLangConvertCharset
  747. );
  748. HRESULT ConvertStringInIStream
  749. (
  750. [in,out] DWORD *pdwMode,
  751. [in] DWORD dwFlag,
  752. [in] WCHAR *lpFallBack,
  753. [in] DWORD dwSrcEncoding,
  754. [in] DWORD dwDstEncoding,
  755. [in] IStream *pstmIn,
  756. [in] IStream *pstmOut
  757. );
  758. HRESULT ConvertStringToUnicodeEx
  759. (
  760. [in,out] DWORD *pdwMode,
  761. [in] DWORD dwEncoding,
  762. [in] CHAR *pSrcStr,
  763. [in,out] UINT *pcSrcSize,
  764. [in] WCHAR *pDstStr,
  765. [in,out] UINT *pcDstSize,
  766. [in] DWORD dwFlag,
  767. [in] WCHAR *lpFallBack
  768. );
  769. HRESULT ConvertStringFromUnicodeEx
  770. (
  771. [in,out] DWORD *pdwMode,
  772. [in] DWORD dwEncoding,
  773. [in] WCHAR *pSrcStr,
  774. [in,out] UINT *pcSrcSize,
  775. [in] CHAR *pDstStr,
  776. [in,out] UINT *pcDstSize,
  777. [in] DWORD dwFlag,
  778. [in] WCHAR *lpFallBack
  779. );
  780. HRESULT DetectCodepageInIStream
  781. (
  782. [in] DWORD dwFlag,
  783. [in] DWORD dwPrefWinCodePage,
  784. [in] IStream *pstmIn,
  785. [in,out] DetectEncodingInfo *lpEncoding,
  786. [in,out] INT *pnScores
  787. );
  788. HRESULT DetectInputCodepage
  789. (
  790. [in] DWORD dwFlag,
  791. [in] DWORD dwPrefWinCodePage,
  792. [in] CHAR *pSrcStr,
  793. [in,out] INT *pcSrcSize,
  794. [in,out] DetectEncodingInfo *lpEncoding,
  795. [in,out] INT *pnScores
  796. );
  797. HRESULT ValidateCodePage
  798. (
  799. [in] UINT uiCodePage,
  800. [in] HWND hwnd
  801. );
  802. HRESULT GetCodePageDescription
  803. (
  804. [in] UINT uiCodePage,
  805. [in] LCID lcid,
  806. [in,out]LPWSTR lpWideCharStr,
  807. [in] int cchWideChar
  808. );
  809. HRESULT IsCodePageInstallable
  810. (
  811. [in] UINT uiCodePage
  812. );
  813. HRESULT SetMimeDBSource
  814. (
  815. [in] MIMECONTF dwSource
  816. );
  817. HRESULT GetNumberOfScripts
  818. (
  819. [out] UINT *pnScripts
  820. );
  821. HRESULT EnumScripts
  822. (
  823. [in] DWORD dwFlags,
  824. [in] LANGID LangId,
  825. [out] IEnumScript **ppEnumScript
  826. );
  827. HRESULT ValidateCodePageEx
  828. (
  829. [in] UINT uiCodePage,
  830. [in] HWND hwnd,
  831. [in] DWORD dwfIODControl
  832. );
  833. };
  834. [
  835. uuid(359F3443-BD4A-11D0-B188-00AA0038C969),
  836. helpstring("IMLangCodePages Interface"),
  837. pointer_default(unique)
  838. ]
  839. interface IMLangCodePages : IUnknown
  840. {
  841. typedef [unique] IMLangCodePages* PMLANGCODEPAGES;
  842. [helpstring("method GetCharCodePages")] HRESULT GetCharCodePages([in] WCHAR chSrc, [out] DWORD* pdwCodePages);
  843. [helpstring("method GetStrCodePages")] HRESULT GetStrCodePages([in, size_is(cchSrc)] const WCHAR* pszSrc, [in] long cchSrc, [in] DWORD dwPriorityCodePages, [out] DWORD* pdwCodePages, [out] long* pcchCodePages);
  844. [helpstring("method CodePageToCodePages")] HRESULT CodePageToCodePages([in] UINT uCodePage, [out] DWORD* pdwCodePages);
  845. [helpstring("method CodePagesToCodePage")] HRESULT CodePagesToCodePage([in] DWORD dwCodePages, [in] UINT uDefaultCodePage, [out] UINT* puCodePage);
  846. };
  847. [
  848. uuid(359F3441-BD4A-11D0-B188-00AA0038C969),
  849. helpstring("IMLangFontLink Interface"),
  850. pointer_default(unique)
  851. ]
  852. interface IMLangFontLink : IMLangCodePages
  853. {
  854. typedef [unique] IMLangFontLink* PMLANGFONTLINK;
  855. [helpstring("method GetFontCodePages")] HRESULT GetFontCodePages([in] HDC hDC, [in] HFONT hFont, [out] DWORD* pdwCodePages);
  856. [helpstring("method MapFont")] HRESULT MapFont([in] HDC hDC, [in] DWORD dwCodePages, [in] HFONT hSrcFont, [out] HFONT* phDestFont);
  857. [helpstring("method ReleaseFont")] HRESULT ReleaseFont([in] HFONT hFont);
  858. [helpstring("method ResetFontMapping")] HRESULT ResetFontMapping();
  859. };
  860. [
  861. uuid(DCCFC162-2B38-11d2-B7EC-00C04F8F5D9A),
  862. helpstring("IMLangFontLink2 Interface"),
  863. pointer_default(unique)
  864. ]
  865. interface IMLangFontLink2 : IMLangCodePages
  866. {
  867. typedef struct tagUNICODERANGE
  868. {
  869. WCHAR wcFrom;
  870. WCHAR wcTo;
  871. } UNICODERANGE;
  872. typedef [unique] IMLangFontLink2* PMLANGFONTLINK2;
  873. [helpstring("method GetFontCodePages")] HRESULT GetFontCodePages([in] HDC hDC, [in] HFONT hFont, [out] DWORD* pdwCodePages);
  874. [helpstring("method ReleaseFont")] HRESULT ReleaseFont([in] HFONT hFont);
  875. [helpstring("method ResetFontMapping")] HRESULT ResetFontMapping();
  876. [helpstring("method MapFont")] HRESULT MapFont([in] HDC hDC, [in] DWORD dwCodePages, [in] WCHAR chSrc, [out] HFONT* pFont );
  877. [helpstring("method GetFontUnicodeRanges")] HRESULT GetFontUnicodeRanges([in] HDC hDC, [in,out] UINT *puiRanges, [out] UNICODERANGE* pUranges);
  878. [helpstring("method GetScriptFontInfo")]HRESULT GetScriptFontInfo([in] SCRIPT_ID sid, [in] DWORD dwFlags, [in, out] UINT *puiFonts, [out] SCRIPTFONTINFO* pScriptFont);
  879. [helpstring("method CodePageToScriptID")] HRESULT CodePageToScriptID([in] UINT uiCodePage, [out] SCRIPT_ID *pSid);
  880. };
  881. [
  882. object,
  883. uuid(4e5868ab-b157-4623-9acc-6a1d9caebe04),
  884. pointer_default(unique)
  885. ]
  886. interface IMultiLanguage3 : IMultiLanguage2
  887. {
  888. typedef [unique] IMultiLanguage3 *LPMULTILANGUAGE3;
  889. HRESULT DetectOutboundCodePage(
  890. [in] DWORD dwFlags,
  891. [in] LPCWSTR lpWideCharStr,
  892. [in] UINT cchWideChar,
  893. [in] UINT* puiPreferredCodePages,
  894. [in] UINT nPreferredCodePages,
  895. [in] UINT* puiDetectedCodePages,
  896. [in, out] UINT* pnDetectedCodePages,
  897. [in] WCHAR * lpSpecialChar
  898. );
  899. HRESULT DetectOutboundCodePageInIStream(
  900. [in] DWORD dwFlags,
  901. [in] IStream* pStrIn,
  902. [in] UINT* puiPreferredCodePages,
  903. [in] UINT nPreferredCodePages,
  904. [in] UINT* puiDetectedCodePages,
  905. [in, out] UINT* pnDetectedCodePages,
  906. [in] WCHAR * lpSpecialChar
  907. );
  908. };
  909. [
  910. uuid(275c23e2-3747-11d0-9fea-00aa003f8646),
  911. ]
  912. coclass CMultiLanguage
  913. {
  914. [default] interface IMultiLanguage;
  915. interface IMLangCodePages;
  916. interface IMLangFontLink;
  917. interface IMLangLineBreakConsole;
  918. interface IMultiLanguage2;
  919. interface IMLangFontLink2;
  920. interface IMultiLanguage3;
  921. };
  922. }
  923. cpp_quote("#ifndef _MLANG_H_API_DEF_ ")
  924. cpp_quote("#define _MLANG_H_API_DEF_ ")
  925. cpp_quote(" ")
  926. cpp_quote("// APIs prototypes ")
  927. cpp_quote("STDAPI LcidToRfc1766A(LCID Locale, LPSTR pszRfc1766, int iMaxLength); ")
  928. cpp_quote("STDAPI LcidToRfc1766W(LCID Locale, LPWSTR pszRfc1766, int nChar); ")
  929. cpp_quote("#ifdef UNICODE ")
  930. cpp_quote("#define LcidToRfc1766 LcidToRfc1766W ")
  931. cpp_quote("#else ")
  932. cpp_quote("#define LcidToRfc1766 LcidToRfc1766A ")
  933. cpp_quote("#endif ")
  934. cpp_quote("STDAPI Rfc1766ToLcidA(LCID *pLocale, LPCSTR pszRfc1766); ")
  935. cpp_quote("STDAPI Rfc1766ToLcidW(LCID *pLocale, LPCWSTR pszRfc1766); ")
  936. cpp_quote("#ifdef UNICODE ")
  937. cpp_quote("#define Rfc1766ToLcid Rfc1766ToLcidW ")
  938. cpp_quote("#else ")
  939. cpp_quote("#define Rfc1766ToLcid Rfc1766ToLcidA ")
  940. cpp_quote("#endif ")
  941. cpp_quote(" ")
  942. cpp_quote("STDAPI IsConvertINetStringAvailable(DWORD dwSrcEncoding, DWORD dwDstEncoding);")
  943. cpp_quote("STDAPI ConvertINetString(LPDWORD lpdwMode, DWORD dwSrcEncoding, DWORD dwDstEncoding, LPCSTR lpSrcStr, LPINT lpnSrcSize, LPSTR lpDstStr, LPINT lpnDstSize); ")
  944. cpp_quote("STDAPI ConvertINetMultiByteToUnicode(LPDWORD lpdwMode, DWORD dwEncoding, LPCSTR lpSrcStr, LPINT lpnMultiCharCount, LPWSTR lpDstStr, LPINT lpnWideCharCount); ")
  945. cpp_quote("STDAPI ConvertINetUnicodeToMultiByte(LPDWORD lpdwMode, DWORD dwEncoding, LPCWSTR lpSrcStr, LPINT lpnWideCharCount, LPSTR lpDstStr, LPINT lpnMultiCharCount); ")
  946. cpp_quote(" ")
  947. cpp_quote("#endif // _MLANG_H_API_DEF_ ")