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.
122 lines
2.9 KiB
122 lines
2.9 KiB
/****************************************************************************
|
|
CIMECB.CPP
|
|
|
|
Owner: cslim
|
|
Copyright (c) 1997-1999 Microsoft Corporation
|
|
|
|
IME PAD wrapper functions
|
|
|
|
History:
|
|
23-APR-1999 cslim Created
|
|
*****************************************************************************/
|
|
#include "precomp.h"
|
|
#include "cimecb.h"
|
|
#include "pad.h"
|
|
#include "UI.h"
|
|
|
|
static LPCImeCallback g_lpCImeCallback = NULL;
|
|
|
|
LPCImeCallback CImeCallback::Fetch(VOID)
|
|
{
|
|
if(g_lpCImeCallback) {
|
|
return g_lpCImeCallback;
|
|
}
|
|
g_lpCImeCallback = new CImeCallback();
|
|
return g_lpCImeCallback;
|
|
}
|
|
|
|
VOID
|
|
CImeCallback::Destroy(VOID)
|
|
{
|
|
//OutputDebugString("CImeCallback::Destroy START\n");
|
|
if(g_lpCImeCallback) {
|
|
//OutputDebugString("--> g_lpCImeCallback is allocated\n");
|
|
delete g_lpCImeCallback;
|
|
g_lpCImeCallback = NULL;
|
|
}
|
|
//OutputDebugString("CImeCallback::Destroy END\n");
|
|
}
|
|
|
|
CImeCallback::CImeCallback()
|
|
{
|
|
m_cRef = 1;
|
|
}
|
|
|
|
CImeCallback::~CImeCallback()
|
|
{
|
|
|
|
}
|
|
|
|
HRESULT __stdcall CImeCallback::QueryInterface(REFIID refiid, LPVOID* ppv)
|
|
{
|
|
if (ppv == NULL)
|
|
return E_POINTER;
|
|
|
|
if(refiid == IID_IUnknown) {
|
|
*ppv = static_cast<IUnknown *>(this);
|
|
}
|
|
else if(refiid == IID_IImeCallback) {
|
|
*ppv = static_cast<IImeCallback *>(this);
|
|
}
|
|
else {
|
|
*ppv = NULL;
|
|
return E_NOINTERFACE;
|
|
}
|
|
reinterpret_cast<IUnknown *>(*ppv)->AddRef();
|
|
return S_OK;
|
|
}
|
|
|
|
ULONG __stdcall CImeCallback::AddRef()
|
|
{
|
|
return InterlockedIncrement(&m_cRef);
|
|
}
|
|
|
|
ULONG __stdcall CImeCallback::Release()
|
|
{
|
|
if(InterlockedDecrement(&m_cRef) == 0) {
|
|
//Delete this;
|
|
return 0;
|
|
}
|
|
return m_cRef;
|
|
}
|
|
|
|
HRESULT __stdcall CImeCallback::GetApplicationHWND(HWND *pHwnd)
|
|
{
|
|
//----------------------------------------------------------------
|
|
//Get Application's Window Handle.
|
|
//----------------------------------------------------------------
|
|
if(pHwnd) {
|
|
*pHwnd = GetActiveUIWnd();
|
|
return S_OK;
|
|
}
|
|
return S_FALSE;
|
|
}
|
|
|
|
HRESULT __stdcall CImeCallback::Notify(UINT notify, WPARAM wParam, LPARAM lParam)
|
|
{
|
|
HWND hUIWnd;
|
|
|
|
#ifdef _DEBUG
|
|
CHAR szBuf[256];
|
|
wsprintf(szBuf, "Cimecallback::NOtify notify [%d]\n", notify);
|
|
OutputDebugString(szBuf);
|
|
#endif
|
|
switch(notify) {
|
|
case IMECBNOTIFY_IMEPADCLOSED:
|
|
//----------------------------------------------------------------
|
|
//ImePad has Closed. repaint toolbar...
|
|
//----------------------------------------------------------------
|
|
// UI::IMEPadNotify();
|
|
hUIWnd = GetActiveUIWnd();
|
|
if (hUIWnd)
|
|
{
|
|
OurPostMessage(hUIWnd, WM_MSIME_UPDATETOOLBAR, 0, 0);
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return S_OK;
|
|
UNREFERENCED_PARAMETER(wParam);
|
|
UNREFERENCED_PARAMETER(lParam);
|
|
}
|