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 會使用預設的垂直書寫字型。 此預設字型的建立方式如下: |
傳回值會指出是否已執行命令。 如果 命令執行成功,則為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 |
另請參閱
概念
參考