bmconv的使用

用Carbide可以编辑一个mbmdef文件,加入要使用的bmp文件,make时会根据这个mbmdef文件生成mbm文件。不过,Carbide不会生成需要的mbg头文件。我用bmconv工具来创建mbg文件:

bmconv /hMyDemo.mbg mydemo.mbm cross.bmp not.bmp

可以把bmconv命令设为Pre-build step。

Drawing text on screen

来自SDK中文档Developer Guides >> Programming Games in C++

要加入gdi.h这个头文件,否则编译时会报错unresolved external symbol TFontSpec


#include

同时还要修改mmp文件,加入LIBRARY gdi.lib。我用的IDE是Carbide c++ Express,新建的Project没有生成mmp文件,需要修改Project的build配置,把gdi.lib加到Linker的Libraries列表中。

格式化文本用TBuf::Format()

// Get smallest possible arial font
_LIT(KMyFontName,"Arial");

CFont* myFont;

TFontSpec myFontSpec(KMyFontName, TInt(1));

CGraphicsDevice* screenDevice = iCoeEnv->ScreenDevice();

screenDevice->GetNearestFontInTwips(myFont,myFontSpec);
// Use new font
gc.UseFont(myFont);

// Get the width and height of screen
TInt width = aRect.Width();
TInt height = aRect.Height();

// Draw a formated text
TBuf<32> text;
_LIT(KMyText, "width=%d, height=%d");
text.Format(KMyText, width, height);
gc.DrawText(text, TPoint(10, height) );

// Discard and release the font
gc.DiscardFont();
screenDevice->ReleaseFont(myFont);

S60 SDK的网络连接设置 - 使用Windows XP网桥

看到题目,你可能会觉得多此一举,直接用可用网卡的本地连接不就行了,还费功夫建网桥(Network Bridge) 干嘛?

呵呵,这是因为我安装S60 SKD的机器是自己的Notebook(Thinkpad T43),只有无线网络可用。通过network_config.bat和npacketadmin.exe这两个工具(都在%EPOCROOT%/Epoc32/tools目录下)配置使用无线网卡(Intel(R) PRO/Wireless 2200BG),会报错,说是网卡不支持promiscuous混杂模式。(当然,用有线网卡是没有问题的,可我没有多余的网线了)。这篇文章的作者也遇到了同样的问题。

Google了好半天,没找到什么办法,也许是关键词不对。但用promiscuous这个关键词搜索时发现了这篇e文Blog文章 Windows XP Network Bridge feature and Wireless NIC's。对啊,既然无线网卡不支持promiscuous mode,可以试试桥接闲置的有线网卡,再让S60 SDK使用新的网桥连接。按照它的描述,建网桥,并启用无线网卡的 ForceCompatibilityMode。然后重新配置SDK的网络连接就可以使用了。

google.jpg

networkbridge.jpg