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.

116 lines
2.6 KiB

  1. /*++
  2. Copyright (c) 1985 - 1999, Microsoft Corporation
  3. Module Name:
  4. profile.h
  5. Abstract:
  6. This file defines the CActiveIMMProfiles Class.
  7. Author:
  8. Revision History:
  9. Notes:
  10. --*/
  11. #ifndef _PROFILE_H
  12. #define _PROFILE_H
  13. #include "ats.h"
  14. #include "template.h"
  15. #include "imtls.h"
  16. class CAImeProfile : public IAImeProfile
  17. {
  18. public:
  19. CAImeProfile();
  20. virtual ~CAImeProfile();
  21. public:
  22. //
  23. // IUnknown methods
  24. //
  25. STDMETHODIMP QueryInterface(REFIID riid, void **ppvObj);
  26. STDMETHODIMP_(ULONG) AddRef(void);
  27. STDMETHODIMP_(ULONG) Release(void);
  28. //
  29. // IAImeProfile methods
  30. //
  31. STDMETHODIMP Activate(void);
  32. STDMETHODIMP Deactivate(void);
  33. STDMETHODIMP ChangeCurrentKeyboardLayout(HKL hKL);
  34. STDMETHODIMP GetLangId(LANGID *plid);
  35. STDMETHODIMP GetCodePageA(UINT* puCodePage);
  36. STDMETHODIMP GetKeyboardLayout(HKL* phkl);
  37. STDMETHODIMP IsIME(HKL hKL);
  38. STDMETHODIMP GetActiveLanguageProfile(IN HKL hKL,
  39. IN GUID catid,
  40. OUT TF_LANGUAGEPROFILE* pLanguageProfile);
  41. public:
  42. static HRESULT CreateInstance(IUnknown *pUnkOuter, REFIID riid, void **ppvObj);
  43. protected:
  44. long m_ref;
  45. ITfInputProcessorProfiles* m_profile;
  46. CActiveLanguageProfileNotifySink* m_pActiveLanguageProfileNotifySink;
  47. //
  48. // Callbacks
  49. //
  50. static HRESULT ActiveLanguageProfileNotifySinkCallback(REFGUID rguid, REFGUID rguidProfile, BOOL fActivated, void *pv);
  51. //
  52. // Enumrate callbacks
  53. //
  54. struct LANG_PROF_ENUM_ARG {
  55. IN GUID catid;
  56. OUT TF_LANGUAGEPROFILE LanguageProfile;
  57. };
  58. static ENUM_RET LanguageProfilesCallback(TF_LANGUAGEPROFILE LanguageProfile,
  59. LANG_PROF_ENUM_ARG* pLangProfEnumArg);
  60. private:
  61. LANGID LangIdFromKL(HKL hKL)
  62. {
  63. return LOWORD(hKL);
  64. }
  65. HRESULT InitProfileInstance();
  66. void ResetCache(void)
  67. {
  68. m_fInitCP = FALSE;
  69. m_fInitLangID = FALSE;
  70. m_fInitHKL = FALSE;
  71. }
  72. private:
  73. LANGID m_SavedLangId;
  74. BOOL m_fActivateThread : 1; // TRUE: Activate this thread.
  75. BOOL m_fInitCP : 1; // TRUE: initialized CodePage value.
  76. BOOL m_fInitLangID : 1; // TRUE: initialized LangID value.
  77. BOOL m_fInitHKL : 1; // TRUE: initialized hKL value.
  78. UINT m_cp;
  79. LANGID m_LangID;
  80. HKL m_hKL;
  81. };
  82. #endif // _PROFILE_H