HelloCarbide Example详细解读

这篇文章详细解读了 S60 的 Hello Carbide 例子程序,通过这个,我们能了解到很多 Symbian 开发的知识。

Environment:
Windows XP SP2, S60 SDK 3rd MR, Carbide.C++ V1.1

关入如何建立 hello carbide example, 请参阅《S60 Development, Getting Started, HelloCarbide example》

当我们完全建立起来这个 Hello Carbide example 程序的时候,Framework 一共为我们建立了以下的 Class:
1,CHelloCarbideApplication
一个 Application 的应用程序类,从 CAknApplication 继承出来,
2,CHelloCarbideDocument
这个是文档类,专门用来存储应用程序的数据的
3,CHelloCarbideAppUi 应用程序的 UI 类
4,CHelloCarbideAppView 应用程序的 View 类

执行流程

应用程序的入口,在 HelloCarbide.cpp 这个文件中,
整个程序的入口,Symbian 程序的入口函数名叫 E32Main,不是普通 PC 开发中的 main()
EikStart 这个 class 是专门用来初始化和启动应用程序的,RunApplication 函数的参数是一个工厂方法,在这里就是
NewApplication

LOCAL_C CApaApplication* NewApplication()
{
return new CHelloCarbideApplication();
}

GLDEF_C TInt E32Main()
{
return EikStart::RunApplication( NewApplication );
}


程序的执行流程就从这里开始,在 NewApplication 方法中 new 了一个 CHelloCarbideApplication class 的 Object,
然后 S60 Framework 会调用 CHelloCarbideApplication::CreateDocumentL() 方法来创建一个文档对象,

CApaDocument* CHelloCarbideApplication::CreateDocumentL()
{
return (static_cast( CHelloCarbideDocument::NewL( *this ) ) );
}

我们看到,在这个方法中,调用了 CHelloCarbideDocument class 的 static 函数 NewL.
在这里的 NewL 和 NewLC 方法就是典型的 Symbian 的 Clean Stack 的用法,
Clean Stack 是 Symbian 中非常重要的概念,一定要搞明白,
请读下面这个文档,它非常清楚的说明了 Clean Stack 的用法,在结合这一段代码,就能很好理解了。

CHelloCarbideDocument* CHelloCarbideDocument::NewL( CEikApplication& aApp )
{
CHelloCarbideDocument* self = NewLC( aApp );
CleanupStack::Pop( self );
return self;
}

CHelloCarbideDocument* CHelloCarbideDocument::NewLC( CEikApplication& aApp )
{
CHelloCarbideDocument* self = new ( ELeave ) CHelloCarbideDocument( aApp );

CleanupStack::PushL( self );
self->ConstructL();
return self;
}

再继续,S60 framework 会调用 下面整个函数来创建 UI 对象
CEikAppUi* CHelloCarbideDocument::CreateAppUiL()
{
return ( static_cast ( new ( ELeave ) CHelloCarbideAppUi ) );
}

void CHelloCarbideAppUi::ConstructL()
{
// Initialise app UI with standard value.
BaseConstructL();

// Create view object
iAppView = CHelloCarbideAppView::NewL( ClientRect() );
}

在这里又会去调用 CHelloCarbideAppView::NewL 来创建 View 对象,这个 NewL 方法和 CHelloCarbideDocument::NewL 原理是完全一样的,这里就不多说了。

至此,Hello World 程序的初始化过程完毕。


关于调试

你最好能自己单步跟踪调试一下程序,就能很清楚的看到整个程序的执行流程,对你理解 Symbian 程序有非常打的帮助。

在 Editor View 中,共有下面三种方法可以设置断点,
* Double-click the marker bar to the left of the line of code where you want to place a breakpoint
* Right-click in the marker bar and select Toggle Breakpoint
* Click on the line of code and select Run > Toggle Breakpoint from the program menu bar

然后,主菜单 Run > Debug As > Debug Symbian OS Application,就可以开始调试。
在调试的过程中有四个按键需要了解,
F5,Step Into
F6,Step Next
F7,Step Return
F8,Resume

在这里,设计到了 S60 的 framework,关于 Framework 的详细信息,请阅读下面这份文档,在阅读的过程中,结合 Hello World 程序,你就能加深在 Symbian 程序的理解。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9403012/viewspace-1280/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9403012/viewspace-1280/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Red插件是Eclipse中用于支持Robot Framework测试框架的插件。它提供了一个用于编辑、运行和调试Robot Framework测试套件的集成开发环境。 Red插件的源码解读如下: 1. 插件结构 Red插件的源码结构如下: - com.nokia.carbide.robotsdk.red.ui:包含了插件中的所有UI组件,如编辑器、视图、向导等。 - com.nokia.carbide.robotsdk.red:包含了插件的主要Java代码,如插件激活、Robot Framework测试执行、调试等。 - com.nokia.carbide.robotsdk.red.preferences:包含了插件的偏好设置相关代码。 - com.nokia.carbide.robotsdk.red.launching:包含了插件的启动配置相关代码。 - com.nokia.carbide.robotsdk.red.tests:包含了插件的单元测试代码。 2. 核心组件 Red插件的核心组件有: - RedEditor:用于编辑Robot Framework测试套件。 - RedView:用于显示Robot Framework测试套件的概览信息。 - RedLauncher:用于启动Robot Framework测试套件的执行。 - RedDebugger:用于调试Robot Framework测试套件的执行。 - RedPreferences:用于管理插件的偏好设置。 3. 插件机制 Red插件在Eclipse中使用了插件机制。插件机制是Eclipse中的一种模块化开发方式,允许不同的插件之间进行交互和扩展。Red插件通过插件机制实现了对Robot Framework测试框架的支持,同时也可以通过扩展点和扩展来增强插件的功能。 4. 插件扩展点 Red插件提供了以下扩展点: - org.eclipse.ui.editors:用于扩展编辑器。 - org.eclipse.debug.core.launchConfigurationTypes:用于扩展启动配置类型。 - org.eclipse.debug.core.launchDelegates:用于扩展启动器。 - org.eclipse.debug.ui.launchConfigurationTabGroups:用于扩展启动器配置选项卡组。 - com.nokia.carbide.robotsdk.red.redSourceLookupParticipants:用于扩展调试源码查找参与者。 5. 插件依赖 Red插件依赖以下插件: - org.eclipse.core.resources - org.eclipse.core.runtime - org.eclipse.jface.text - org.eclipse.ui - org.eclipse.ui.editors - org.eclipse.ui.forms - org.eclipse.ui.ide - org.eclipse.ui.views - org.eclipse.ui.console - org.eclipse.debug.core - org.eclipse.debug.ui - org.eclipse.jface.preference - org.eclipse.help - org.eclipse.swt - org.eclipse.swt.win32.win32.x86_64 6. 插件使用 要使用Red插件,需要将插件安装到Eclipse中。可以从Eclipse Marketplace或者插件官网下载插件安装包,然后通过Eclipse的安装向导进行安装。 安装完毕后,可以在Eclipse的菜单栏中找到Red插件的菜单项,从而使用插件提供的功能。 总的来说,Red插件是一个非常实用的Eclipse插件,为Robot Framework测试框架提供了良好的集成环境。如果你需要使用Robot Framework进行测试,那么Red插件是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值