IMESTRUCT 结构 (ime.h)

由 SendIMEMessageEx 用于指定要在输入法编辑器中执行的子函数, (输入法) 消息及其参数。 此结构还用于从这些子函数接收返回值。

语法

typedef struct tagIMESTRUCT {
  UINT   fnc;
  WPARAM wParam;
  UINT   wCount;
  UINT   dchSource;
  UINT   dchDest;
  LPARAM lParam1;
  LPARAM lParam2;
  LPARAM lParam3;
} IMESTRUCT, *PIMESTRUCT, *NPIMESTRUCT, *LPIMESTRUCT;

成员

fnc

子函数。 以下值之一。

IME_ENTERWORDREGISTERMODE

用于注册单词。 单词注册为应用程序发送单词及其读取。 结构成员的解释如下:

成员 类型 说明
lParam1 [Windows 3.1] LPARAM 低序字指定包含以 0 结尾的单词字符串的全局内存的句柄。 全局内存是通过在 GlobalAlloc 函数中指定GMEM_MOVEABLEGMEM_SHARE标志来分配的内存块。
lParam2 [Windows 3.1] LPARAM 低序字指定包含以 0 结尾的读取字符串的全局内存的句柄。 全局内存是通过在 GlobalAlloc 函数中指定GMEM_MOVEABLEGMEM_SHARE标志来分配的内存块
lParam3 [Windows 3.1] LPARAM 必须为 NULL
lParam1 [Windows NT] LPARAM 指定包含以 0 结尾的单词字符串的全局内存的句柄。 全局内存是通过在 GlobalAlloc 函数中指定GMEM_MOVEABLEGMEM_SHARE标志来分配的内存块。
lParam2 [Windows NT] LPARAM 指定包含以 0 结尾的读取字符串的全局内存的句柄。 全局内存是通过在 GlobalAlloc 函数中指定GMEM_MOVEABLEGMEM_SHARE标志来分配的内存块。
lParam3 [Windows NT] LPARAM 用于指定有关语音部分的信息。 由于无法使用当前 Windows 规范指定此类信息,因此此处设置 NULL
 

返回值指示单词注册的结果。 如果注册已正常处理,则为 TRUE;否则为 FALSE

如果需要部分语音等信息,应显示一个对话框来提示用户输入。 可以在成员 lParam1 和 lParam2指定 NULL;在这种情况下,对话框中的关联条目字段中不应显示任何内容。

IME_GETCONVERSIONMODE

获取 IME 的当前转换模式。 此子程序不使用任何参数。

这与 IME_GET_MODE 相同。

返回 IME 的当前转换模式,作为 IME_MODE_ALPHANUMERICIME_MODE_NOCODEINPUT的组合。 转换模式如下所示:

转换模式 模型
IME_MODE_ALPHANUMERIC 字母数字
IME_MODE_KATAKANA 片假名
IME_MODE_HIRAGANA Hiragana
IME_MODE_SBCSCHAR 单字节字符
IME_MODE_DBCSCHAR 双字节字符
IME_MODE_ROMAN 罗马字符
IME_MODE_NOROMAN 非罗马字符
IME_MODE_CODEINPUT 代码输入
IME_MODE_NOCODEINPUT 非代码输入
 

IME_GET_MODE

IME_GETCONVERSIONMODE 相同。

IME_MOVECONVERTWINDOW

IME_SETCONVERSIONWINDOW 相同。

IME_SETCONVERSIONFONTEX

用于显示转换窗口中出现的未确定字符串的字体。 结构成员的解释如下:

成员 类型 说明
lParam1 [Windows 3.1] LPARAM 低序字指定全局内存的句柄,该句柄包含指定逻辑字体的 LOGFONT 结构。 全局内存是通过在 GlobalAlloc 函数中指定GMEM_MOVEABLEGMEM_SHARE标志来分配的内存块。 NULL 表示系统字体。
lParam1 [Windows NT] LPARAM 指定全局内存的句柄,该句柄包含指定逻辑字体的 LOGFONT 结构。 全局内存是通过在 GlobalAlloc 函数中指定GMEM_MOVEABLEGMEM_SHARE标志来分配的内存块。 NULL 表示系统字体。
 

