|
|
一般之前人說用WM_IME_CHAR及WM_CHAR但此種作法不是一個良好的方法,而且在雙位元版時會有一些問題出現,所以建議採用下列方法,上述夾檔是MSDN中的範例,大多可以運用,但在嘸蝦米輸入法及一些不是微軟輸入法上運用上可能要有所修改,下面是參考別人的資料及上例範例中的小整理。夾檔: IMEAPPS.zip
: N6 i% y' j4 A) w& r: v; w3 K; Y: b1 X C( k2 `, J1 U
// 輸入法設定狀態
( \( E/ T7 y. H* a3 fHKL hkl = GetKeyboardLayout(0);+ R( s. L% i! W. A9 w
if(ImmIsIME(hkl))
; x8 c7 U; s9 t+ {' ^ V{
1 W3 z# J6 _: t0 s, G+ b ImmEscape(hkl, hIMC, IME_ESC_IME_NAME, IMEName);" X/ m% P+ g% X! r# h: L
if(IMEFullShape)
9 H i$ Y" ?2 O$ i$ K sprintf(IMEShape, _T("【%s/全】"), IMEName);: }8 o( i) m" |0 N8 L6 ~
else
( r' F; P- q) c! l sprintf(IMEShape, _T("【%s/半】"), IMEName);
+ P' Z, i4 L! m2 e7 `' Y}
2 {* Q! } l8 g$ nelse6 T8 O6 ^3 E6 H! h' S
{- T8 n1 D8 x0 x( x# T- r
strcpy(IMEShape,_T("【EN】"));
4 J/ K5 R9 a; ~/ Y/ F6 b( W}
& W* j& B' ]' R, ]& w- t
1 d4 }! g% e4 B& v W3 h// 當中文輸入時
! F m. e, y3 |8 |8 R8 ~case WM_IME_COMPOSITION:) L; ~' Y! U k+ h! ?
hIMC = ImmGetContext(hWnd);
$ [7 x K: d# T* O // 取得中文組字
9 A ~2 v0 o' n; M7 z3 \9 J. ~ if (lParam & GCS_COMPSTR)* I' D% E u T8 `7 r
{
2 d7 w+ k) i4 B" f. O dwSize = ImmGetCompositionString(hIMC,GCS_COMPSTR,szCompReadStr,sizeof(szCompReadStr));
3 X2 K$ F% i' h dwSize /= sizeof(TCHAR);
6 _8 T- i, ?" `1 V szCompReadStr[dwSize] = TCHAR('\0');' f; ?4 v& ~! K4 @- ? k: [
}
1 C0 j1 q# I8 _7 v6 g% f2 X) V) y& y; [4 b4 I
if(lParam & GCS_COMPREADSTR); |4 L* I1 n1 |, G" T& E
{$ C1 p5 S$ @% k3 R
dwSize = ImmGetCompositionString(hIMC, GCS_COMPREADSTR, (void*)szCompStr, sizeof(szCompStr));* f0 e& }; ^. s6 a* h/ S N
dwSize /= sizeof(TCHAR);
; ^: T5 F3 ?- p szCompStr[dwSize] = TCHAR('\0');
1 j7 O2 Y+ I1 r- ]3 t! [ }: l$ I, N: q; I& z1 Z
& r5 B5 f$ I* u: ?9 J
if(lParam & GCS_RESULTSTR)
6 t4 a) @/ J& L0 L2 `5 T {
- ~, J* W: {2 E# }; V // 取得輸出字元
- e' N$ I9 F( x7 \ dwSize = ImmGetCompositionString(hIMC, GCS_RESULTSTR, (void*)szChStr, sizeof(szChStr));
" Y& @/ k) O% Y# n! `/ W/ L8 @ dwSize /= sizeof(TCHAR);) l/ u6 i% A2 U4 w
szChStr[dwSize] = TCHAR('\0');. T+ \. s. P; z5 l
lstrcat(m_szLineStr, szChStr);5 n6 j! U: N# x* |/ a# x7 v
}5 O1 y5 r: G: F$ d& }2 ?
break; |
|