ime文件中必须使用的结构 |
2006-01-14 |
作者 不祥 |
ime文件中必须使用的结构
前二章我们讲述了ime和imm函数,二者之间是靠下列结构通讯的。
1、IMEINFO
struct tagIMEInfo { //输入法的接口信息
用于ImeInquire函数中
DWORD dwPrivateDataSize;//用户设计的数据结构的字节数
DWORD
fdwProperty;
//输入法对键盘事件的相应特性
//其中其高字可为下列字节位的组合:
//=IME_PROP_AT_CARET
转换窗口是否放置在需插入字符的位置
//=IME_PROP_SPECIAL_UI
该输入法具有特殊用户接口
//=IME_PROP_CANDLIST_START_FROM_1
输入法的选择窗口中汉字串的起始序号为1
//=IME_PROP_UNICODE
支持UNICODE字符
//其中其低字可为下列字节位的组合:
//=IME_PROP_END_UNLOAD
//=IME_PROP_KBD_CHAR_FIRST 首先由键盘转换字符
//=IME_PORP_NEED_ALTKEY
将ALT键盘事件传送到IME输入法内
//=IME_PROP_IGNORE_UPKEYS
禁止上位键事件进入输入法内
//=IME_PROP_COMPLETE_ON_UNSELECT 当关闭输入法时,完成编码的转换
//
用于 W98及2000 中
DWORD fdwConversionCaps;//当前输入法具有的功能特性,如有软键、标点、中西文切换等功能
//=IME_CMODE_NATIVE 设置活动模式
//=IME_CMODE_FULLSHAPE
设置全角模式
//=IME_CMODE_CHARCODE 设置为字符模式
//=IME_CMODE_SOFTKBD
//设置软键盘模式
//=IME_CMODE_NOCONVERSION //不支持模式变换
//=IME_CMODE_EUDC
//
//=IME_CMODE_SYMBOL //设置标点字符模式
DWORD fdwSentenceCaps; //
//=IME_SMODE_PLAURALCLAUSE
//=IME_SMODE_SINGLECONVERT
//=IME_SMODE_AUTOMETIC
//=IME_SMODE_CONVERSATION
DWORD
fdwUICaps; //
用户界面能力:支持软键盘等
//=UI_CAP_2700
//=UI_CAP_ROT90
//=UI_CAP_ROTANY
//=UI_CAP_SOFKBD
DWORD
fdwSCSCaps; //
用户设置编码串的能力
//=SCS_CAP_COMPSTR
//=SCS_CAP_MAKEREAD
DWORD
fdwSelectCaps; //
输入法切换时是否使用以前输入法的模式
//=SELECT_CAP_CONVMODE
//=SELECT_CAP_SENTENCE
}
IIMEINFO;
2、COMPOSITIONSTR 用于编码管理
typedef struct tagCOMPOSITIONSTR
{ //用于存放编码信息的信息:所有的实际信息放在本结构的后面
DWORD dwSize;
//当前编码信息需要的存储空间=读入的编码+属性+子串+属性+编码+属性+结果+属性
DWORD dwCompReadAttrLen;
//读入的编码属性长度
DWORD dwCompReadAttrOffset; //存放在内存的位置
DWORD
dwCompReadClsLen; //读入的子串长度
DWORD dwCompReadClsOffset;
//存放在内存的位置
DWORD dwCompReadStrLen; //读入的编码长度
DWORD
dwCompReadStrOffset; //存放在内存的位置
DWORD dwCompAttrLen;
//编码属性长度
DWORD dwCompAttrOffset; //存放在内存的位置
DWORD dwCompClsLen;
//编码子串长度
DWORD dwCompClsOffset; //存放在内存的位置
DWORD dwCompStrLen;
//编码串长度
DWORD dwCompStrOffset; //存放在内存的位置
DWORD dwCursorPos;
//当前光标位置
DWORD dwDeltaStart; //被修改编码的位置
DWORD dwResultReadClsLen;
//读入结果子串长度
DWORD dwResultReadClsOffset; //存放在内存的位置
DWORD
dwResultReadStrLen; //读入的编码长度
DWORD dwResultReadStrOffset;
//存放在内存的位置
DWORD dwResultClsLen; //结果子串长度
DWORD dwResultClsOffset;
//存放在内存的位置
DWORD dwResultStrLen; //结果串长度
DWORD dwResultStrOffset;
//存放在内存的位置
DWORD dwPrivateSize; //用户自定义数据长度
DWORD dwPrivateOffset;
//存放在内存的位置
} COMPOSITIONSTR;
3、CANDIDATEINFO
用于编码选择管理
typedef struct tagCANDIDATEINFO {
//编码选择信息的信息,其后为实际编码列表数据
DWORD dwSize; //数据所占内存大小
DWORD dwCount;
//表马列表个数
DWORD dwOffset[32]; //各个编码列表的内存位置
DWORD dwPrivateSize;
//自定义数据尺寸
DWORD dwPrivateOffset; //缓冲区位置
}
CANDIDATEINFO;
4、GUIDELINE
typedef struct tagGUIDELINE
{
DWORD dwSize;
DWORD dwLevel; // the error level.
//
GL_LEVEL_NOGUIDELINE,
// GL_LEVEL_FATAL,
// GL_LEVEL_ERROR,
// GL_LEVEL_WARNNING,
// GL_LEVEL_INFORMATION
DWORD
dwIndex; // GL_ID_NODICTIONARY and so on.
DWORD dwStrLen; // Error
Strings, if this is 0, there
// is no error string.
DWORD
dwStrOffset;
DWORD dwPrivateSize;
DWORD dwPrivateOffset;
}
GUIDELINE;
5、CANDIDATELIST
The CANDIDATELIST structure contains
information about a candidate list.
typedef struct tagCANDIDATELIST {
//编码选择列表信息 =〉管理编码窗口中的列表信息
DWORD dwSize; //
用字节表示的内存大小:=sizeof(CANDIDATELIST)+选择字符数据
DWORD dwStyle; //
列表串的取值方式
//=IME_CAND_UNKNOWN 列表数据的格式无定义
//=IME_CAND_READ
读到什么数据即为什么数据,一般我们使用该属性
//=IME_CAND_CODE
如果dwCount=1,dwOffset不是地址,而是实际数据,
// >1 dwOffset
表示地址
//=IME_CAND_MEANING
//=IME_CAND_RADICAL
//=IME_CAND_STROKES
DWORD
dwCount; // 当前列表个数
DWORD dwSelection; // 当前选择的列表序号
DWORD
dwPageStart; // 在列表窗口中所显示的列表的起始序号(上下翻页时用)
DWORD dwPageSize; //
一页显示的列表个数
DWORD dwOffset[]; // 列表数据存放区地址:[阿];[大]。。。。
}
CANDIDATELIST;
6、COMPOSITIONFORM
typedef tagCOMPOSITIONFORM {
//窗口位置、大小信息:
//由IMC_SETCOMPOSITIONWINDOW和IMC_SETCANDIDATEPOS消息使用
DWORD
dwStyle; //管理窗口方式
//=CFS_DEFAULT
将编码窗口显示到隐含的位置
//=CFS_FORCE_POSITION //
以给定的坐标显示窗口,不受IME控制
//=CFS_POINT // 以给定的坐标显示窗口,受IME控制
//=CFS_RECT
//以给定的大小显示窗口
POINT ptCurrentPos; //给定坐标
RECT rcArea;
//给定窗口的小
}COMPOSITIONFORM;
7、CANDIDATEFORM
The
CANDIDATEFORM structure is used for IMC_GETCANDIDATEPOS and IMC_SETCANDIDATEPOS
messages.
typedef tagCANDIDATEFORM {
//列表窗口信息
//由IMC_GETCANDIDATEPOS和IMC_SETCANDIDATEPOS消息处理
DWORD
dwIndex; //列表窗口序号
DWORD dwStyle; //属性:
//=CFS_CANDIDATEPOS
指定显示位置
//=CFS_EXCLUDE 不可显示
//=CFS_DEFAULT 根据需要显示
POINT
ptCurrentPos; //坐标位置
REC rcArea; //不可显示区
}
CANDIDATEFORM;
8、STYLEBUF
typedef struct tagSTYLEBUF {
//注册字结构
DWORD dwStyle;
TCHAR szDes cription[32]
}
STYLEBUF;
9、SOFTKBDDATA
typedef struct tagSOFTKBDDATA {
//软键盘中各键对应的汉字
UINT uCount;
//键码数组个数(可以为1,2,当区分SHIFT键时为2,即:一组带SHIFT,一组不带SHIFT)
WORD wCode[][256]
//对应的键码数据
} SOFTKBDDATA;
10、RECONVERTSTRING
typedef struct
_tagRECONVERTSTRING { //用于W98和2000
DWOPD dwSize;
DWORD
dwVersion;
DWORD dwStrLen;
DWORD dwStrOffset;
DWORD
dwCompStrLen;
DWORD dwCompStrOffset;
DWORD
dwTargetStrLen;
DWORD dwTargetStrOffset;
}
RECONVERTSTRING;
11、IMEMENUITEMINFO
typedef _tagIMEMENUITEMINFO {
//输入法菜单结构,W98/2000
UINT cbSize;
UINT fType;
UINT
fState;
UINT wID;
HBITMAP hbmpChecked;
HBITMAP
hbmpUnchecked;
DWORD dwItemData;
TCHAR
szString[48];
HBITMAP
hbmpItem;
}
12、INPUTCONTEXT
The INPUTCONTEXT structure is
an internal data structure that stores Input Context data.
typedef struct
tagINPUTCONTEXT { //IMC 数据存放区
HWND hWnd; //使用该IMC的窗口
BOOL fOpen;
//IME的打开与关闭状态
POINT ptStatusWndPos; //状态窗口的位置
POINT ptSoftKbdPos;
//软键盘的位置
DWORD fdwConversion; //IME状态(活动、不活动,全角等)
DWORD
fdwSentence; //编码方式
union {
LOGFONTA A;
LOGFONTW
W;
} lfFont; //字体
COMPOSITIONFORM cfCompForm;
//编码格式结构
CANDIDATEFORM cfCandForm[4]; //列表选择结构
HIMCC hCompStr;
//
HIMCC hCandInfo;
HIMCC hGuideLine
HIMCC hPrivate;
DWORD dwNumMsgBuf; //存放在hMsgBuf中的消息数
HIMCC hMsgBuf; //存放的消息,格式:
[消息1] [wParam1] [lParam1] {[消息] [wParam2]
[lParam2]...
//注意:我们输入的汉字串存放在这里
DWORD fdwInit
//系统根据此值来初始本结构相应的信息
//=INIT_STATUSWNDPOS
初始化ptStatusWndPos
//=INIT_CONVERSION
初始化fdwConversion
//=INIT_SENTENCE 初始化fdwSentence
//=INIT_LOGFONT
初始化lfFont
//=INIT_COMPFORM 初始化cfCompForm
//=INIT_SOFTKBDPOS
初始化ptSoftKbdPos
DWORD dwReserve[3]; //将来版本扩展的信息
}
INPUTCONTEXT;
|
分享到:
相关推荐
Windows IME 输入法编程,学习IME编程必看的资料
Windows IME输入法编程.rar 网页
IME输入法编程.pdf
讲述IME框架下开发输入法的基本原理和基本思路,以微软拼音为例,详细描述各种API函数的使用方法和源代码,很有指导意义。
输入法编程详解:第一章 Windows9x系统下汉字输入法的基本原理;第二章 Windows9x系统提供的ime管理函数;第三章 ime文件中必须使用的结构;
IME输入法编程[文].pdf
Winodws Ime 输入法例子程序(vc2008),及其相关的文档整理
对用VC编写IME输入法程序进行了详细解说。 输入法输入法
IME是什么?IME是在Windows平台上使用的标准的输入法接口规范。它实质是一个DLL,Windows为...关于具体接口的定义不是本文的重点,如果您需要了解只需要在网络中搜索“输入法编程指南”就可以明白 ,更多信息参考MSDN。
易语言源码易语言IME输入法源码.rar
基于IMM_IME输入法接口的实现方法PDF
vc制作windows IME输入法.zip
IME输入法.rar
Windows xp系统的ime输入法文件夹,用于Windows xp的ime文件夹丢失后,替换ime输入法文件夹,保证输入法正常工作。
ime输入法设置工具,当你发觉屏幕右下角的输入法图标不见了,通过这个工具可以很快设置出来的。
取自DDK 输入法源码 包括简繁日三种语言
易语言IME输入法源码.zip