我的手机开发(七)——WinCE输入法——基本概念(1)

      这周的任务好难——输入法。基本没概念。

      经过了两周的痛苦挣扎,总算对一些基本概念开始慢慢懂了。但是真正动手开发,感觉还是:路漫漫其修远兮。。。。。

      现在,我们先来直观的认识一下输入法的界面

                            

                           

                           

                          

这里我们可以看到总共有三个窗口:窗口1是我们的字符输入窗口

                                             窗口2是备选窗口,也就是根据我们输入的字符,输入法所匹配出来的字符串。

                                             窗口3是我们输入法的状态窗口,这个窗口我们可以设置中/英切换等状态。

要是我们把输入法,简化简化再简化,简化到窗口1和窗口2,我们就可以完成一个最粗陋的输入法。首先窗口1捕获键盘消息,显示我们输入的字符串,接着我们在从字库提取相应的字符,然后让窗口2显示出来,当用户选择了某一字符时,我们在把字符显示到应用程序上。这样我们不就完成了一个输入法么。但是,说起来容易做起来难啊。先不说那些漂亮的界面效果、各种键盘的处理、字库的匹配算法、输入字符的流畅显示、光标的定位,就单单让用户输入的字符在三个窗口(应用程序、窗口1、窗口2)之间顺利的通讯显示,都让我忙活了一天。

好在windows给我们提供了一个叫IME的东东。

IME:Input Method Editor

      IME是一种通过将键击转换成亚洲字符的方式在程序中输入亚洲文字的程序。IME 将键击解释为字符,然后将正确的解释插入到所使用的程序中。在windows系统中IME就是一个DLL

       在windows中有一种叫组件的编程思想,也就是大名鼎鼎的COM。而IME就是一个可拆卸COM(这一会儿我们会慢慢的详细解释)。现在我们只需要知道IME就是微软为输入法编程提供的控件,在这个控件里,微软为我们封装了一些底层的窗口处理,并且提供了一些外部接口,让我们来定制我们自己的输入法。这样只要我们一步步跟着IME接口走,我就可以实现一个比较简单的输入法。

       默认情况下,IME提供了两个主要的窗口:用户界面包括状态窗口、字母组合窗口和列选窗口,通过这个窗口,用户可以用键盘输入并且查看和选择想要的字符。

                                                           IME转换接口,由一组IME 模块引出函数提供,这些函数被IMM(输入法管理器)调用。

      应用程序可以使用输入法管理器(IMM)函数和消息来创建并且管理其自己的IME窗口。

      (起初对“管理”两个字觉得很高深,怎么IMM和IME能管理窗口呢?IME不是DLL怎么又去管理了呢?IMM又是什么?现在明白了,所谓的IME和IMM不过是一个称呼,可以说是对一些输入法函数和消息的一个统称。“IMM管理”就说在系统的帮助下,用一些叫IMM****的函数帮我们实现了一些功能,也就是说我们可以不用关心他们了。现在我们就是老板了,只要安排好小E和小M就好了,他们去帮我调用那些小喽啰(底层API和消息)去实现我们的计划。)

SIP:Software Input Panel

       软件输入面板,也就是管理我们智能手机上常见的软键盘的COM组件。

有了这些强有力的组件我们的手机输入法的开发可以说是如虎添翼。这样我们的输入法有了组件去管理,可以为我们节省很多体力了。

胜利就在眼前了,只要我们掌握了这两个组件。我们的输入法就大功告成了。

但是别高兴的太早,这两个组件的学习也是很困难的,对于连DLL都不知道的我。一上来就是COM,在那接口海洋中,我可真是沉沉又浮浮。。。

转载于:https://www.cnblogs.com/rubywang/archive/2009/01/10/1373496.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值