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.

97 lines
2.2 KiB

  1. #include "private.h"
  2. #include "pad.h"
  3. #include "padcb.h"
  4. void CPadCB::Initialize(void *pPad)
  5. {
  6. m_pPad = pPad;
  7. }
  8. CPadCB::CPadCB()
  9. {
  10. m_cRef = 1;
  11. m_pPad = NULL;
  12. }
  13. CPadCB::~CPadCB()
  14. {
  15. }
  16. HRESULT __stdcall CPadCB::QueryInterface(REFIID refiid, LPVOID* ppv)
  17. {
  18. if(refiid == IID_IUnknown)
  19. {
  20. *ppv = static_cast<IUnknown *>(this);
  21. }
  22. else if(refiid == IID_IImeCallback)
  23. {
  24. *ppv = static_cast<IImeCallback *>(this);
  25. }
  26. else
  27. {
  28. *ppv = NULL;
  29. return E_NOINTERFACE;
  30. }
  31. reinterpret_cast<IUnknown *>(*ppv)->AddRef();
  32. return S_OK;
  33. }
  34. ULONG __stdcall CPadCB::AddRef()
  35. {
  36. return InterlockedIncrement(&m_cRef);
  37. }
  38. ULONG __stdcall CPadCB::Release()
  39. {
  40. if(InterlockedDecrement(&m_cRef) == 0)
  41. {
  42. //delete this;
  43. return 0;
  44. }
  45. return m_cRef;
  46. }
  47. HRESULT __stdcall CPadCB::GetApplicationHWND(HWND *pHwnd)
  48. {
  49. //----------------------------------------------------------------
  50. //Get Application's Window Handle.
  51. //----------------------------------------------------------------
  52. if(pHwnd)
  53. {
  54. *pHwnd = GetFocus(); // tmp tmp UI::GetActiveAppWnd();
  55. return S_OK;
  56. }
  57. return S_FALSE;
  58. }
  59. HRESULT __stdcall CPadCB::Notify(UINT notify, WPARAM wParam, LPARAM lParam)
  60. {
  61. #ifdef _DEBUG
  62. CHAR szBuf[256];
  63. wsprintf(szBuf, "CPadCB::NOtify notify [%d]\n", notify);
  64. OutputDebugString(szBuf);
  65. #endif
  66. switch(notify)
  67. {
  68. case IMECBNOTIFY_IMEPADOPENED:
  69. case IMECBNOTIFY_IMEPADCLOSED:
  70. //----------------------------------------------------------------
  71. //ImePad has Closed. repaint toolbar...
  72. //----------------------------------------------------------------
  73. //CPad::IMEPadNotify();
  74. if (m_pPad)
  75. {
  76. CPadCore* pPad = (CPadCore*)m_pPad;
  77. pPad->IMEPadNotify((notify == IMECBNOTIFY_IMEPADCLOSED) ? FALSE : TRUE);
  78. }
  79. break;
  80. default:
  81. break;
  82. }
  83. return S_OK;
  84. UNREFERENCED_PARAMETER(wParam);
  85. UNREFERENCED_PARAMETER(lParam);
  86. }