textbox获得焦点时打开输入法出现的问题

zhaojiang1   2007-7-17 13:08 楼主
我想在textbox获得焦点时,自动打开输入法
我在textbox的getfocus事件中时这样写的:
inputMethod.setIME(true);
inputPanel1.Enabled = true;

inputMethod 是callInputMethod的一个实例

public class callInputMethod
        {
               
                [DllImport("coredll.dll")]
                public static extern IntPtr ImmGetContext(IntPtr hWnd);
                [DllImport("coredll.dll")]
                public static extern IntPtr ImmReleaseContext(IntPtr hWnd, IntPtr hIMC);
                [DllImport("coredll.dll")]
                public static extern bool ImmSetOpenStatus(IntPtr hIMC, bool fOpen);
                [DllImport("coredll.dll")]
                public static extern bool ImmSetStatusWindowPos(IntPtr hIMC, Point p);
                [DllImport("coredll.DLL")]
                public static extern IntPtr GetActiveWindow();  

                public int a = 0;

                                       
        //当要打开输入法的时候调用setIME(true),关闭的时候调用setIME(false)。
                        public bool setIME(bool mode)
                        {
                                IntPtr hWnd = IntPtr.Zero;
                                hWnd = GetActiveWindow();
                                if (hWnd == IntPtr.Zero)
                                {
                                        //Can't find ActiveWindow
                                        return false;
                                }

                                IntPtr context = IntPtr.Zero;

                                try
                                {
                                        context = ImmGetContext(hWnd);       //get IMEContext

                                        if (mode == true)
                                        {
                                                //get IMEStatus
                                                a = 5;
                                                return ImmSetOpenStatus(context, true); // IME on
                                               
                                        }
                                        else
                                                if (mode == false)
                                        {
                                                //get IMEStatus
                                                a =10;
                                                return ImmSetOpenStatus(context, false); // IME off
                                        }

                                }
                                finally
                                {
                                        if (context != IntPtr.Zero)
                                        {
                                                ImmReleaseContext(hWnd, context);   //Release IMEContext
                                        }
                                }

                                return false;
                }

        }


结果中文输入法没有出现,
但是我把getfocus中的这两句话放在一个button的click事件中,先点击一下button,再让textbox处于编辑状态时,中文输入法就有了
请问这是什么原因啊
而且现在界面中不允许多这样一个button,请问怎么办啊


回复评论 (3)

类里面有几句话是不需要的
public int a=0;
a=5;
a=10;这几句话是不要的
点赞  2007-7-17 13:10
evc里用SipShowIM吧
点赞  2007-9-29 19:11


顶!

我也顺便打个广告,本人也有支持ESRI ARCGIS的.shp文件的地图的Windows mobile 5.0/6.0手机GIS地图软件----GPS移动GIS(GPSMobileGIS),PC端的服务软件----移动GIS服务平台(GPSMobileGISServer),可成套出售,可以完成以下功能:
1,通过GPRS上网连接后台服务端程序来实时传输在户外工作采集的数据到后台数据库!

2,可以实时发回PDA的GPS信息,在后台地图上直接定位PDA用户的位置,也可以下发PDA的经纬度信息让PDA用户定位和跟踪其它PDA用户,了解自己与其它PDA的位置关系,起到定位和跟踪的作用!

3,可以发回PDA当前所在地名如在天河城附近等,实现在外面工作就知道在何时何地上班打卡的效果,同时可以在后台为相应的PDA用户设置固定时长返回一次当前位置的GPS信息确保对相应PDA用户的定位,跟踪与监控!

4,移动GIS服务平台可以对PDA用户进行登记,注销等管理,在移动GIS服务平台登记的PDA用户才可登陆此服务器,依据IMSI和IMEI号来进行登陆验证,安全可靠,

5,可以对在外面工作的PDA用户进行任务指派和任务管理如
   PDA号码:13800138000
   任务名称:测试线路
   任务说明:主要是在天河北路一带的电力设施进行检测!

6,(此功能为信息采集的核心功能)用户可自行设置需要采集信息的对象及其属性,指派给指定的PDA用户,如测试电路的属性模板:
    //0-编辑属性(可多个) ; 1-下拉属性(可多个) ; 2-选择属性(可多个) ; 3-大文本编辑框(可以没有此属性,但有此属性时只能有一个) ; 4-列表属性(可以没有此属性,但有此属性时只能有一个)(属性0+属性1+属性2/2+属性2%2)<=28
    name,名称,0,;beproject,所属项目,0,;type,类型,1,0:小-1:中-2:大;complete,完成,2,;remark,备注,3,;listbox,设备表,4,

7,可以实时上传文件到后台服务器,实时下载后台服务器的文件和实时更新PDA上客户端的系统!

8,可以实时采集和传输图像信息!

跟据您的需要,还可以增加其它功能!

可以应用在以下系统:
     1、PDA移动办公如户外,异地打卡,上班;
     2、GIS林业资源监控系统;
     3、GIS电力巡检系统等;
     4、GIS通信资源如移动,联通,电信的管线资源巡检系统等!

QQ:546046182
EMail:wang921718@tom.com

点赞  2008-11-14 10:39
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复