共用方式為


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_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

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

IME_GETCONVERSIONMODE

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

這與 IME_GET_MODE相同。

傳回輸入法的目前轉換模式,做為 IME_MODE_ALPHANUMERICIME_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_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

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