<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>J.et wong's stuff &#187; Symbian</title>
	<atom:link href="http://j.etwong.com/blog-category/symbian/feed" rel="self" type="application/rss+xml" />
	<link>http://j.etwong.com</link>
	<description>{}</description>
	<lastBuildDate>Tue, 20 Apr 2010 01:52:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>双输入对话框CAknMultiLineDataQueryDialog</title>
		<link>http://j.etwong.com/blog-122</link>
		<comments>http://j.etwong.com/blog-122#comments</comments>
		<pubDate>Sat, 23 Jan 2010 13:48:05 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[Symbian]]></category>

		<guid isPermaLink="false">http://j.etwong.com/?p=122</guid>
		<description><![CDATA[CAknMultiLineDataQueryDialog  是个很奇怪的方式
如果在模拟器运行正常，但在真机上无法出现的时候，请注意在mmp加上stacksize的选项
如果还是不行，请注意make clean 原来的项目！
]]></description>
			<content:encoded><![CDATA[<p>CAknMultiLineDataQueryDialog  是个很奇怪的方式</p>
<p>如果在模拟器运行正常，但在真机上无法出现的时候，请注意在mmp加上stacksize的选项</p>
<p>如果还是不行，请注意make clean 原来的项目！</p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-122/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Container中加入切换View视图功能</title>
		<link>http://j.etwong.com/blog-118</link>
		<comments>http://j.etwong.com/blog-118#comments</comments>
		<pubDate>Wed, 20 Jan 2010 15:39:40 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[Symbian]]></category>

		<guid isPermaLink="false">http://j.etwong.com/?p=118</guid>
		<description><![CDATA[在目前情况下，自带的MultiView例子中
可以轻松做到切到view1切换到view2，
但是有时我们需要在container中加一些itemlist，切换到 view2的功能，那要怎么做呢？


其实不是太复杂
我们可以在container里的构造函数里加入view的引用，就可以了

可以参考：fepexample的例子，他里面有就一个iFep aFep的引用例子

值得注意的是一个报错：

illegal use of incomplete struct/union/class 

这个可能是由于没有 container没有include view的头文件导致的，
尽管Carbide c++ 提示 iView能够调用 View库的函数，切记切记]]></description>
			<content:encoded><![CDATA[<p>在目前情况下，自带的MultiView例子中<br />
可以轻松做到切到view1切换到view2，<br />
但是有时我们需要在container中加一些itemlist，切换到 view2的功能，那要怎么做呢？</p>
<p>其实不是太复杂<br />
我们可以在container里的构造函数里加入view的引用，就可以了</p>
<p>可以参考：fepexample的例子，他里面有就一个iFep aFep的引用例子</p>
<p>值得注意的是一个报错：</p>
<p>illegal use of incomplete struct/union/class </p>
<p>这个可能是由于没有 container没有include view的头文件导致的，<br />
尽管Carbide c++ 提示 iView能够调用 View库的函数，切记切记</p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-118/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP加载OPEN SSL功能</title>
		<link>http://j.etwong.com/blog-116</link>
		<comments>http://j.etwong.com/blog-116#comments</comments>
		<pubDate>Fri, 16 Oct 2009 02:28:36 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[Symbian]]></category>
		<category><![CDATA[openssl  Apache curl post]]></category>

		<guid isPermaLink="false">http://j.etwong.com/?p=116</guid>
		<description><![CDATA[ＭＳ是个很麻烦的问题，不简单是从php.ini中去掉
;extension=php_openssl.dll
和把dll复制到c:\windows\system32目录中
你会发现在PHPinfo里，还是看不到openssl的信息。
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-一条分隔线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
看这里的文档：
http://www.php.net/manual/en/openssl.installation.php
大意是说：
在Apache加载PHP模式下，加载这两个dll是有顺序，先去Apache的bin下的dll加载，一看真是两个文件名一模一样，就是大小不一样，
换上新的文件，phpinfo又出现OpenSSL了
但是http  request 还是得不到他的信息，真郁闷，最后还是用Curl来解决这个问题
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要抓取的URL
curl_setopt($curl, CURLOPT_URL, &#8216;https://XXXXX/xxx.xxx&#8217;);
//ＳＳＬ验证
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);  //如果需要验证的话，设成false
// 设置header
curl_setopt($curl, CURLOPT_HEADER, 1); //如果为１，会打印出来header的
// 设置cURL 参数，要求结果保存到字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行cURL，请求网页
$data = curl_exec($curl);
// 关闭URL请求
curl_close($curl);
// 显示获得的数据
var_dump($data);
]]></description>
			<content:encoded><![CDATA[<p>ＭＳ是个很麻烦的问题，不简单是从php.ini中去掉</p>
<p>;extension=php_openssl.dll</p>
<p>和把dll复制到c:\windows\system32目录中</p>
<p>你会发现在PHPinfo里，还是看不到openssl的信息。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-一条分隔线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>看这里的文档：</p>
<p><a href="http://www.php.net/manual/en/openssl.installation.php">http://www.php.net/manual/en/openssl.installation.php</a></p>
<p>大意是说：</p>
<p>在Apache加载PHP模式下，加载这两个dll是有顺序，先去Apache的bin下的dll加载，一看真是两个文件名一模一样，就是大小不一样，</p>
<p>换上新的文件，phpinfo又出现OpenSSL了</p>
<p>但是http  request 还是得不到他的信息，真郁闷，最后还是用Curl来解决这个问题</p>
<p>// 初始化一个 cURL 对象<br />
$curl = curl_init();</p>
<p>// 设置你需要抓取的URL<br />
curl_setopt($curl, CURLOPT_URL, &#8216;https://XXXXX/xxx.xxx&#8217;);</p>
<p>//ＳＳＬ验证<br />
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);<br />
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);  //如果需要验证的话，设成false<br />
// 设置header<br />
curl_setopt($curl, CURLOPT_HEADER, 1); //如果为１，会打印出来header的</p>
<p>// 设置cURL 参数，要求结果保存到字符串中还是输出到屏幕上。<br />
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);</p>
<p>// 运行cURL，请求网页<br />
$data = curl_exec($curl);</p>
<p>// 关闭URL请求<br />
curl_close($curl);</p>
<p>// 显示获得的数据<br />
var_dump($data);</p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-116/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>symbian应用程序Uid</title>
		<link>http://j.etwong.com/blog-108</link>
		<comments>http://j.etwong.com/blog-108#comments</comments>
		<pubDate>Tue, 29 Sep 2009 14:41:45 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[Symbian]]></category>

		<guid isPermaLink="false">http://j.etwong.com/?p=108</guid>
		<description><![CDATA[RWsSession&#38; ws = iEikonEnv-&#62;WsSession();
TInt wgid = ws.GetFocusWindowGroup();
CApaWindowGroupName* gn = CApaWindowGroupName::NewLC(ws, wgid);
TUid aCurAppUid = gn-&#62;AppUid();
CleanupStack::PopAndDestroy(gn);

需要从Uid转为十六进制。。。


const TUid KUidIdleApp5 = {0&#215;10005901};
]]></description>
			<content:encoded><![CDATA[<p>RWsSession&amp; ws = iEikonEnv-&gt;WsSession();<br />
TInt wgid = ws.GetFocusWindowGroup();<br />
CApaWindowGroupName* gn = CApaWindowGroupName::NewLC(ws, wgid);<br />
TUid aCurAppUid = gn-&gt;AppUid();<br />
CleanupStack::PopAndDestroy(gn);</p>
<p><img class="alignnone size-full wp-image-110" src="http://j.etwong.com/wp-content/uploads/2009/09/0002.jpg" alt="0002" width="560" height="254" /></p>
<p>需要从Uid转为十六进制。。。</p>
<p><img class="alignnone size-full wp-image-111" src="http://j.etwong.com/wp-content/uploads/2009/09/0003.jpg" alt="0003" width="550" height="54" /></p>
<p><img class="alignnone size-full wp-image-109" src="http://j.etwong.com/wp-content/uploads/2009/09/0001.jpg" alt="0001" width="521" height="115" /></p>
<p>const TUid KUidIdleApp5 = {0&#215;10005901};</p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-108/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>symbian调试工具-hooklogger</title>
		<link>http://j.etwong.com/blog-104</link>
		<comments>http://j.etwong.com/blog-104#comments</comments>
		<pubDate>Tue, 11 Aug 2009 03:52:20 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[Symbian]]></category>

		<guid isPermaLink="false">http://j.etwong.com/?p=104</guid>
		<description><![CDATA[在使用Symbian进行开发时经常会忘记释放我们曾经使用过的内存或指针，从而导致我们在模拟器中最后退出软件时会爆出提示，而检验遗漏的内存是程序员的天职所在，所以我们要想做好Symbian的开发，就必须熟悉如何查找内存，而Symbian SDK中提供了一个很好的工具HookLogger用来检验我们的内存操作。
下面所提到的是2008年5月1日版（0.423 rc版）（对应的SDK是9.1/S60_3rd的）
下载：
http://developer.symbian.com/main/downloads/files/HookLogger.msi这个是官方的链接地址。
安装：
至于安装并没有像很多文章中所说的那么复杂，我只是安装在默认的目录，而官方的视频教程（后面会提到，也给过链接吧）也是一个象征性的地址。
使用：
我也就不多说了，官方的视频教程（http://developer.symbian.com /main/tools_and_sdks/developer_tools/supported/hook_logger/intro.htt）说的很清楚。如果有些地方因为网速不能打开，那我就做个小的介绍。
1、安装完毕后启动HookLogger的应用程序，这是可以启动模拟器，一般会有一个提示说是你的HookLogger和模拟器没有Hook上，你就直接点击确定并关闭模拟器（不要急着把HookLogger也关了）。
2、设置系统环境变量，新建一个环境变量，名称为epocroot，变量值为C:\Symbian\9.2\S60_3rd_FP1  （一般为你自己的安装目录）。重新启动操作系统。
3、打开Windows的命令控制台（开始菜单中单击运行， 输入cmd然后就按下回车），跳转到你所安装的HookLogger的目录（如默认的 C:\Program Files\HookLogger，这里要在控制台中输入 cd C:\Program Files\HookLogger然后回车），输入命令SetupHooks，回车；会弹出一些提示信息，接着输入SetupHooks epocroot， 回车。
3.1可以看到如下：

C:\Program Files\HookLogger&#62;SetupHooks
** usage:
SetupHooks &#60;DEVICE&#62; [--remove&#124;r] [--platform=&#60;PLATFORM&#62;] [--build=&#60;BUILD&#62;]
** where:
&#60;DEVICE&#62; specifies the device name to attach hooks to (as listed by &#8216;devices&#8217;),
or DEFAULT for the default device, or EPOCROOT to attach to %EPOCROOT%\epoc32
(as used by legacy Symbian tools)
&#60;PLATFORM&#62; defaults to WINSCW
&#60;BUILD&#62; defaults to UDEB
&#8211;remove detaches [...]]]></description>
			<content:encoded><![CDATA[<p>在使用<span class="t_tag">Symbian</span>进行<span class="t_tag">开发</span>时经常会忘记释放我们曾经使用过的<span class="t_tag">内存</span>或指针，从而导致我们在<span class="t_tag">模拟</span>器中最后退出<span class="t_tag">软件</span>时会爆出提示，而检验遗漏的内存是<span class="t_tag">程序</span>员的天职所在，所以我们要想做好Symbian的开发，就必须熟悉如何查找内存，而Symbian <span class="t_tag">SDK</span>中提供了一个很好的<span class="t_tag">工具</span>HookLogger用来检验我们的内存操作。<br />
下面所提到的是2008年5月1日版（0.423 rc版）（对应的SDK是9.1/S60_3rd的）<br />
<span class="t_tag">下载</span>：<br />
<a href="http://developer.symbian.com/main/downloads/files/HookLogger.msi" target="_blank">http://developer.symbian.com/main/downloads/files/HookLogger.msi</a>这个是官方的链接地址。<br />
安装：<br />
至于安装并没有像很多文章中所说的那么复杂，我只是安装在默认的目录，而官方的<span class="t_tag">视频</span><span class="t_tag">教程</span>（后面会提到，也给过链接吧）也是一个象征性的地址。<br />
使用：<br />
我也就不多说了，官方的视频教程（<a href="http://developer.symbian.com/" target="_blank">http://developer.symbian.com</a> /main/tools_and_sdks/developer_tools/supported/hook_logger/intro.htt）说的很清楚。如果有些地方因为网速不能打开，那我就做个小的介绍。<br />
1、安装完毕后启动HookLogger的<span class="t_tag">应用程序</span>，这是可以启动模拟器，一般会有一个提示说是你的HookLogger和模拟器没有Hook上，你就直接点击确定并关闭模拟器（不要急着把HookLogger也关了）。<br />
2、<span class="t_tag">设置</span><span class="t_tag">系统</span><span class="t_tag">环境</span>变量，新建一个环境变量，名称为epocroot，变量值为C:\Symbian\9.2\S60_3rd_FP1  （一般为你自己的安装目录）。重新启动操作系统。<br />
3、打开Windows的命令控制台（开始<span class="t_tag">菜单</span>中单击<span class="t_tag">运行</span>， 输入cmd然后就按下回车），跳转到你所安装的HookLogger的目录（如默认的 C:\Program Files\HookLogger，这里要在控制台中输入 cd C:\Program Files\HookLogger然后回车），输入命令SetupHooks，回车；会弹出一些提示信息，接着输入SetupHooks epocroot， 回车。</p>
<p>3.1可以看到如下：<br />
<strong></strong></p>
<p><strong><strong>C:\Program Files\HookLogger&gt;SetupHooks<br />
** usage:<br />
SetupHooks &lt;DEVICE&gt; [--remove|r] [--platform=&lt;PLATFORM&gt;] [--build=&lt;BUILD&gt;]<br />
** where:<br />
&lt;DEVICE&gt; specifies the device name to attach hooks to (as listed by &#8216;devices&#8217;),<br />
or DEFAULT for the default device, or EPOCROOT to attach to %EPOCROOT%\epoc32<br />
(as used by legacy Symbian tools)<br />
&lt;PLATFORM&gt; defaults to WINSCW<br />
&lt;BUILD&gt; defaults to UDEB<br />
&#8211;remove detaches the hooks, restoring the original EUSER.DLL</strong></strong></p>
<p><strong><strong>C:\Program Files\HookLogger&gt;SetupHooks epocroot<br />
Setting up hooks in &#8220;C:\Symbian\9.2\S60_3rd_FP1\epoc32\release\WINSCW\UDEB&#8221;<br />
已复制         1 个文件。<br />
Setup euser.dll to load EUserParasite_EKA2.dll, original preserved as euser.orig<br />
.dll.<br />
Run SetupHooks with &#8211;r to restore it</strong></strong></p>
<p><strong><strong>C:\Program Files\HookLogger&gt;</strong></strong><br />
4、设置完成，在HookLogger的Filters的Tab页面中，左侧的下拉菜单中选择Include only checked，在下面的Browse for EXE的按钮中选中你要进行<span class="t_tag">调试</span>的那个<span class="t_tag">工程</span>的模拟器对应的<span class="t_tag">exe</span>程序，一般在C:\Symbian\9.1\s60_3rd\epoc32\release\winscw\udeb\中，而<span class="t_tag">文件</span>名一般是你的工程名。<br />
5、设置完毕后启动模拟器，在模拟器中运行你要调试的那个程序，直到退出时爆出 Alloc ********（16位的地址），这时在HookLogger的Heap的Tab，单击第三个按钮（List all alloc），你会发现该页面中有一列Ptr，在这一列中找到你的那个对应的地址（Alloc中的********），然后用鼠标选中这一行，单击下面的 第四个按钮（Alloc details）这时会弹出一个<span class="t_tag">对话框</span>，找到第一个有关你的类名及<span class="t_tag">函数</span>名的位置（这里就是根源所在），在#后的数字就是你的内存泄露所在的位置。<br />
6、跳到你的源文件中步骤4的位置，找出你的内存泄露出现在哪里，这样你就可以进行下一步调试了。</p>
<p><strong>以上方法本人初步研究可以很好的运行，有问题大家在相互交流。</strong></p>
<p><strong>以上大部分内容来自：<em>鬼人王 &gt;&gt; </em></strong></p>
<p><strong><em>http://www.devdiv.net/thread-7886-1-3.html<br />
</em></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-104/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Carbide C++编译排错备忘</title>
		<link>http://j.etwong.com/blog-55</link>
		<comments>http://j.etwong.com/blog-55#comments</comments>
		<pubDate>Sun, 07 Jun 2009 01:25:48 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[Symbian]]></category>
		<category><![CDATA[carbide c++]]></category>
		<category><![CDATA[调试]]></category>

		<guid isPermaLink="false">http://j.etwong.com/?p=55</guid>
		<description><![CDATA[1.编译没有指定到文件
这种可能是某种方法没有实现，或者lib包也没放到mmp中，，，
2. E32USER-CBase 71
The explanation of E32USER-CBase 71
This panic is raised when TRAPs have been nested and an attempt is made to exit from a TRAP nest level before all the cleanup items belonging to that level have been popped off the cleanup stack.
There must be the same number of items on the cleanup stack on [...]]]></description>
			<content:encoded><![CDATA[<p>1.编译没有指定到文件</p>
<p>这种可能是某种方法没有实现，或者lib包也没放到mmp中，，，</p>
<p>2. E32USER-CBase 71</p>
<p>The explanation of E32USER-CBase 71</p>
<p>This panic is raised when TRAPs have been nested and an attempt is made to exit from a TRAP nest level before all the cleanup items belonging to that level have been popped off the cleanup stack.</p>
<p>There must be the same number of items on the cleanup stack on entering a TRAP harness as there is on exiting. In other words, anything that is pushed onto the cleanup stack inside a TRAP harness must be popped off before leaving the harness.</p>
<p>For example, the following code avoids this panic when FooLC() does not leave, by explicitly popping pointer before the end of the harness:</p>
<p>TRAPD(error, pointer = FooLC(); CleanupStack::Pop(pointer));</p>
<p>3.</p>
<h3 class="fnToggleHeadline"><strong><strong>BAFL 15 PANIC</p>
<p>多半是资源文件没有加载进来，记得查看一下编译成功的 rsc或者rsg文件，是否内容有更新</strong></strong></h3>
<p><strong><strong>4.Cardbide c++只是有报错，但没报哪一行<br />
这种就比较复杂一点了，多数是因为mmp里面的.lib文件没有加载进来</strong></strong></p>
<p><strong><strong>5。<br />
</strong></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-55/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>symbian 一些总结</title>
		<link>http://j.etwong.com/blog-67</link>
		<comments>http://j.etwong.com/blog-67#comments</comments>
		<pubDate>Mon, 01 Dec 2008 08:30:10 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[Symbian]]></category>

		<guid isPermaLink="false">http://j.etwong.com/blog-67</guid>
		<description><![CDATA[1.模拟器运行sis程序的可行性:
模拟器上安装的时候就会说文件已经损坏
I do not think you can install it into your emulator. In addition, the build for the target (GCCE or ARMV5) is not usable in the emulator at all!
来源
2.symbian运行SQLite 的可行性:
见这里: symbian SQL
教程:
一哥们做的sourceforge开源的OPEN C的项目,见这里
]]></description>
			<content:encoded><![CDATA[<p>1.模拟器运行sis程序的可行性:</p>
<p><em>模拟器上安装的时候就会说文件已经损坏<br />
I do not think you can install it into your emulator. In addition, the build for the target (GCCE or ARMV5) is not usable in the emulator at all!</p>
<p><a href="http://discussion.forum.nokia.com/forum/showthread.php?t=131385">来源</a></em></p>
<p>2.symbian运行SQLite 的可行性:<br />
见这里: <a href="http://developer.symbian.com/wiki/display/pub/Symbian+SQL" title="symbian SQL">symbian SQL</a></p>
<p><a href="http://www.ddj.com/mobile/198702204?pgno=1" title="SQLite">教程:</a></p>
<p>一哥们做的sourceforge开源的OPEN C的项目,<a href="http://sourceforge.net/projects/sqlites60">见这里</a></p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-67/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>截获按键事件</title>
		<link>http://j.etwong.com/blog-65</link>
		<comments>http://j.etwong.com/blog-65#comments</comments>
		<pubDate>Mon, 13 Oct 2008 14:06:47 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[Symbian]]></category>

		<guid isPermaLink="false">http://j.etwong.com/blog-65</guid>
		<description><![CDATA[1.usual key
In CMyAppUi::ConstructL() I put:
iEikonEnv-&#62;RootWin().EnableReceiptOfFocus(ETrue);
captureEvent = iEikonEnv-&#62;RootWin().CaptureKey(EStdKeyMenu,0,0);
And in the destructor:
iEikonEnv-&#62;RootWin().CancelCaptureKey(captureEvent);

TKeyResponse CMyAppUi::HandleKeyEventL(
const TKeyEvent&#38; KeyEvent,TEventCode aType)
{
TKeyResponse returnKey = EKeyWasNotConsumed;
if(aType == EEventKey)
{
switch(KeyEvent.iScanCode)
{
case EStdKeyMenu:
{
iAppContainer-&#62;SetTextL(_L("Menu key pressed"));
iEikonEnv-&#62;RootWin().SetOrdinalPosition(0, ECoeWinPriorityAlwaysAtFront);
returnKey = EKeyWasConsumed;
break;
}
default:
{
returnKey = EKeyWasNotConsumed;
break;
}
}
}
return returnKey;
}

2.special keys:such as menu key:
EStdKeyMenu,EKeyMenu, EKeyApplication0, EStdKeyApplication0(menu keys)&#8230;.are of TStdScanCode type&#8230;
if u want to use the TStdScanCode type&#8230;use captureKeyUpandDows() method&#8230;
CaptureKeyUpandDowns
3.muilty keys
]]></description>
			<content:encoded><![CDATA[<p>1.usual key</p>
<p>In CMyAppUi::ConstructL() I put:</p>
<p>iEikonEnv-&gt;RootWin().EnableReceiptOfFocus(ETrue);<br />
captureEvent = iEikonEnv-&gt;RootWin().CaptureKey(EStdKeyMenu,0,0);</p>
<p>And in the destructor:</p>
<p>iEikonEnv-&gt;RootWin().CancelCaptureKey(captureEvent);</p>
<p><code><br />
TKeyResponse CMyAppUi::HandleKeyEventL(<br />
const TKeyEvent&amp; KeyEvent,TEventCode aType)<br />
{<br />
TKeyResponse returnKey = EKeyWasNotConsumed;<br />
if(aType == EEventKey)<br />
{<br />
switch(KeyEvent.iScanCode)<br />
{<br />
case EStdKeyMenu:<br />
{<br />
iAppContainer-&gt;SetTextL(_L("Menu key pressed"));<br />
iEikonEnv-&gt;RootWin().SetOrdinalPosition(0, ECoeWinPriorityAlwaysAtFront);<br />
returnKey = EKeyWasConsumed;<br />
break;<br />
}<br />
default:<br />
{<br />
returnKey = EKeyWasNotConsumed;<br />
break;<br />
}<br />
}<br />
}<br />
return returnKey;<br />
}<br />
</code></p>
<p>2.special keys:such as menu key:</p>
<p>EStdKeyMenu,EKeyMenu, EKeyApplication0, EStdKeyApplication0(menu keys)&#8230;.are of TStdScanCode type&#8230;</p>
<p>if u want to use the TStdScanCode type&#8230;use captureKeyUpandDows() method&#8230;</p>
<p>CaptureKeyUpandDowns</p>
<p>3.muilty keys</p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-65/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>symbian安装完立即启动和执行..</title>
		<link>http://j.etwong.com/blog-61</link>
		<comments>http://j.etwong.com/blog-61#comments</comments>
		<pubDate>Tue, 23 Sep 2008 02:11:55 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[Symbian]]></category>

		<guid isPermaLink="false">http://j.etwong.com/blog-61</guid>
		<description><![CDATA[可以在PKG文件里：加入了，FR，RI：
&#8220;$(EPOCROOT)Epoc32\release\$(PLATFORM)\$(TARGET)\TestAutoStart_0xEAF18DD0.exe&#8221;		-&#8221;!:\sys\bin\TestAutoStart_0xEAF18DD0.exe&#8221;,FR,RI
]]></description>
			<content:encoded><![CDATA[<p>可以在PKG文件里：加入了，FR，RI：</p>
<p>&#8220;$(EPOCROOT)Epoc32\release\$(PLATFORM)\$(TARGET)\TestAutoStart_0xEAF18DD0.exe&#8221;		-&#8221;!:\sys\bin\TestAutoStart_0xEAF18DD0.exe&#8221;,FR,RI</p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-61/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Symbian区别：</title>
		<link>http://j.etwong.com/blog-60</link>
		<comments>http://j.etwong.com/blog-60#comments</comments>
		<pubDate>Sat, 20 Sep 2008 15:03:41 +0000</pubDate>
		<dc:creator>J.et wong</dc:creator>
				<category><![CDATA[Symbian]]></category>

		<guid isPermaLink="false">http://j.etwong.com/blog-60</guid>
		<description><![CDATA[  TBuf16&#60;100&#62; iMbBufferNewone; //新的一个码表
TInt i=0;
while(i&#60;10) {
if(i&#60;5)
iMbBufferNewone.Append(_L(&#8220;A&#8221;);
else
iMbBufferNewone = KNullDesC(); //BUG，好像不对&#8230;.
iMbBufferNewone.Delete(0,iMbBufferNewone.Length());//这样子才行？
i++;
}
]]></description>
			<content:encoded><![CDATA[<p>  TBuf16&lt;100&gt; iMbBufferNewone; //新的一个码表<br />
TInt i=0;</p>
<p>while(i&lt;10) {<br />
if(i&lt;5)<br />
iMbBufferNewone.Append(_L(&#8220;A&#8221;);<br />
else<br />
iMbBufferNewone = KNullDesC(); //BUG，好像不对&#8230;.<br />
iMbBufferNewone.Delete(0,iMbBufferNewone.Length());//这样子才行？</p>
<p>i++;<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://j.etwong.com/blog-60/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
