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
119 lines
3.4 KiB
/*++
|
|
|
|
Copyright (c) 1985 - 1999, Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
imewndhd.h
|
|
|
|
Abstract:
|
|
|
|
This file defines the IME window handler Class.
|
|
|
|
Author:
|
|
|
|
Revision History:
|
|
|
|
Notes:
|
|
|
|
--*/
|
|
|
|
#ifndef _IMEWNDHD_H_
|
|
#define _IMEWNDHD_H_
|
|
|
|
#include "ctxtlist.h"
|
|
#include "globals.h"
|
|
|
|
extern LPCTSTR IMEWndHandlerName;
|
|
|
|
class CIMEWindowHandler
|
|
{
|
|
public:
|
|
CIMEWindowHandler(HWND hwnd = NULL, BOOL fDefault = FALSE);
|
|
~CIMEWindowHandler();
|
|
|
|
LRESULT ImeWndCreateHandler(DWORD style, HIMC hDefIMC);
|
|
LRESULT ImeWndCreateHandler(LPCREATESTRUCT lpcs);
|
|
|
|
HIMC ImeGetImc()
|
|
{
|
|
return m_imeui.hIMC;
|
|
}
|
|
|
|
VOID ImeSetWnd(HWND hwnd)
|
|
{
|
|
m_imeui.hImeWnd = hwnd;
|
|
}
|
|
|
|
LRESULT ImeWndProcWorker(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode = TRUE);
|
|
|
|
private:
|
|
LRESULT _ImeWndProcWorker(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode, CActiveIMM* pActiveIMM);
|
|
|
|
public:
|
|
VOID ImeWndFinalDestroyHandler();
|
|
|
|
private:
|
|
VOID ImeWndDestroyHandler();
|
|
LRESULT ImeSystemHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode, CActiveIMM* pActiveIMM);
|
|
LRESULT ImeSelectHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode, CActiveIMM* pActiveIMM);
|
|
LRESULT ImeControlHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode, CActiveIMM* pActiveIMM);
|
|
LRESULT ImeSetContextHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode, CActiveIMM* pActiveIMM);
|
|
LRESULT ImeNotifyHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode, CActiveIMM* pActiveIMM);
|
|
LRESULT ImeMsImeHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode, CActiveIMM* pActiveIMM);
|
|
|
|
LRESULT SendMessageToUI(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode, CActiveIMM* pActiveIMM);
|
|
|
|
LRESULT ImeActivateLayout(HKL hSelKL, CActiveIMM* pActiveIMM);
|
|
VOID ImeSetImc(HIMC hIMC, CActiveIMM* pActiveIMM);
|
|
|
|
VOID ImeMarkUsedContext(HWND hImeWnd, HIMC hIMC, CActiveIMM* pActiveIMM);
|
|
BOOL ImeIsUsableContext(HWND hImeWnd, HIMC hIMC, CActiveIMM* pActiveIMM);
|
|
BOOL ImeBroadCastMsg(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL fUnicode);
|
|
|
|
int IsIMEHandler()
|
|
{
|
|
return (m_imeui.nCntInIMEProc);
|
|
}
|
|
|
|
BOOL IsMsImeMessage(UINT uMsg)
|
|
{
|
|
if (uMsg == WM_MSIME_SERVICE ||
|
|
uMsg == WM_MSIME_UIREADY ||
|
|
uMsg == WM_MSIME_RECONVERTREQUEST ||
|
|
uMsg == WM_MSIME_RECONVERT ||
|
|
uMsg == WM_MSIME_DOCUMENTFEED ||
|
|
uMsg == WM_MSIME_QUERYPOSITION ||
|
|
uMsg == WM_MSIME_MODEBIAS ||
|
|
uMsg == WM_MSIME_SHOWIMEPAD ||
|
|
uMsg == WM_MSIME_MOUSE ||
|
|
uMsg == WM_MSIME_KEYMAP)
|
|
return TRUE;
|
|
else
|
|
return FALSE;
|
|
}
|
|
|
|
//
|
|
// Enumrate callbacks
|
|
//
|
|
static ENUM_RET EnumInputContextCallback(HIMC hIMC,
|
|
CContextList* pList);
|
|
|
|
private:
|
|
typedef struct tagIMEUI {
|
|
HWND hImeWnd;
|
|
HIMC hIMC;
|
|
LONG nCntInIMEProc; // Non-zero if hwnd has called into ImeWndProc.
|
|
BOOL fDefault:1; // TRUE if this is the default IME.
|
|
} IMEUI;
|
|
IMEUI m_imeui;
|
|
|
|
HKL m_hKL_UnSelect; // Use in ImeActivateLayout() for unselect hKL value.
|
|
};
|
|
|
|
|
|
|
|
CIMEWindowHandler* GetImeWndHandler(HWND hwnd, BOOL fDefault = FALSE);
|
|
|
|
|
|
#endif // _IMEWNDHD_H_
|