VS 2005输入法全角半角切换问题

    技术2022-05-11  124

      一.控件输入法全角/半角解决方案   直接把控件的imemode = imdemode.kankanhalf,强制转化成半角就OK。

      二.窗体输入法全角/半角解决方案   using   System;     using   System.Collections.Generic;     using   System.ComponentModel;     using   System.Data;     using   System.Drawing;     using   System.Text;     using   System.Windows.Forms;     using   System.Runtime.InteropServices;         namespace   Lqjt     {             public   partial   class   ImeForm   :   Form             {                     public   ImeForm()                     {                             InitializeComponent();                     }                     //声明一些API函数                     [DllImport("imm32.dll")]                     public   static   extern   IntPtr   ImmGetContext(IntPtr   hwnd);                     [DllImport("imm32.dll")]                     public   static   extern   bool   ImmGetOpenStatus(IntPtr   himc);                     [DllImport("imm32.dll")]                     public   static   extern   bool   ImmSetOpenStatus(IntPtr   himc,   bool   b);                     [DllImport("imm32.dll")]                     public   static   extern   bool   ImmGetConversionStatus(IntPtr   himc,   ref   int   lpdw,   ref   int   lpdw2);                     [DllImport("imm32.dll")]                     public   static   extern   int   ImmSimulateHotKey(IntPtr   hwnd,   int   lngHotkey);                     private   const   int   IME_CMODE_FULLSHAPE   =   0x8;                     private   const   int   IME_CHOTKEY_SHAPE_TOGGLE   =   0x11;                     protected   override   void   OnActivated(EventArgs   e)                     {                             base.OnActivated(e);                             IntPtr   HIme   =   ImmGetContext(this.Handle);                             if   (ImmGetOpenStatus(HIme))     //如果输入法处于打开状态                             {                                     int   iMode   =   0;                                     int   iSentence   =   0;                                     bool   bSuccess   =   ImmGetConversionStatus(HIme,   ref   iMode,   ref   iSentence);     //检索输入法信息                                     if   (bSuccess)                                     {                                             if   ((iMode   &   IME_CMODE_FULLSHAPE)   >   0)       //如果是全角                                                     ImmSimulateHotKey(this.Handle,   IME_CHOTKEY_SHAPE_TOGGLE);     //转换成半角                                     }                                 }                     }             }//form     } 


    最新回复(0)