IME 개발을 위한 Win32 다국어 IME 개요
버전 1.32
최종 수정일: 1998년 4월 1일, 번역: Luciano Jeong
CANDIDATEFORM
CANDIDATEFORM 구조체는 IMC_GETCANDIDATEPOS and IMC_SETCANDIDATEPOS 메시지에서 사용됩니다.
/* CANDIDATEFORM */ typedef tagCANDIDATEFORM { DWORD dwIndex; DWORD dwStyle; POINT ptCurrentPos; REC rcArea; } CANDIDATEFORM;
CANDIDATEFORM 구조체의 멤버
dwIndex
후보 목록의 ID를 지정합니다. 0부터 시작하는 후보목록의 인덱스입니다.
dwStyle
CFS_CANDIDATEPOS 또는 CFS_EXCLUDE를 지정합니다. 근거리 캐럿 IME(near-caret IME)에서 dwStyle은 또한 CFS_DEFAULT가 될 수 있습니다. dwStyle이 CFS_DEFAULT면 근거리 캐럿 IME는 후보 목록의 위치를 다른 사용자 인터페이스 구성요소에 따라 조정할 수 있습니다.
ptCurrentPos
dwStyle에 종속되어 있습니다. dwStyle이 CFS_CANDIDATEPOS이면 ptCurrentPos 멤버는 후보 목록 윈도우가 나타나기에 권장되는 위치를 지정합니다. dwStyle이 CFS_EXCLUDE이면 ptCurrentPos는 주로 캐럿의 위치와 같은 현재 지시되는 위치로 후보 목록 윈도우의 위치를 지정합니다.
rcArea
CFS_EXCLUDE인 경우 후보 목록 윈도우가 표시되지 말아야 할 사각 영역을 지정합니다.
STYLEBUF
STYLEBUF 구조체는 스타일의 이름과 식별자를 포함합니다.
/* STYLEBUF */ typedef struct tagSTYLEBUF { DWORD dwStyle; TCHAR szDescription[32] } STYLEBUF;
STYLEBUF 구조체의 멤버
dwStyle
스타일의 식별 번호
szDescription
이 스타일에게 부여된 문자열 이름
문자열의 스타일은 IME_REGWORD_STYLE_EUDC를 포함합니다. EUDC의 범위는 IME_REGWORD_STYLE_USER_FIRST와 IME_REGWORD_STYLE_USER_LAST 사이입니다.
IME_REGWORD_STYLE_USER_FIRST과 IME_REGWORD_STYLE_USER_LAST의 상수 범위는 사적으로 사용될 IME ISV 스타일을 위한 범위입니다. 이 범위 내에서 IME ISV은 스타일을 자유롭게 정의할 수 있습니다.
SOFTKBDDATA
The SOFTKBDDATA defines the DBCS codes for each virtual key.SOFTKBDDATA 구조체는 가상 글쇠 코드(virtual key)에 대한 더블 바이트 코드를 정의합니다.
/* SOFTKBDDATA */ typedef struct tagSOFTKBDDATA { UINT uCount; WORD wCode[][256] } SOFTKBDDATA;
SOFTKBDDATA 구조체의 멤버
uCount
내부 문자 코드 배열에 연결된 256개 워드의 가상 글쇠코드의 수입니다. 즉 wCode[256]의 1차원 배열의 개수
wCode[][256]
내부 문자 코드 배열에 연결된 256개 워드의 가상 글쇠코드입니다. 하나 이상의 가상 글쇠코드를 지정할 수 있습니다.
알림
하나의 소프트키보드에 256 워드의 배열을 둘 이상 사용하는 것이 가능합니다. 하나는 Shift를 누르지 않은 상태에서 각 글쇠를 눌렀을 때를 가정한 가상 글쇠 코드이고 다른 하나는 Shift키를 누른 상태에서 각 글쇠를 눌렀을 때를 가정한 가상 글쇠 코드입니다.
RECONVERTSTRING
RECONVERTSTRING 구조체는 IME 재변환을 위한 문자열을 정의합니다. 이 구조체는 또한 메모리 블록 내에서 재변환을 위한 다수의 문자열 중 첫 번째 문자열을 지목하기도 합니다.
/* RECONVERTSTRING */ typedef struct _tagRECONVERTSTRING { DWOPD dwSize; DWORD dwVersion; DWORD dwStrLen; DWORD dwStrOffset; DWORD dwCompStrLen; DWORD dwCompStrOffset; DWORD dwTargetStrLen; DWORD dwTargetStrOffset; } RECONVERTSTRING;
RECONVERTSTRING 구조체의 멤버
dwSize
이 구조체가 메모리블록에서 차지하는 크기입니다.
dwVersion
시스템에서 예약한 변수입니다. 이 값은 항상 0입니다.
dwStrLen
컴포지션 문자열을 포함한 문자열의 길이입니다.
dwStrOffset
이 구조체의 시작 번지로부터의 오프셋입니다. 재변환된 단어를 포함한 문자열은 여기서 지정한 위치부터 시작합니다.
dwCompStrLen
컴포지션 문자열이 될 문자열의 길이입니다.
dwCompStrOffset
컴포지션 문자열이 될 문자열이 시작되는 오프셋입니다.
dwTargetStrLen
컴포지션 문자열에서 대상이 되는 절(target clause)과 관련된 문자열의 길이입니다.
dwTargetStrOffset
컴포지션 문자열에서 대상이 되는 절(target clause)과 관련된 문자열의 오프셋입니다.
알림
RECONVERTSTRING 구조체는 Windows 98 및 Windows 2000부터 지원하는 새로운 구조체입니다. dwCompStrOffset과 dwTargetOffset 멤버는 dwStrOffset의 상대적인 위치입니다. WInndows NT 및 Windows 2000 유니코드에서 dwStrOffset, dwCompStrOffset, dwTargetStrLen는 TCHAR의 문자 수를 단위로 하고 dwStrOffset, dwCompStrOffset 및 dwTargetStrOffset은 바이트를 단위로 합니다.
덧붙임
어플리케이션이 SCS_SETRECONVERTSTRING과 SCS_QUERYRECONVERTSTRING을 동반한 ImmSetCompositionString 함수를 사용하여 재변환 과정을 시작한다면 어플리케이션은 컴포지션 문자열을 위한 버퍼뿐만 아니라 그 외 필요한 메모리를 이 구조체에 할당해야 합니다. IME는 나중에 메모리를 스스로 할당해서는 안됩니다. IME가 어떤 프로세스를 시작한다면 어플리케이션은 구조체에서 필요한 메모리 및 컴포지셩 문자열 버퍼에 필요한 메모리를 사전에 할당해야 할 것입니다.
IMEMENUITEMINFO
IMEMENUITEMINFO 구조체는 IME 메뉴 항목과 관련된 정보를 포함합니다.
/* IMEMENUITEMINFO */ typedef _tagIMEMENUITEMINFO { UINT cbSize; UINT fType; UINT fState; UINT wID; HBITMAP hbmpChecked; HBITMAP hbmpUnchecked; DWORD dwItemData; TCHAR szString[48]; HBITMAP hbmpItem; }
IMEMENUITEMINFO 구조체의 멤버
cbSize
이 구조체의 사이즈이며 단위는 바이트입니다.
fType
메뉴 항목의 유형입니다. 다음과 같은 비트플래그입니다.
값 | 의미 |
IMFT_RADIOCHECK | hbmpChecked 멤버가 NULL일 때 라디오버튼과 그 표시를 활용하여 체크 메뉴를 표시합니다. |
IMFT_SEPARATOR | 메뉴 아이템이 메뉴 구분자임을 지정합니다. 이 때 메뉴에는 가로의 구분자가 나타날 것입니다. hbmpItem과 szString 멤버는 무시됩니다. |
IMFT_SUBMENU | 메뉴 아이템이 서브메뉴를 가짐을 지정합니다. |
fState
메뉴 항목의 상태입니다. 아래의 비트 플래그가 하나 이상 조합되어 있습니다.
값 | 의미 |
IMFS_CHECKED | 메뉴 항목에 체크가 되어 있습니다. 체크 메뉴 항목에 대해서는 hbmpChecked 멤버를 참조하십시오 |
IMFS_DEFAULT | 기본 메뉴 항목입니다. |
IMFS_DISABLED | 메뉴 항목이 비활성화되어 있습니다. 그러나 회색으로 나타나지는 않습니다. |
IMFS_ENABLED | 메뉴 항목이 활성화되어 있습니다. 기본 속성입니다. |
IMFS_GRAYED | 비활성화 되어있으면서 메뉴 항목도 회색으로 나타납니다. |
IMFS_HILITE | 메뉴 항목이 강조 표시되어 있습니다. |
IMFS_UNCHECKED | 메뉴 항목이 체크 해제되어있습니다. 자세한 정보는 hbmpUnchecked 멤버를 참조하십시오 |
IMFS_UNHILITE | 기본 속성으로 메뉴 아이템에 강조 표시를 두지 않습니다. |
wID
어플리케이션이 메뉴 항목에 부여하는 16비트의 식별 번호입니다.
hbmpChecked
체크 될 경우 표시할 비트맵에 대한 핸들입니다. NULL일 경우 기본 비트맵이 사용됩니다. 메뉴 항목이 IMFT_RADIOCHECK 형식으로 지정된 경우 기본 비트맵은 불렛(bullet) 모양입니다. 그 외에는 체크 모양입니다.
hbmpUnchecked
체크되지 않은 경우 표시할 비트맵에 대한 핸들입니다. NULL일 경우 비트맵이 사용되지 않습니다.
dwItemData
어플리케이션이 메뉴 항목에 부여하는 데이터입니다.
szString
메뉴 항목에 표시할 텍스트입니다. NULL 문자로 끝나는 문자열이어야 합니다.
hbmpItem
화면에 표시할 비트맵입니다.
알림
IMEMENUITEMINFO 구조체는 Windows 98 및 Windows 2000에서 새로 추가된 구조체입니다. 유니코드 버전의 구조체에서 szString은 WCHAR형으로 문자열을 받습니다.
- 끝 -