包含头文件
#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,程序搭积木似的就会越来越臃肿。
摘要: 下面这行代码可以屏蔽listbox的高亮效果:
iListBox->ItemDrawer()->SetFlags(CListItemDrawer::EDisableHighlight);
现在看来这么做在一般情况下OK,但如果listbox内容超过一页就有问题了!
设想这样一种场景,如果listbox使用这个flag屏蔽了高亮,用户按下上下方向键会有什么情况呢?
答案就是,虽然高亮效果被屏蔽了,但“不可见”高亮选中的项目还是存在的!这个时候如果listbox有多页的话,必须按N次,将高亮(虽然看不到)移动到最底下一个项目,然后才会翻页。
阅读全文
这两天一直在被模拟器上网设置折磨,终于弄好了之后气儿还没喘匀,发现编译时后出现问题(T_T)/~~~:
***Generating makefiles.
C:\WINDOWS\system32\cmd.exe /c bldmake bldfiles WINSCW UDEB
EPOCROOT environment variable must be capitalised
BEGIN failed--compilation aborted at D:\Symbian\9.2\S60_3rd_FP1\epoc32\tools\/E32env.pm line 52.
Compilation failed in require at D:\Symbian\9.2\S60_3rd_FP1\epoc32\tools/bldmake.pl line 28.
BEGIN failed--compilation aborted at D:\Symbian\9.2\S60_3rd_FP1\epoc32\tools/bldmake.pl line 28.
***BLDMAKE Command failed with error code 9
***Stopping. Check the Problems view or Console output for errors.
上网查了半天,无论是Nokia Forum Wiki还是上面的讨论区都说是系统环境变量设置的问题。加上由于上网设置时候的确动了环境变量,于是来回来去得改。从EPOCROOT到SYSTEMROOT各种大小写、绝对相对路径设置了N多还是不行。
快放弃时候发现了另外一个解决方案:
打开\Epoc32\tools\e32env.pm,
把die "EPOCROOT environment variable must be capitalised\n" if (`set EPOCROOT` !~ /^EPOCROOT=.*/m);
注释掉。
按照方法注释了之后,程序顺利编译!ヽ(^。^)ノヽ(^。^)ノヽ(^。^)ノ
bldmake的错误提示太迷惑人了——因为无论从什么角度看都觉得是路径问题。
标题的“塞班”并不是那个Saipan岛,而是Symbian。
毕业后阴差阳错地开始了Symbian编程。到现在已经有将近5个月了,虽然中间有一个多月在学校度过了最后的学生生活,但也有了不少的积累。
况且,以后在塞班这个暗无天日的小岛上,应该会呆很久吧……
这个Blog,用来和Symbian开发者们分享心得、讨论问题,作为一个新人,恐怕最多的还是给自己以后的职涯纠偏。
那么,上岛了。
P.S:很怀念.Text系统,第一个Blog就是在Donews开的。后来才在MyDonews和Yo2的WP系统注册了心的账号。
P.P.S:如果这篇日志发布到首页了请管理员帮忙去掉,刚开始用,不太熟悉CPPBlog的系统。THX