284 lines
8 KiB
C
284 lines
8 KiB
C
|
/******************************************************************************
|
||
|
*
|
||
|
* File Name: wansung.h
|
||
|
*
|
||
|
* - Global Header file for IME of Chicago-H.
|
||
|
*
|
||
|
* Author: Beomseok Oh (BeomOh)
|
||
|
*
|
||
|
* Copyright (C) Microsoft Corp 1993-1994. All rights reserved.
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
|
||
|
|
||
|
#ifndef _INC_WANSUNG
|
||
|
#define _INC_WANSUNG // #defined if WANSUNG.H has been included.
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" { // Assume C declarations for C++.
|
||
|
#endif // __cplusplus
|
||
|
|
||
|
#include <imm.h>
|
||
|
#include <ime.h>
|
||
|
#include <immp.h>
|
||
|
#include <prsht.h>
|
||
|
#include <winuserp.h>
|
||
|
|
||
|
#define MDB_LOG 0x0000
|
||
|
#define MDB_ERROR 0x0001
|
||
|
#define MDB_SUPPRESS 0x8000
|
||
|
#define MDB_FUNCLOG (MDB_SUPPRESS | MDB_LOG)
|
||
|
|
||
|
#ifdef DEBUG
|
||
|
void _cdecl _MyDebugOut(UINT, LPCSTR, ...);
|
||
|
#define MyDebugOut _MyDebugOut
|
||
|
#define FUNCTIONLOG(sz) MyDebugOut(MDB_FUNCLOG, sz"().")
|
||
|
#define TRAP(cond) { if (cond) _asm int 3 }
|
||
|
#else
|
||
|
#define MyDebugOut 1 ? (void)0 : (void)
|
||
|
#define FUNCTIONLOG(sz)
|
||
|
#define TRAP(cond)
|
||
|
#endif // DEBUG
|
||
|
|
||
|
#define HANDLE_DUMMYMSG(message) case (message): return 0
|
||
|
|
||
|
#define CFILL 1 // Fill code for Consonant
|
||
|
#define VFILL 2 // Fill code for Vowel
|
||
|
|
||
|
enum { NUL, CHO, JUNG, JONG }; // Type of States.
|
||
|
|
||
|
// Constant definitions
|
||
|
#define HANGEUL_LPARAM 0xFFF10001L
|
||
|
#define HANJA_LPARAM 0xFFF20001L
|
||
|
#define VKBACK_LPARAM 0x000E0001L
|
||
|
|
||
|
// For Dialog Box
|
||
|
#define IDD_2BEOL 100
|
||
|
#define IDD_3BEOL1 101
|
||
|
#define IDD_3BEOL2 102
|
||
|
#define IDD_COMPDEL 103
|
||
|
#define IDD_UHCCHAR 104
|
||
|
|
||
|
// For Track Popup Menu
|
||
|
#define IDM_ABOUT 200
|
||
|
#define IDM_CONFIG 201
|
||
|
#define IDS_ABOUT 202
|
||
|
#define IDS_CONFIG 203
|
||
|
|
||
|
// For Property Sheet
|
||
|
#define IDS_PROGRAM 300
|
||
|
#define DLG_GENERAL 301
|
||
|
|
||
|
// For User Interface
|
||
|
#define COMP_WINDOW 0
|
||
|
#define STATE_WINDOW 1
|
||
|
#define CAND_WINDOW 2
|
||
|
#define STATEXSIZE 67
|
||
|
#define STATEYSIZE 23
|
||
|
#define COMPSIZE 22
|
||
|
#define CANDXSIZE 320
|
||
|
#define CANDYSIZE 30
|
||
|
#define GAPX 10
|
||
|
#define GAPY 0
|
||
|
|
||
|
// Data structure definitions
|
||
|
typedef struct tagUIINSTANCE
|
||
|
{
|
||
|
HWND rghWnd[3];
|
||
|
} UIINSTANCE;
|
||
|
typedef UIINSTANCE NEAR *PUIINSTANCE;
|
||
|
typedef UIINSTANCE FAR *LPUIINSTANCE;
|
||
|
|
||
|
typedef struct tagJOHABCODE // For components of Johab code
|
||
|
{
|
||
|
WORD jong :5;
|
||
|
WORD jung :5;
|
||
|
WORD cho :5;
|
||
|
WORD flag :1;
|
||
|
} JOHABCODE;
|
||
|
|
||
|
typedef struct tagHIGH_LOW // For high byte and low byte
|
||
|
{
|
||
|
BYTE low, high;
|
||
|
} HIGH_LOW;
|
||
|
|
||
|
typedef union tagJOHAB // For Johab character code
|
||
|
{
|
||
|
JOHABCODE h;
|
||
|
WORD w;
|
||
|
} JOHAB;
|
||
|
|
||
|
typedef union tagWANSUNG // For Wansung character code
|
||
|
{
|
||
|
HIGH_LOW e;
|
||
|
WORD w;
|
||
|
} WANSUNG;
|
||
|
|
||
|
typedef struct tagIMESTRUCT32
|
||
|
{
|
||
|
WORD fnc; // function code
|
||
|
WORD wParam; // word parameter
|
||
|
WORD wCount; // word counter
|
||
|
WORD dchSource; // offset to Source from top of memory object
|
||
|
WORD dchDest; // offset to Desrination from top of memory object
|
||
|
DWORD lParam1;
|
||
|
DWORD lParam2;
|
||
|
DWORD lParam3;
|
||
|
} IMESTRUCT32;
|
||
|
|
||
|
typedef IMESTRUCT32 *PIMESTRUCT32;
|
||
|
typedef IMESTRUCT32 NEAR *NPIMESTRUCT32;
|
||
|
typedef IMESTRUCT32 FAR *LPIMESTRUCT32;
|
||
|
|
||
|
#define lpSource(lpks) (LPTSTR)((LPSTR)(lpks)+(lpks)->dchSource)
|
||
|
#define lpDest(lpks) (LPTSTR)((LPSTR)(lpks)+(lpks)->dchDest)
|
||
|
|
||
|
// ESCAPE.C
|
||
|
int EscAutomata(HIMC, LPIMESTRUCT32, BOOL);
|
||
|
int EscGetOpen(HIMC, LPIMESTRUCT32);
|
||
|
int EscHanjaMode(HIMC, LPIMESTRUCT32, BOOL);
|
||
|
int EscSetOpen(HIMC, LPIMESTRUCT32);
|
||
|
int EscMoveIMEWindow(HIMC, LPIMESTRUCT32);
|
||
|
|
||
|
// HATMT.C
|
||
|
BOOL HangeulAutomata(BYTE, LPDWORD, LPCOMPOSITIONSTRING);
|
||
|
BOOL MakeInterim(LPCOMPOSITIONSTRING);
|
||
|
void MakeFinal(BOOL, LPDWORD, BOOL, LPCOMPOSITIONSTRING);
|
||
|
void MakeFinalMsgBuf(HIMC, WPARAM);
|
||
|
void Banja2Junja(BYTE, LPDWORD, LPCOMPOSITIONSTRING);
|
||
|
BOOL CheckMCho(BYTE);
|
||
|
BOOL CheckMJung(BYTE);
|
||
|
BOOL CheckMJong(BYTE);
|
||
|
#ifndef JOHAB_IME
|
||
|
WORD Johab2Wansung(WORD);
|
||
|
WORD Wansung2Johab(WORD);
|
||
|
#endif
|
||
|
#ifdef XWANSUNG_IME
|
||
|
//PTHREADINFO PtiCurrent(VOID);
|
||
|
BOOL IsPossibleToUseUHC();
|
||
|
BOOL UseXWansung(void);
|
||
|
#endif
|
||
|
void Code2Automata(void);
|
||
|
void UpdateOpenCloseState(HIMC);
|
||
|
int SearchHanjaIndex(WORD);
|
||
|
|
||
|
// HKEYTBL.C
|
||
|
extern JOHAB JohabChar;
|
||
|
extern WANSUNG WansungChar;
|
||
|
|
||
|
extern UINT uCurrentInputMethod;
|
||
|
extern BOOL fCurrentCompDel;
|
||
|
extern BOOL fComplete;
|
||
|
#ifdef XWANSUNG_IME
|
||
|
extern BOOL fCurrentUseXW;
|
||
|
#endif
|
||
|
extern BYTE bState;
|
||
|
extern BYTE Cho1, Cho2, mCho;
|
||
|
extern BYTE Jung1, Jung2, mJung;
|
||
|
extern BYTE Jong1, Jong2, mJong;
|
||
|
|
||
|
extern const TCHAR szIMEKey[];
|
||
|
#ifdef XWANSUNG_IME
|
||
|
extern const TCHAR szUseXW[];
|
||
|
#endif
|
||
|
extern const TCHAR szInputMethod[];
|
||
|
extern const TCHAR szCompDel[];
|
||
|
extern const TCHAR szStatePos[];
|
||
|
extern const TCHAR szCandPos[];
|
||
|
|
||
|
extern const BYTE Cho2Jong[21];
|
||
|
extern const BYTE Jong2Cho[30];
|
||
|
|
||
|
extern const BYTE rgbMChoTbl[][3];
|
||
|
extern const BYTE rgbMJungTbl[][3];
|
||
|
extern const BYTE rgbMJongTbl[][3];
|
||
|
|
||
|
extern const BYTE bHTable[3][256][4];
|
||
|
|
||
|
#ifndef JOHAB_IME
|
||
|
extern const WORD wKSCompCode[51];
|
||
|
extern const WORD wKSCompCode2[30];
|
||
|
#ifdef XWANSUNG_IME
|
||
|
extern const WORD iTailFirst[];
|
||
|
extern const WORD iTailFirstX[];
|
||
|
extern const BYTE iLeadMap[];
|
||
|
extern const BYTE iLeadMapX[];
|
||
|
extern const BYTE iTailOff[];
|
||
|
extern const BYTE iTailOffX[];
|
||
|
extern const BYTE bTailTable[];
|
||
|
#else
|
||
|
extern const WORD wKSCharCode[2350];
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
extern const WORD wHanjaMap[491];
|
||
|
extern const WORD wHanjaIndex[492];
|
||
|
extern const WORD wHanja[];
|
||
|
|
||
|
// IMEUI.C
|
||
|
extern const TCHAR szUIClassName[], szStateWndName[], szCompWndName[], szCandWndName[];
|
||
|
extern HBITMAP hBMClient, hBMComp, hBMCand, hBMCandNum, hBMCandArr[2];
|
||
|
extern HBITMAP hBMEng, hBMHan, hBMBan, hBMJun, hBMChi[2];
|
||
|
extern HCURSOR hIMECursor;
|
||
|
extern HFONT hFontFix;
|
||
|
|
||
|
extern RECT rcScreen;
|
||
|
extern POINT ptDefPos[3];
|
||
|
extern POINT ptState;
|
||
|
extern POINT ptComp;
|
||
|
extern POINT ptCand;
|
||
|
|
||
|
BOOL InitializeResource(HANDLE);
|
||
|
BOOL RegisterUIClass(HANDLE);
|
||
|
BOOL UnregisterUIClass(HANDLE);
|
||
|
void DrawBitmap(HDC, long, long, HBITMAP);
|
||
|
void ShowWindowBorder(RECT);
|
||
|
void ShowHideUIWnd(HIMC, LPUIINSTANCE, BOOL, LPARAM);
|
||
|
LRESULT CALLBACK UIWndProc(HWND, UINT, WPARAM, LPARAM);
|
||
|
LRESULT CALLBACK StateWndProc(HWND, UINT, WPARAM, LPARAM);
|
||
|
LRESULT CALLBACK CompWndProc(HWND, UINT, WPARAM, LPARAM);
|
||
|
LRESULT CALLBACK CandWndProc(HWND, UINT, WPARAM, LPARAM);
|
||
|
LRESULT DoIMEControl(HWND, WPARAM, LPARAM);
|
||
|
LRESULT DoIMENotify(HWND, WPARAM, LPARAM);
|
||
|
BOOL State_OnSetCursor(HWND, HWND, UINT, UINT);
|
||
|
void State_OnMouseMove(HWND, int, int, UINT);
|
||
|
void State_OnLButtonDown(HWND, BOOL, int, int, UINT);
|
||
|
void State_OnLButtonUp(HWND, int, int, UINT);
|
||
|
void State_OnRButtonDown(HWND, BOOL, int, int, UINT);
|
||
|
void State_OnRButtonUp(HWND, int, int, UINT);
|
||
|
HBITMAP MyCreateMappedBitmap(HINSTANCE, LPTSTR);
|
||
|
void GetSysColorsAndMappedBitmap(void);
|
||
|
void State_OnPaint(HWND);
|
||
|
void State_OnCommand(HWND, int, HWND, UINT);
|
||
|
void State_OnMyMenu(HWND);
|
||
|
void State_OnMyConfig(HWND);
|
||
|
void State_OnMyAbout(HWND);
|
||
|
BOOL Comp_OnSetCursor(HWND, HWND, UINT, UINT);
|
||
|
void Comp_OnMouseMove(HWND, int, int, UINT);
|
||
|
void Comp_OnLButtonDown(HWND, BOOL, int, int, UINT);
|
||
|
void Comp_OnLButtonUp(HWND, int, int, UINT);
|
||
|
void Comp_OnRButtonDown(HWND, BOOL, int, int, UINT);
|
||
|
void Comp_OnRButtonUp(HWND, int, int, UINT);
|
||
|
void Comp_OnPaint(HWND);
|
||
|
BOOL Cand_OnSetCursor(HWND, HWND, UINT, UINT);
|
||
|
void Cand_OnMouseMove(HWND, int, int, UINT);
|
||
|
void Cand_OnLButtonDown(HWND, BOOL, int, int, UINT);
|
||
|
void Cand_OnLButtonUp(HWND, int, int, UINT);
|
||
|
void Cand_OnRButtonDown(HWND, BOOL, int, int, UINT);
|
||
|
void Cand_OnRButtonUp(HWND, int, int, UINT);
|
||
|
void Cand_OnPaint(HWND);
|
||
|
|
||
|
// MAIN.C
|
||
|
extern HINSTANCE hInst;
|
||
|
extern int iTotalNumMsg;
|
||
|
|
||
|
BOOL GenerateCandidateList(HIMC);
|
||
|
void AddPage(LPPROPSHEETHEADER, UINT, DLGPROC);
|
||
|
BOOL CALLBACK GeneralDlgProc(HWND, UINT, WPARAM, LPARAM);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
} // End of extern "C" {.
|
||
|
#endif // __cplusplus
|
||
|
|
||
|
#endif // _INC_WANSUNG
|