2009年03月25日

Introduction     

When developing for Symbian OS you might have experienced numeric error codes or panics of some sort. Usually you would have to look up the description by manually searching the Symbian documentation, which can be cumbersome and time consuming.

This time is over! Now you will automatically get the panic description to any panic that occurred in the emulator displayed right within Carbide.c++. You simply have to add the PanicLookup plug-in to Carbide.c++ and it will automatically detect any panic that occurs. There are no compromises; you will see exactly the same description that is available in the Symbian OS 9.3 System Panic Reference.

You might ask what will happen if you experience a panic on one of your test devices or one of the standard Symbian OS error codes. No problem! Just enter the panic type and number or the error code into the plug-in’s text field and the description will be displayed. Even better, PanicLookup supports an auto complete feature, which considerably speeds up entering panic codes. Additionally, you can hit TAB once the right panic type is suggested to directly jump to the panic number to save even more time.

 Installation

Extract the plug-in (fhhgb.carbide.paniclookup.1.0.0.jar) to your Carbide.c++’s plug-in directory (e.g. C:\Program Files\Nokia\Carbide.c++\plugins). Launch Carbide.c++ and go to "Window -> Show View -> Other …". Choose "Panic Lookup" from the list and click OK. In order to take advantage of the automatic detection feature, you have to turn on epocwind.out logging (Emulator: "Tools -> Preferences -> C++ Debug -> Enable EPOCWIND.OUT logging").

download link: http://www.symbianresources.com/projects/paniclookup/PanicLookup.zip

2009年03月17日

细节请看下面的网址: http://www.martin.st/symbian/

个人觉得这个其实没太大的用处。symbian的开发还是在windows平台好了,如果喜欢linux平台,不如关注Maemo平台和QT算了。

2005年06月13日

RealPlay for Nokia S60 cvs view

https://helixcommunity.org/viewcvs/cgi/viewcvs.cgi/clientapps/symbian/player/series60/

2005年06月10日

上面已经讲了所有从CCoeControl继承的类都可以使用相关Draw函数。现在用一个例子来
说明我的疑惑

在。net2003下新建一个Symbian工程,使用的工程模板为:S60 View based app。
工程建好后,src目录下有如下:Symbian1App。cpp , Symbian1AppUi.cpp ,
Symbian1document.cpp , Symbian1View.cpp , Symbian1View2.cpp , Symbian1Container.cpp
Symbian1Container2.cpp 这5个文件,是典型的MVC结构。其中 Symbian1View.cpp ,
Symbian1View2.cpp , Symbian1Container.cpp , Symbian1Container2.cpp 都是从
CCoeControl继承下来的。在Symbian1Container.cpp , Symbian1Container2.cpp文件中,
重载了父类的Draw()函数,代码如下:
void CSymbian1Container::Draw(const TRect& aRect) const
{
    CWindowGc& gc = SystemGc();
    // TODO: Add your drawing code here
    // example code…
    gc.SetPenStyle( CGraphicsContext::ENullPen );
    gc.SetBrushColor( KRgbGray );
    gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
    gc.DrawRect( aRect );
}
这个函数就是使用灰色来填充这个window的客户区域,也就是清屏。

现在我在这个函数里添加几句话来实现画字符,代码如下:
void CSymbian1Container::Draw(const TRect& aRect) const
{
    CWindowGc& gc = SystemGc();
    // TODO: Add your drawing code here
    // example code…
    gc.SetPenStyle( CGraphicsContext::ENullPen );
    gc.SetBrushColor( KRgbGray );
    gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
    gc.DrawRect( aRect );

    // add
    _LIT(KMyText,"My text");
    gc.DrawText(KMyText, TPoint(40, 40) );
    // end
}

打开模拟器,进入这个程序后马上就退出到桌面,如果删掉添加的那两行代码就OK,难道说
在Container里不能直接画Text吗?还是因为Container里添加了其他Control的缘故?

下次试着在View里面画,看看结果怎么样?当然肯定要改变一下,不用MVC的结构。因为
我在SDK的Example里看到绘图的例子就是直接在View里画的,而且没有Container。难道说
真的是Container在搞怪?!

2005年06月09日

在Symbian中,CCoeControl类提供绘图函数Draw,DrawNow,DrawDeferred。所有从CCoeControl继承
下来的类都可以通过这些函数来绘制字符、图片、控件等等。

可以通过CCoeControl::SystemGc()得到CWindowGc,还可以通过CEikonEnv::Static()->SystemGc()在
Control以外得到CWindowGc。

Draw()--不能直接访问Draw函数。当window被创建或在其他与window相关的事件中,由系统调用。

DrawNow()--我们可以通过这个函数来通知系统立即调用Draw()函数进行重绘。

DrawDeferred()--通过这个函数通知系统某个control区域可用,但什么时候重绘由系统决定。

在游戏中,我们经常需要重绘,但不保证每次调用DrawDeferred()函数后Draw()都能够被调用,也
就是说,短时间内多次调用DrawDeferred()函数可能会导致前面的重绘过程被后面的淹没掉,在画
面表现上会和理想情况的有差异。

在绘画事件以外我们也可以进行绘制,通过一些附加的步骤:
1.通过CWindowGc::Activate()来激活绘图上下文
2.使用RWindow::BeginRedraw()来通知系统准备开始绘制
3.画你想画的…
4.使用RWindow::EndRedraw()来通知系统绘制结束
5.使用CWindowGc::Deactivate()来使绘图上下文无效

     好久没碰Symbian了,最近又有了兴趣,打算继续学习下去。下载了2.1中文版的SDK,1.1版的NDS for Symbian C++。XP SP2系统,先安装。net2003,再安装NDS,再安装SDK。安装过程一切顺利。所有的程序都安装在E盘。启动。net2003,却报NDS插件的参数不正确,进入。net,新建Symbian工程,编译,出错,报:cl.exe创建失败。在命令行下,abld build wins udeb却成功,再在。net下执行工程,成功!

     我估计在。net下编译失败是因为NDS插件没有正确安装到。net的缘故,不然在命令行下,也不会编译成功。但怎么解决这个问题还不知道!虽然这样也能用,但总是不太方便。希望有朋友能解决这个问题!

**********************************************************************************

最近在Nokia论坛上看到解决方法:

在VS中选择Tools->Options->Projects->Visual C++ Directories,加上$(VCInstallDir)bin 和 $(VSInstallDir)Common7\IDE