此子函数没有返回值。

IME_SETCONVERSIONFONTEX指定的字体只能用于显示不确定的字符串。

若要在默认位置显示不确定的字符串,请使用系统字体。 如果显示位置不再是默认位置,请启用之前指定的字体。

包含 LOGFONT 结构的全局内存由应用程序释放。

如果当前显示转换窗口的 IME 收到 IME_SETCONVERSIONFONTEX 命令,并且由于处理转换窗口的命令已更改,则 IME 应发送WM_IME_REPORT:IR_CHANGECONVERT消息。 如果 IME_SETCONVERSIONFONTEX 指定的字体与 IME 使用的字体相同,则不应发送此消息。

IME_SETCONVERSIONMODE

设置 IME 的转换模式。 wParam 成员指定以下一个或多个值:

含义
IME_MODE_ALPHANUMERIC 字母数字转换模式。 此值不能与IME_MODE_KATAKANA或IME_MODE_HIRAGANA一起使用。
IME_MODE_KATAKANA 片假名转换模式。 此值不能与IME_MODE_ALPHANUMERIC或IME_MODE_HIRAGANA一起使用。
IME_MODE_HIRAGANA 平假名转换模式。 此值不能与IME_MODE_ALPHANUMERIC或IME_MODE_HIRAGANA一起使用。
IME_MODE_SBCSCHAR 单字节字符转换模式。 此参数不能与IME_MODE_DBCSCHAR一起使用。
IME_MODE_DBCSCHAR 双字节字符转换模式。 此参数不能与IME_MODE_SBCSCHAR一起使用。
IME_MODE_ROMAN 罗马字符转换模式。 此参数不能与IME_MODE_NOROMAN一起使用。
IME_MODE_NOROMAN 非罗马字符转换模式。 此参数不能与IME_MODE_ROMAN一起使用。
IME_MODE_CODEINPUT 代码输入转换模式。 此参数不能与 IME_MODE_NOCODEINPUT 一起使用。 IME 在代码输入模式下的运行方式取决于特定的 IME。
IME_MODE_NOCODEINPUT 非代码输入转换模式。 此参数不能与IME_MODE_CODEINPUT一起使用。
 

返回值指示是否已成功设置给定的转换模式。 如果已设置新的转换模式,则返回以前生效的转换模式的状态;否则为 NULL

IME_SETCONVERSIONWINDOW

IME 边框的大小和位置,以及转换窗口的初始位置。 IME 在此子函数指定的位置显示未确定的字符串。

wParam 成员指定以下值之一:

含义
MCW_DEFAULT 在默认位置(通常是屏幕底部)显示转换窗口。

如果在IME_SETCONVERSIONWINDOW消息中指定了MCW_DEFAULT样式,则当 IME 在默认位置显示或绘制转换窗口时,它不得发送IR_OPENCONVERT、IR_CHANGECONVERT、IR_FULLCONVERT或IR_CLOSECONVERT消息。

MCW_WINDOW 在WM_CONVERTREQUEST或WM_CONVERTREQUESTEX消息的 wParam 参数中指定的窗口中,显示 lParam1 成员中给定的坐标处的转换窗口。 lParam1 中的值指示相对于窗口左上角的坐标,低序字表示 X 坐标,高序字表示 Y 坐标。 边界矩形是给定窗口的客户端矩形,是调用假名到汉字转换的最典型方式。

如果在IME_SETCONVERSIONWINDOW消息中指定了MCW_WINDOW样式,则如果转换窗口状态已从“已关闭”更改为“打开”,则输入法必须发送IR_OPENCOVERT消息。 如果转换窗口状态已从“打开”更改为“已关闭”,则输入法必须发送IR_CLOSECONVERT消息。 但是,有一个例外。 有关详细信息,请参阅IME_WINDOWUPDATE。

