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

用來註冊單字。 單字會註冊為應用程式傳送文字及其讀取。 結構成員的解譯方式如下:

member 類型 Description
lParam1 [Windows 3.1] LPARAM 低序字會指定全域記憶體的句柄,其中包含結尾為0的文字字串。 全域記憶體是透過在 GlobalAlloc 函式中指定GMEM_MOVEABLE和GMEM_SHARE旗標所配置的記憶體區塊。
lParam2 [Windows 3.1] LPARAM 低序字會指定全域記憶體的句柄,其中包含結尾為0的讀取字串。 全域記憶體是透過在 GlobalAlloc 函式中指定GMEM_MOVEABLE和GMEM_SHARE旗標所配置的記憶體區塊
lParam3 [Windows 3.1] LPARAM 必須是 NULL。
lParam1 [Windows NT] LPARAM 指定全域記憶體的句柄,其中包含結尾為 0 的文字字串。 全域記憶體是透過在 GlobalAlloc 函式中指定GMEM_MOVEABLE和GMEM_SHARE旗標所配置的記憶體區塊。
lParam2 [Windows NT] LPARAM 指定全域記憶體的句柄,其中包含結尾為 0 的讀取字串。 全域記憶體是透過在 GlobalAlloc 函式中指定GMEM_MOVEABLE和GMEM_SHARE旗標所配置的記憶體區塊。
lParam3 [Windows NT] LPARAM 用來指定語音部分的相關信息。 由於無法使用目前的 Windows 規格來指定這類資訊,因此會在這裡設定 NULL 。
 

傳回值表示單字註冊的結果。 如果 註冊已正常處理,則為TRUE;否則為 FALSE。

如果需要語音部分等資訊,應該會顯示對話框來提示用戶輸入。 NULL 可以在 成員 lParam1 和 lParam2 中指定;在此情況下,對話框的相關聯專案字段中應該不會顯示任何專案。

IME_GETCONVERSIONMODE

取得輸入法的目前轉換模式。 此子程式不使用任何參數。

這與 IME_GET_MODE相同。

傳回輸入法的目前轉換模式,做為 IME_MODE_ALPHANUMERIC 與 IME_MODE_NOCODEINPUT的組合。 轉換模式如下所示:

轉換模式 模式
IME_MODE_ALPHANUMERIC 英數字元
IME_MODE_KATAKANA 片假名
IME_MODE_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

用來顯示轉換視窗中出現的未決定字串的字型。 結構成員的解譯方式如下:

member 類型 Description
lParam1 [Windows 3.1] LPARAM 低序字會指定全域記憶體的句柄,其中包含指定邏輯字型的 LOGFONT 結構。 全域記憶體是透過在 GlobalAlloc 函式中指定GMEM_MOVEABLE和GMEM_SHARE旗標所配置的記憶體區塊。 NULL 表示系統字型。
lParam1 [Windows NT] LPARAM 指定全域記憶體的句柄,其中包含指定邏輯字型的 LOGFONT 結構。 全域記憶體是透過在 GlobalAlloc 函式中指定GMEM_MOVEABLE和GMEM_SHARE旗標所配置的記憶體區塊。 NULL 表示系統字型。
 

這個子函式沒有傳回值。

IME_SETCONVERSIONFONTEX指定的字型只能用來顯示未決定的字串。

若要在預設位置顯示未決定的字串,請使用系統字型。 如果顯示位置不再是預設位置,請啟用先前指定的字型。

應用程式會釋放包含 LOGFONT 結構的全域記憶體。

如果目前顯示轉換視窗的 IME 收到 IME_SETCONVERSIONFONTEX 命令,而且因為處理轉換視窗的命令而變更,IME 應該傳送WM_IME_REPORT:IR_CHANGECONVERT訊息。 如果 IME_SETCONVERSIONFONTEX 指定的字型與 IME 所使用的字型相同,則不應該傳送此訊息。

IME_SETCONVERSIONMODE

設定輸入法的轉換模式。 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_MODE_NOCODEINPUT 非程式代碼輸入轉換模式。 此參數不能與IME_MODE_CODEINPUT搭配使用。
 

