관리 메뉴

tapito.tistory.com

Windows DDK 문서 IMEIMES.DOC - 11. IME File Format and Data Structures (IME 파일 포맷 및 데이터 구조) #5 (완결) 본문

Application Programming Interface/Windows API

Windows DDK 문서 IMEIMES.DOC - 11. IME File Format and Data Structures (IME 파일 포맷 및 데이터 구조) #5 (완결)

Tapito 2014.09.29 13:11

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부터 지원하는 새로운 구조체입니다. dwCompStrOffsetdwTargetOffset 멤버는 dwStrOffset의 상대적인 위치입니다. WInndows NT 및 Windows 2000 유니코드에서 dwStrOffset, dwCompStrOffset, dwTargetStrLen는 TCHAR의 문자 수를 단위로 하고 dwStrOffset, dwCompStrOffsetdwTargetStrOffset은 바이트를 단위로 합니다.

덧붙임

어플리케이션이 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_RADIOCHECKhbmpChecked 멤버가 NULL일 때 라디오버튼과 그 표시를 활용하여 체크 메뉴를 표시합니다.
IMFT_SEPARATOR메뉴 아이템이 메뉴 구분자임을 지정합니다. 이 때 메뉴에는 가로의 구분자가 나타날 것입니다. hbmpItemszString 멤버는 무시됩니다.
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형으로 문자열을 받습니다.

- 끝 -

저작자 표시 비영리 변경 금지
신고
0 Comments
댓글쓰기 폼