MCW_WINDOW |MCW_RECT 与 MCW_WINDOW相同,只不过边框是由 lParam2lParam3 成员指定的。 lParam2 成员指定左上角点,lParam3 指定右下角点,每个点的低序字表示 X 坐标,高序字表示 Y 坐标。 坐标相对于窗口左上角。
MCW_SCREEN 显示由 lParam1 成员指定的左上角的转换窗口。 lParam1 成员指示屏幕左上角的原点的绝对坐标。 低序字表示 X 坐标,高序字表示 Y 坐标。 边框是全屏。

如果在IME_SETCONVERSIONWINDOW消息中指定了MCW_SCREEN样式,则如果转换窗口状态已从“关闭”更改为“打开”,则输入法必须发送IR_OPENCOVERT消息。 如果转换窗口状态已从“打开”更改为“已关闭”,则输入法必须发送IR_CLOSECONVERT消息。 但是,有一个例外。 有关详细信息,请参阅IME_WINDOWUPDATE。

MCW_SCREEN |MCW_RECT 与 MCW_SCREEN相同,只不过边框是由 lParam2lParam3 成员指定的。 lParam2 成员指定左上角点,lParam3 指定右下角点,每个点的低序字表示 X 坐标,高序字表示 Y 坐标。 坐标是屏幕左上角的原点的绝对坐标。
MCW_HIDDEN [Windows 3.1] 指定此标志时,IME 不显示转换窗口。 相反,应用程序本身显示未确定的字符串。 lParam1 成员指定应用程序或兴趣点显示的光标位置的坐标。 lParam2lParam3 成员指定 IME 不启用任何显示的区域。 在弹出窗口中显示确定字符串候选项的输入法能够使用这些信息片段来确定在何处显示确定的字符串候选项的窗口。 显示候选字符串的窗口被视为系统窗口。 因此,是否显示此类窗口、显示窗口的位置和方式以及要使用的键盘输入取决于输入法。 lParam1lParam2lParam3 三个成员指定屏幕左上角的绝对坐标,每个成员的低序字表示 X 坐标,高序字表示 Y 坐标。

指定MCW_HIDDEN标志时,输入法会发送IR_UNDETERMINE消息,请求应用程序显示未确定的字符串。 应用程序本身显示此消息中包含的不确定字符串。

指定MCW_HIDDEN标志后,IME 不会发送IR_OPENCONVERT、IR_CHANGECONVERT或IR_CLOSECONVERT消息。

如果应用程序指定MCW_HIDDEN同时请求矩形太大,无法显示已确定字符串的候选窗口,则应将其视为错误。 必须IME_RD_TOOLONG错误代码。

如果在IME_SETCONVERSIONWINDOW消息中指定了MCW_HIDDEN样式,则输入法不得发送IR_OPENCONVERT、IR_CHANGECONVERT、IR_FULLCONVERT或IR_CLOSECONVERT。

MCW_VERTICAL 告知 IME 应用程序正在以垂直写入格式显示字符串。 如果指定了此标志,则会显示用于垂直写入的转换窗口, lParam1 成员指定的位置为右上角。 可以使用 MCW_WINDOW 指定此标志,MCW_WINDOW|MCW_RECT、MCW_SCREEN或MCW_SCREEN |MCW_RECT。 输入法必须支持MCW_VERTICAL。 如果指定了MCW_VERTICAL,并且所选字体不用于垂直书写,则 IME 将使用默认的垂直书写字体。 此默认字体的创建方式如下:
  1. GetObject 函数使用 SYSTEM_FONT 的字体句柄在 LOGFONT 结构中检索字体信息。
  2. 通过在人脸名称的开头添加与号 (@) 并将转义和方向设置为 270 度来创建字体。
 

返回值指示命令是否已执行。 如果命令执行成功,则为 TRUE;否则为 FALSE

