WEB开发网
开发学院手机开发Symbian 开发 在Symbian exe 程序中显示图形 阅读

在Symbian exe 程序中显示图形

 2010-05-06 21:39:00 来源:WEB开发网   
核心提示:它只能在真机(手机)上运行,在模拟器上你会得到一个严重错误,在Symbian exe 程序中显示图形(4),因为RWsSession::Connect() 会失败,原因是当一个exe程序在模拟器上运行的时候,在ARM(手机)上是通常的.exe,要注意所需要修改的仅仅是启动代码上,它(模拟器)是不会启动窗口服务器作为其初

它只能在真机(手机)上运行。在模拟器上你会得到一个严重错误,因为RWsSession::Connect() 会失

败。原因是当一个exe程序在模拟器上运行的时候,它(模拟器)是不会启动窗口服务器作为其初始化的

一部分的。但是在手机上窗口服务器总是运行着的。

There're a couple of ways to solve this. On Series 60 SDK v1.2, there's an undocumented

function which does exactly this for us. RegisterWsExe() is provided by wserv.lib. So now

our entry point function is:

有许多方法解决这个问题。在Series 60 SDK v1.2,有一个未公开的函数为我们解决了这个问题。

wserv.lib提供了RegisterWsExe()这个函数。现在我们的入口函数:

void RegisterWsExe(const TDesC&);

GLDEF_C TInt E32Main()

{

__UHEAP_MARK;

CTrapCleanup* cleanup = CTrapCleanup::New();

#if defined(__WINS__)

RegisterWsExe(_L("ExeUI.exe"));

#endif

TRAPD(error, ExeMainL());

__ASSERT_ALWAYS(!error, User::Panic(_L("EXEUI"), error));

delete cleanup;

__UHEAP_MARKEND;

return 0;

}

The problem with this solution is that it's not as generic as we might want. There's

another way, which requires some more bit of work, that consists of changing the target

type to exedll or epocexe. This means that on WINS (emulator) we get a .dll, and on MARM

(target) we get the .exe as usual. Note that all changes will be made to the startup code,

that is, no changes are made to ExeMainL() code.

这个解决方案并不是我们所通常所希望的。有另外一种方式,只需要多做一点儿工作,包括把目标类型

改为exedll 或 epocexe。这意味着在模拟器上我们得到的是 .dll,在ARM(手机)上是通常的.exe。要

注意所需要修改的仅仅是启动代码上,ExeMainL()使没有变化的。

This is how our new startup code looks, with the two functions required by the exedll type

上一页  1 2 3 4 5  下一页

Tags:Symbian exe 程序

编辑录入:coldstar [复制链接] [打 印]
赞助商链接