helloworldbasic研究总结(下)

DLL入口点说明:
当一个应用程序启动时,E32Dll就被调用并带有一个参数aReason.这个参数可能下面几种中的一种EDllProcessAttach, EDllThreadAttach, EDllThreadDetach or EDllProcessDetach.
E32Dll是一个全局函数,别作为DLL入口点来引用。这个函数是必须出现在symbian程序中。
在这个工程中,该函数只是简单的返回一个KErrNone去指示这里没有什么问题。必须使用这个入口点去初始化或是重置线程本地存储。
最后,请注意虽然入口点被模拟器调用,但是它不被作为默认调用在目标设备上,它必须被添加到mmp文件中。如:EPOCCALLDLLENTRYPOINTS

创建应用程序对象说明:
注意NewApplication方法被DLL导出,到处函数在函数名前添加EXPORT_C修饰符。如果缺少EXPORT_C符,代码连接会失败。
框架首先调用这个函数通过导出方式,这就意味在DEF文件中NewApplication方法必须是第一个。默认情况下,工具链自动确保该函数为第一位。
注意,它的构筑不使用一般的new(ELeave)方法,而是C++样式的new。这是因为TRAP宏还没有被应用程序创建。如果系统不能分配内存给应用程序实例,返回的指针将是NULL。框架会检查它必要时。

创建App UI和视图对象说明:
注意,AppUI对象的创建不好使用Symbian系统提供的两段构造。而是调用C++的构造并返回一个指向被创建的实例的指针给框架。框架之后调用ConstructL来完成构造。App UI将所有权给了框架,因此文档对象就不必负责销毁它了。

重绘屏幕说明:
Draw函数被框架调用当视图需要被重绘的时候,并且包含所有需要去绘制视图的代码。注意框架只调用Draw方法来响应一般的系统事件。因此,程序员不能直接调用Draw方法,在调用前系统的图形上下文需要被激活。替代的方案是,通过调用DrawNow方法来重绘屏幕。
注意,Draw方法不能异常退出。这是因为调用是由框架直接完成的,并且框架不知道如何去处理捕获的错误。取而代之的是Draw函数必须TRAP并处理任何错误。

posted @ 2006-08-05 17:13  moonz-wu  阅读(277)  评论(0编辑  收藏  举报