傳回值會指出指定的轉換模式是否已順利設定。 如果已設定新的轉換模式,它會傳回先前生效的轉換模式狀態;否則為 NULL。

IME_SETCONVERSIONWINDOW

輸入法周框的大小和位置,以及轉換視窗的初始位置。 IME 會在這個子函式所指定的位置顯示未決定的字串。

wParam 成員指定下列其中一個值:

值 意義
MCW_DEFAULT 在預設位置顯示轉換視窗,通常是畫面底部。

如果在IME_SETCONVERSIONWINDOW訊息中指定MCW_DEFAULT樣式,則當 IME 在預設位置顯示或繪製轉換視窗時,它不得傳送IR_OPENCONVERT、IR_CHANGECONVERT、IR_FULLCONVERT或IR_CLOSECONVERT訊息。

MCW_WINDOW 在 lParam1 成員中指定的座標上,在WM_CONVERTREQUEST或WM_CONVERTREQUESTEX訊息 之 wParam 參數中指定的視窗中顯示轉換視窗。 lParam1 中的值表示相對於視窗左上角的座標,其中低序單字代表 X 座標,以及 Y 座標的高階單字。 周框是指定視窗的用戶端矩形,是叫用假名到漢字轉換的最典型方式。

如果在IME_SETCONVERSIONWINDOW訊息中指定MCW_WINDOW樣式,當轉換窗口狀態從關閉變更為開啟時,輸入法必須傳送IR_OPENCOVERT訊息。 如果轉換視窗狀態已從開啟變更為已關閉,則 IME 必須傳送IR_CLOSECONVERT訊息。 不過,有例外狀況。 如需詳細資訊,請參閱IME_WINDOWUPDATE。

MCW_WINDOW |MCW_RECT 與MCW_WINDOW相同,不同之處在於周框是由 lParam2 和 lParam3 成員所指定。 lParam2 成員會指定左上方的點,而 lParam3 則指定右下角點,每個都有低序單字代表 X 座標和 Y 坐標的高階單字。 座標相對於視窗左上方。
MCW_SCREEN 顯示轉換視窗,其左上角是由 lParam1 成員所指定。 lParam1 成員表示螢幕左上角的原點絕對座標。 低序單字代表 X 座標和 Y 座標的高序字。 周框是全螢幕。

如果在IME_SETCONVERSIONWINDOW訊息中指定MCW_SCREEN樣式,IME 必須在轉換視窗狀態從關閉變更為開啟時傳送IR_OPENCOVERT訊息。 如果轉換視窗狀態已從開啟變更為已關閉,則 IME 必須傳送IR_CLOSECONVERT訊息。 不過,有例外狀況。 如需詳細資訊,請參閱IME_WINDOWUPDATE。

MCW_SCREEN |MCW_RECT 與MCW_SCREEN相同,不同之處在於周框是由 lParam2 和 lParam3 成員所指定。 lParam2 成員會指定左上方的點,而 lParam3 則指定右下角點,每個都有低序單字代表 X 座標和 Y 坐標的高階單字。 座標是螢幕左上方的原點絕對座標。
MCW_HIDDEN [Windows 3.1] 指定此旗標時,輸入法不會顯示轉換視窗。 相反地,應用程式本身會顯示未決定的字串。 lParam1 成員會指定應用程式或景點所顯示之游標位置的座標。 lParam2 和 lParam3 成員會指定 IME 未啟用任何顯示的區域。 在彈出視窗中顯示判定字串候選項目的輸入法,能夠使用這些資訊片段來判斷要顯示判定字串候選項目視窗的位置。 顯示候選字串的視窗會被視為系統視窗。 因此,它與輸入法有關是否要顯示這類視窗、顯示視窗的位置和方式,以及要使用的鍵盤輸入。 三個成員 lParam1、 lParam2 和 lParam3 會指定畫面左上方的絕對座標,每個成員都有低序單字代表 X 座標,以及 Y 座標的高序單字。