如果不确定的字符串似乎溢出了边界矩形,则输入法必须在显示该字符串之前向应用程序发出报告消息WM_IME_REPORT:IR_FULLCONVERT。 如果应用程序不处理此消息,则不在此规范中制定显示器的后续处理,但会留给输入法处理。 例如,未确定的字符串可能在边界矩形内滚动,或者可能暂时移动到默认位置。

如果在输入法包含未确定的字符串时调用IME_SETCONVERSIONWINDOW消息,则输入法应发出WM_IME_REPORT:IR_CLOSECONVERT消息;如果字符串适合指定为参数的窗口,则输入法应发出WM_IME_REPORT:IR_OPENCONVERT消息。 只有这样,才应绘制转换窗口。 如果该字符串不适合窗口,则输入法应发出WM_IME_REPORT:IR_FULLCONVERT消息。

边框的位置可以在物理屏幕区域之外指定。 如果整个边框位于物理屏幕外部,则不得显示未确定的字符串。 如果边框的一部分位于物理屏幕之外,则 IME 会剪裁边框,以便未确定的字符串的任何部分不会溢出屏幕,同时调整显示开始位置。

建议不要设置转换窗口的最大行数或显示的最大字符数。

如果转换窗口与系统窗口重叠,则转换窗口必须可见。 例如,可以将转换窗口指定为显示的最高优先级,也可以将系统窗口移到其他位置。

如果转换窗口的大小、显示内容或显示颜色已更改,则输入法必须发送IR_CHANGECONVERT消息。 但是,如果未确定的字符串不适合指定的窗口,则输入法必须发送IR_FULLCONVERT消息,而不是IR_CHANGECONVERT。

当输入法从MCW_WINDOW或MCW_SCREEN模式切换到MCW_DEFAULT时,如果存在不确定的字符串,则必须发送IR_CLOSECONVERT消息。

当输入法从MCW_WINDOW或MCW_SCREEN模式切换到MCW_HIDDEN时,如果存在不确定的字符串,则必须发送IR_CLOSECONVERT消息。

当输入法已从MCW_HIDDEN模式切换到MCW_DEFAULT、MCW_SCREEN或MCW_WINDOW时,输入法必须传输一条不确定字符串 = 0 且确定的字符串 = 0 的IR_UNDETERMINE消息。

IME_SETLEVEL

在当前应用程序上设置 IME 级别的特定于朝鲜语的子函数。 wParam 成员接受以下级别值之一。

级别 含义
1 不支持输入法。 所有 IME 特定的消息将被忽略。
2 部分输入法支持。 支持输入法行为的子集,包括合成窗口或候选窗口的位置以及输入模式或状态。
3 完全输入法支持。
 

IME_SETOPEN

设置 IME 的假名到汉字转换功能的状态。

wParam 成员设置为非零以打开 IME,将设置为零以关闭 IME

返回值指示假名到汉字转换功能的先前状态。 如果打开,则返回 TRUE ;否则为 FALSE

如果假名到汉字转换功能已被IME_SETOPEN关闭,则不能确定未确定的字符串。

当假名到汉字转换功能要通过IME_SETOPEN关闭时,如果输入法处于MCW_WINDOW或 MCW-SCREEN 模式并且转换窗口打开,则输入法必须发送IR_CLOSECONVERT消息。 但是,如果输入法处于MCW_HIDDEN模式并且存在不确定的字符串,则无需发出IR_CLOSECONVERT。

IME_SET_MODEK

IME_SETCONVERSIONMODE的朝鲜语特定版本。

wParam

使用情况取决于 fnc 中指定的子功能。

wCount

使用情况取决于 fnc 中指定的子功能。

dchSource

使用情况取决于 fnc 中指定的子功能。

dchDest

使用情况取决于 fnc 中指定的子功能。

lParam1

使用情况取决于 fnc 中指定的子功能。

lParam2

使用情况取决于 fnc 中指定的子功能。

lParam3

使用情况取决于 fnc 中指定的子功能。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头 ime.h

另请参阅

剪贴板

概念性

引用

SetClipboardData