Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

164 lines
6.1 KiB

  1. //
  2. // imelist.h
  3. //
  4. #ifndef TFELIST_H
  5. #define TFELIST_H
  6. #include "globals.h"
  7. #include "enumguid.h"
  8. #include "sink.h"
  9. HRESULT GetProfileIconInfo(REFCLSID rclsid,
  10. LANGID langid,
  11. REFGUID guidProfile,
  12. WCHAR *pszFileName,
  13. int cchFileNameMax,
  14. ULONG *puIconIndex);
  15. HRESULT EnableLanguageProfileForReg(REFCLSID rclsid, LANGID langid, REFGUID guidProfile, BOOL fEnable);
  16. BOOL IsEnabledLanguageProfileFromReg(REFCLSID rclsid, LANGID langid, REFGUID guidProfile);
  17. //////////////////////////////////////////////////////////////////////////////
  18. //
  19. // CInputProcessorProfiles
  20. //
  21. //////////////////////////////////////////////////////////////////////////////
  22. class CInputProcessorProfiles : public ITfInputProcessorProfilesEx,
  23. public ITfInputProcessorProfileSubstituteLayout,
  24. public ITfSource,
  25. public CComObjectRoot_CreateSingletonInstance<CInputProcessorProfiles>
  26. {
  27. public:
  28. CInputProcessorProfiles();
  29. ~CInputProcessorProfiles();
  30. BEGIN_COM_MAP_IMMX(CInputProcessorProfiles)
  31. COM_INTERFACE_ENTRY(ITfInputProcessorProfiles)
  32. COM_INTERFACE_ENTRY(ITfInputProcessorProfilesEx)
  33. COM_INTERFACE_ENTRY(ITfInputProcessorProfileSubstituteLayout)
  34. COM_INTERFACE_ENTRY(ITfSource)
  35. END_COM_MAP_IMMX()
  36. // ITfInputProcessorProfiles
  37. STDMETHODIMP Register(REFCLSID clsid);
  38. STDMETHODIMP Unregister(REFCLSID clsid);
  39. STDMETHODIMP AddLanguageProfile(REFCLSID rclsid,
  40. LANGID langid,
  41. REFGUID guidProfile,
  42. const WCHAR *pchProfile,
  43. ULONG cch,
  44. const WCHAR *pchFile,
  45. ULONG cchFile,
  46. ULONG uIconIndex);
  47. STDMETHODIMP RemoveLanguageProfile(REFCLSID rclsid,
  48. LANGID langid,
  49. REFGUID guidProfile);
  50. STDMETHODIMP EnumInputProcessorInfo(IEnumGUID **ppEnum);
  51. STDMETHODIMP GetDefaultLanguageProfile(LANGID langid,
  52. REFGUID catid,
  53. CLSID *pclsid,
  54. GUID *pguidProfile);
  55. STDMETHODIMP SetDefaultLanguageProfile(LANGID langid,
  56. REFCLSID rclsid,
  57. REFGUID guidProfile);
  58. STDMETHODIMP ActivateLanguageProfile(REFCLSID rclsid,
  59. LANGID langid,
  60. REFGUID guidProfile);
  61. STDMETHODIMP GetActiveLanguageProfile(REFCLSID clsid,
  62. LANGID *plangid,
  63. GUID *pguidProfile);
  64. STDMETHODIMP GetLanguageProfileDescription(REFCLSID clsid,
  65. LANGID langid,
  66. REFGUID guidProfile,
  67. BSTR *pbstr);
  68. STDMETHODIMP GetCurrentLanguage(LANGID *plangid);
  69. STDMETHODIMP ChangeCurrentLanguage(LANGID langid);
  70. STDMETHODIMP GetLanguageList(LANGID **pplangid, ULONG *pulCount);
  71. STDMETHODIMP EnumLanguageProfiles(LANGID langid,
  72. IEnumTfLanguageProfiles **ppEnum);
  73. STDMETHODIMP EnableLanguageProfile(REFCLSID rclsid,
  74. LANGID langid,
  75. REFGUID guidProfile,
  76. BOOL fEnable);
  77. STDMETHODIMP IsEnabledLanguageProfile(REFCLSID rclsid,
  78. LANGID langid,
  79. REFGUID guidProfile,
  80. BOOL *pfEnable);
  81. STDMETHODIMP EnableLanguageProfileByDefault(REFCLSID rclsid,
  82. LANGID langid,
  83. REFGUID guidProfile,
  84. BOOL fEnable);
  85. STDMETHODIMP SubstituteKeyboardLayout(REFCLSID rclsid,
  86. LANGID langid,
  87. REFGUID guidProfile,
  88. HKL hKL);
  89. // ITfInputProcessorProfiles
  90. STDMETHODIMP SetLanguageProfileDisplayName(REFCLSID rclsid,
  91. LANGID langid,
  92. REFGUID guidProfile,
  93. const WCHAR *pchFile,
  94. ULONG cchFile,
  95. ULONG uResId);
  96. // ITfInputProcessorProfileSubstituteLayout
  97. STDMETHODIMP GetSubstituteKeyboardLayout(REFCLSID rclsid,
  98. LANGID langid,
  99. REFGUID guidProfile,
  100. HKL *phKL);
  101. // ITfSource
  102. STDMETHODIMP AdviseSink(REFIID riid, IUnknown *punk, DWORD *puCookie);
  103. STDMETHODIMP UnadviseSink(DWORD dwCookie);
  104. BOOL _OnLanguageChange(BOOL fChanged, LANGID langid);
  105. static CInputProcessorProfiles *_GetThis()
  106. {
  107. SYSTHREAD *psfn = GetSYSTHREAD();
  108. if (!psfn)
  109. return NULL;
  110. return psfn->pipp;
  111. }
  112. static BOOL _SetThis(CInputProcessorProfiles *_this)
  113. {
  114. SYSTHREAD *psfn = GetSYSTHREAD();
  115. if (!psfn)
  116. return FALSE;
  117. Assert(psfn->pipp == NULL || _this == NULL);
  118. psfn->pipp = _this;
  119. return TRUE;
  120. }
  121. private:
  122. CStructArray<GENERICSINK> _rgNotifySinks; // ITfLanguageProfilesNotifySink
  123. BOOL _GetTIPRegister(CLSID **prgclsid, ULONG *pulCount);
  124. DBG_ID_DECLARE;
  125. };
  126. #endif // TFELIST_H