包含头文件
#include <peninputsrveventhandler.h>
#include <peninputclient.h>
定义变量
RPeninputServer iPeninputServer;
这里一个比较搞笑的地方在于RPeninputServer这个类竟然是定义在peninputclient.h中的。
为什么一个服务器要定义在名叫client的文件中啊搞不懂。
将MPenUiActivationHandler子类化,并且重写函数
private: // from MPenUiActivationHandler
/**
* @see MPenUiActivationHandler
*/
void OnPeninputUiDeactivated();
/**
* @see MPenUiActivationHandler
*/
void OnPeninputUiActivated();
构造的时候连接服务器并且注册回调类
if ( AknLayoutUtils::PenEnabled() )
{
User::LeaveIfError( iPeninputServer.Connect() );
iPeninputServer.AddPenUiActivationHandler( this, EPluginInputModeAll );
}
使用AknLayoutUtils::PenEnabled()判断是否为触摸屏手机是必要的。
别忘了在析构时候关闭服务器
iPeninputServer.RemovePenUiActivationHandler();
iPeninputServer.Close();
最后就是要加入
LIBRARY peninputClient.lib
我最初以为只需要从一个M类继承并且实现相关函数就可以了,谁知道还需要连接一个Peninput Server。感觉这样做并不好,第一名字混淆了,就是刚才说的那个问题;第二就是一旦其他程序操作不当或者server本身挂掉了,所有功能也就都失效了;最后一点,也是Symbian特色了,用一个功能就要加入一大堆头文件用一大堆API,程序搭积木似的就会越来越臃肿。