找回密码
 注册
搜索
查看: 6111|回复: 0

[收藏]DX下VC6.0中文輸入問題

[复制链接]
发表于 2005-10-20 23:14:56 | 显示全部楼层 |阅读模式
    一般之前人說用WM_IME_CHAR及WM_CHAR但此種作法不是一個良好的方法,而且在雙位元版時會有一些問題出現,所以建議採用下列方法,上述夾檔是MSDN中的範例,大多可以運用,但在嘸蝦米輸入法及一些不是微軟輸入法上運用上可能要有所修改,下面是參考別人的資料及上例範例中的小整理。夾檔:  IMEAPPS.zip" B, j) Y0 f# \; \1 ^& z9 Y

- O2 f1 X, o" u/ x! {/ T* w// 輸入法設定狀態, j' t& ~( g( B# h  |* G4 K9 k
HKL hkl = GetKeyboardLayout(0);  K9 w5 f' z- ^8 h& A
if(ImmIsIME(hkl))
7 W) P7 N" J( B! }{
- i/ A4 h) v9 U    ImmEscape(hkl, hIMC, IME_ESC_IME_NAME, IMEName);
* F8 d- Q3 D, G8 A2 r. z, ~    if(IMEFullShape)
- D+ B- B# h8 g% n( [. [: i        sprintf(IMEShape, _T("【%s/全】"), IMEName);
$ [/ l0 [  h( t3 L7 P    else
: a- V) g: q: }# p* W! ^1 a$ N& y! x. S    sprintf(IMEShape, _T("【%s/半】"), IMEName);- W% g1 d9 g4 O
}1 X+ A+ C( [. o0 p% R
else. \7 X6 q0 w0 @* f, x9 s" z
{
9 ]1 n8 z9 m+ f4 {/ `    strcpy(IMEShape,_T("【EN】"));
6 @0 Y' F- B, j- K}) V! ~$ @& [) B4 `: [% _) {

1 l  Z, t1 K& H4 N- h// 當中文輸入時$ `* h6 }) m( Y. M
case WM_IME_COMPOSITION:9 T' F) u/ B4 U! b3 |- [6 f1 a, Q. c( C
   hIMC = ImmGetContext(hWnd);( S+ D7 _3 f+ j3 V  P- Q  E
   // 取得中文組字
2 g7 ~8 }2 u! p* R. n, d/ R/ ?2 a    if (lParam & GCS_COMPSTR)
- q/ h% T2 v5 I. a1 W    {
; L) |  U- Q8 E5 ]2 x        dwSize = ImmGetCompositionString(hIMC,GCS_COMPSTR,szCompReadStr,sizeof(szCompReadStr));
9 ~4 K' u4 f8 G8 O' Y        dwSize /= sizeof(TCHAR);$ i8 \# N1 Z6 |& X7 N1 E
       szCompReadStr[dwSize] = TCHAR('\0');) x  A: p& ]: d/ }2 a7 f; c' p
   }. J. ~7 V. U- o* j9 l

, W- |! ~. z5 F& I! q    if(lParam & GCS_COMPREADSTR)
/ P9 K  _2 ]- J0 `. ~, q  J- p, u* K5 }    {
, @6 ]/ ?! C- ~1 Y/ X' D        dwSize = ImmGetCompositionString(hIMC, GCS_COMPREADSTR, (void*)szCompStr, sizeof(szCompStr));
% l7 g( @: M& C        dwSize /= sizeof(TCHAR);6 B6 q8 x+ F4 _# \
       szCompStr[dwSize] = TCHAR('\0');" N* m, C' {0 ?: K1 S' f+ E: K! x
   }& u( U) D9 `9 g7 c/ z2 j; q
$ p$ M: @3 y0 D1 _0 C3 D
   if(lParam & GCS_RESULTSTR)$ I+ W% Y9 m3 K$ t- j$ A
   {# \: f; {: l- f8 Z( @# Q4 C
       // 取得輸出字元5 P. r/ l3 N0 A  ]4 z  f# K' {. z- m
       dwSize = ImmGetCompositionString(hIMC, GCS_RESULTSTR, (void*)szChStr, sizeof(szChStr));! i; [7 V4 H* D/ n( ^
       dwSize /= sizeof(TCHAR);
. V2 B5 G" p+ S. d1 u* G7 A) x        szChStr[dwSize] = TCHAR('\0');
! ?. L; C4 |% p4 {9 U5 g, i% R        lstrcat(m_szLineStr, szChStr);8 k% l; x# w5 r. f  c
   }
. J, ]2 b, w+ e1 z- U* |    break;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|宁德市腾云网络科技有限公司 ( 闽ICP备2022007940号-5|闽公网安备 35092202000206号 )

GMT+8, 2026-5-2 10:27 , Processed in 0.019295 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表