指定MCW_HIDDEN旗標時,IME 會傳送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 告知輸入法,應用程式以垂直寫入格式顯示字元字串。 如果指定此旗標,則會顯示轉換視窗以進行垂直寫入,而 lParam1 成員所指定的位置是右上角。 您可以使用 MCW_WINDOW 來指定此旗標,MCW_WINDOW|MCW_RECT、MCW_SCREEN或MCW_SCREEN|MCW_RECT。 輸入法必須支援MCW_VERTICAL。 如果指定了MCW_VERTICAL,而且選取的字型不是用於垂直寫入,則 IME 會使用預設的垂直書寫字型。 此預設字型的建立方式如下:
  1. 使用SYSTEM_FONT的字型句柄,GetObject 函式會在LOGFONT結構中擷取字型資訊。
  2. 字型是藉由在臉部名稱開頭新增 ampersand (@) ,並將逸出和方向設定為 270 度來建立。
 

傳回值會指出是否已執行命令。 如果 命令執行成功,則為TRUE;否則為 FALSE。

如果不確定的字串似乎溢位周框,則輸入法必須在顯示該字串之前,將報表訊息發出WM_IME_REPORT:IR_FULLCONVERT給應用程式。 如果應用程式未處理此訊息,則不會在此規格中制定顯示器的後續處理,但會保留給輸入法。 例如,未決定的字串可能會在周框內捲動,或者可能會暫時移至預設位置。

如果在 IME 持有未決定的字串時呼叫IME_SETCONVERSIONWINDOW訊息,則 IME 應該發出WM_IME_REPORT:IR_CLOSECONVERT訊息;如果字串符合指定為參數的視窗,則 IME 應該發出WM_IME_REPORT:IR_OPENCONVERT訊息。 然後,才應該繪製轉換視窗。 如果字串不符合視窗,IME 應該發出WM_IME_REPORT:IR_FULLCONVERT訊息。

周框的位置可以在實體螢幕區域之外指定。 如果整個周框在實體畫面之外,則不得顯示未決定的字串。 如果周框的一部分位於實體畫面之外,則 IME 會裁剪周框,讓未決定字串的一部分不會溢位畫面,也會調整顯示開始位置。

建議不要設定轉換視窗中顯示的最大行數或最大字元數。

如果轉換視窗與系統視窗重疊,則必須顯示轉換視窗。 例如,轉換視窗可以指定顯示的最高優先順序,或者系統視窗可以在其他地方移動。

如果轉換視窗的大小、顯示內容或顯示色彩有所變更,則輸入法必須傳送IR_CHANGECONVERT訊息。 不過,如果未決定的字串不符合指定的視窗,則 IME 必須傳送IR_FULLCONVERT訊息,而不是IR_CHANGECONVERT。

當 IME 從MCW_WINDOW或MCW_SCREEN模式移轉至MCW_DEFAULT時,如果字串不存在,則必須傳送IR_CLOSECONVERT訊息。

當輸入法從MCW_WINDOW或MCW_SCREEN模式移轉至MCW_HIDDEN時,如果字串不存在,則必須傳送IR_CLOSECONVERT訊息。

當 IME 從MCW_HIDDEN模式移轉至MCW_DEFAULT、MCW_SCREEN或MCW_WINDOW時,IME 必須傳送具有未決定字串 = 0 且判定字串 = 0 的IR_UNDETERMINE訊息。

IME_SETLEVEL

韓文特定的子函式,可設定目前應用程式上的 IME 層級。 wParam成員接受下列其中一個層級值。

層級 意義
1 不支援輸入法。 會忽略所有輸入法特定的訊息。
2 部分輸入法支援。 支援輸入法行為的子集,包括組合或候選視窗的位置和輸入模式或狀態。
3 完整輸入法支援。
 

IME_SETOPEN

設定輸入法之假名轉換功能的狀態。

wParam 成員設定為非零,以開啟 IME,而零則會關閉 IME

傳回值表示假名轉換功能的先前狀態。 如果開啟,則傳回 TRUE ;否則為 FALSE。

無法判斷假名轉換功能是否已由IME_SETOPEN關閉。

當假名轉換功能由IME_SETOPEN關閉時,如果 IME 處於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 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
標頭 ime.h

另請參閱

剪貼簿

概念

參考

SetClipboardData