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.

119 lines
3.4 KiB

  1. /*++
  2. Copyright (c) 1985 - 1999, Microsoft Corporation
  3. Module Name:
  4. imewndhd.h
  5. Abstract:
  6. This file defines the IME window handler Class.
  7. Author:
  8. Revision History:
  9. Notes:
  10. --*/
  11. #ifndef _IMEWNDHD_H_
  12. #define _IMEWNDHD_H_
  13. #include "ctxtlist.h"
  14. #include "globals.h"
  15. extern LPCTSTR IMEWndHandlerName;
  16. class CIMEWindowHandler
  17. {
  18. public:
  19. CIMEWindowHandler(HWND hwnd = NULL, BOOL fDefault = FALSE);
  20. ~CIMEWindowHandler();
  21. LRESULT ImeWndCreateHandler(DWORD style, HIMC hDefIMC);
  22. LRESULT ImeWndCreateHandler(LPCREATESTRUCT lpcs);
  23. HIMC ImeGetImc()
  24. {
  25. return m_imeui.hIMC;
  26. }
  27. VOID ImeSetWnd(HWND hwnd)
  28. {
  29. m_imeui.hImeWnd = hwnd;
  30. }
  31. LRESULT ImeWndProcWorker(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode = TRUE);
  32. private:
  33. LRESULT _ImeWndProcWorker(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode, CActiveIMM* pActiveIMM);
  34. public:
  35. VOID ImeWndFinalDestroyHandler();
  36. private:
  37. VOID ImeWndDestroyHandler();
  38. LRESULT ImeSystemHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode, CActiveIMM* pActiveIMM);
  39. LRESULT ImeSelectHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode, CActiveIMM* pActiveIMM);
  40. LRESULT ImeControlHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode, CActiveIMM* pActiveIMM);
  41. LRESULT ImeSetContextHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode, CActiveIMM* pActiveIMM);
  42. LRESULT ImeNotifyHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode, CActiveIMM* pActiveIMM);
  43. LRESULT ImeMsImeHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode, CActiveIMM* pActiveIMM);
  44. LRESULT SendMessageToUI(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode, CActiveIMM* pActiveIMM);
  45. LRESULT ImeActivateLayout(HKL hSelKL, CActiveIMM* pActiveIMM);
  46. VOID ImeSetImc(HIMC hIMC, CActiveIMM* pActiveIMM);
  47. VOID ImeMarkUsedContext(HWND hImeWnd, HIMC hIMC, CActiveIMM* pActiveIMM);
  48. BOOL ImeIsUsableContext(HWND hImeWnd, HIMC hIMC, CActiveIMM* pActiveIMM);
  49. BOOL ImeBroadCastMsg(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode);
  50. int IsIMEHandler()
  51. {
  52. return (m_imeui.nCntInIMEProc);
  53. }
  54. BOOL IsMsImeMessage(UINT uMsg)
  55. {
  56. if (uMsg == WM_MSIME_SERVICE ||
  57. uMsg == WM_MSIME_UIREADY ||
  58. uMsg == WM_MSIME_RECONVERTREQUEST ||
  59. uMsg == WM_MSIME_RECONVERT ||
  60. uMsg == WM_MSIME_DOCUMENTFEED ||
  61. uMsg == WM_MSIME_QUERYPOSITION ||
  62. uMsg == WM_MSIME_MODEBIAS ||
  63. uMsg == WM_MSIME_SHOWIMEPAD ||
  64. uMsg == WM_MSIME_MOUSE ||
  65. uMsg == WM_MSIME_KEYMAP)
  66. return TRUE;
  67. else
  68. return FALSE;
  69. }
  70. //
  71. // Enumrate callbacks
  72. //
  73. static ENUM_RET EnumInputContextCallback(HIMC hIMC,
  74. CContextList* pList);
  75. private:
  76. typedef struct tagIMEUI {
  77. HWND hImeWnd;
  78. HIMC hIMC;
  79. LONG nCntInIMEProc; // Non-zero if hwnd has called into ImeWndProc.
  80. BOOL fDefault:1; // TRUE if this is the default IME.
  81. } IMEUI;
  82. IMEUI m_imeui;
  83. HKL m_hKL_UnSelect; // Use in ImeActivateLayout() for unselect hKL value.
  84. };
  85. CIMEWindowHandler* GetImeWndHandler(HWND hwnd, BOOL fDefault = FALSE);
  86. #endif // _IMEWNDHD_H_