上次在参考研究mobile sdk 6.0中自带的DDraw例子时发现在模拟器上跑到创建后备缓冲时由于不支持DDSCAPS_BACKBUFFER而导致程序不能运行,google了一通发现m$网站和其他一些论坛上也有人问过类似问题,得到的答案貌似是说emlator上不能跑DDraw和D3D的程序,要测只能用device,其实只要自己实现一个创建后备缓冲以及用blit模拟flip的方式就可以在模拟器上跑了,并不是模拟器根本就没有实现DDraw,只是没有实现硬件后备缓冲、翻转等操作(其实在现在的PC模拟器上的这2种方式应该也没有什么效率上的差异吧)。
具体代码:
Continue reading…
移动平台
Nokia官网Sound Mixer Example v2.1中用的wav文件格式
Nokia官网提供的混音示例程序中http://www.forum.nokia.com/info/sw.nokia.com/id/650db12f-06aa-4608-b17a-387b70412304/S60_Platform_Sound_Mixer_Example_v2_1_en.zip.html使用的wav格式为16-bit mono的标准pcm采样文件的纯采样数据部分(这样好处是去掉了wav头信息,减少了一定的容量,坏处就是不能用一般的播放器直接播放),以下为生成该种wav的方法:
Continue reading…
windows mobile中的directdraw
今天说研究一下mobile的游戏开发吧,先从2d这块入手。查到资料说早期是用一种叫做gapi的接口作的,但后来被directdraw取代了,那就用dd吧,好在以前研究过pc的,找了个例子看了看基本差不多,可发现模拟器上无法运行,因为后备缓冲不支持,真是麻烦了啊,调试只能用真机了?
Symbian下用DSA绘图游戏的资源loading
工作一天累了,坐在回家的公共汽车上,按着手机总结一下今天的loading研究。(wp能用手机写文章真是舒坦啊!)
symbian下的游戏一般使用CTimer或CIdle等基于活动对象的方式驱动动画绘图逻辑,而资源加载所需的图片解码等操作用的imagedecoder也是活动对象方式实现,这就有可能导致逻辑混乱…
Continue reading…
RGA在非官方支持平台上的可安装情况
虽然nokia官方声明的随open c放出的RGA图形声音库只能在s60 3rd中的部分机型上使用,但根据其本质(新N-Gage的一部分)分析,理论上应该可以应用于所有s60 3rd机型,新N-Gage平台通过破解手机证书系统可以实现安装在所有三版机上,但由于硬件性能的差别导致部分n-gage游戏在N73这类机型上不能正常运行。目前测试的在E71机型上可以正常安装RGA库,可用性还有待测试。
[ZT]CMWAP 和CMNET 的主要区别与适用范围
如果你是一个菜鸟或者初学者,不妨直接跳到第(4)节,看看我提供的”应用程序能否工作于CMWAP的辨别方法”;如果你希望对CMWAP和CMNET有一个详细的了解,那么就读完全篇吧;如果你对这个问题有所研究的话,还请不吝赐教,解开仍旧困惑我的几个疑问。
[ZT]Symbian OS s60 3rd编程中实现IMSI、IMEI查询
#ifndef MYTELEPHONY_H
#define MYTELEPHONY_H
#include
#include
class CMyTelephony : public CActive
{
public:
static void GetIMSIL(TDes& aIMSI);
static void GetIMEIL(TDes& aIMEI);
static void GetPhoneType(TDes& aPhoneType);
static void DialPhone(const TDesC& aPhoneId);
static CMyTelephony* NewL();
protected:
void DoCancel();
void RunL();
private:
static CMyTelephony* NewLC();
~CMyTelephony();
CMyTelephony();
void ConstructL();
void GetSubscriberId();
void GetPhoneId();
private:
CTelephony* iTelephony;
CTelephony::TCancellationRequest iRequest;
CTelephony::TSubscriberIdV1 iSubscriberId;
CTelephony::TSubscriberIdV1Pckg iSubscriberIdPckg;
CTelephony::TPhoneIdV1 iPhoneId;
CTelephony::TPhoneIdV1Pckg iPhoneIdPckg;
CTelephony::TCallId iCallId;
TBuf<32> iPhoneType;
public :
void DialNewCall(const TDesC& aTelNumber);
};
#endif // MYTELEPHONY_H
TRAP和TRAPD对后面函数调用的一个细节…
今天刚注意到TRAP和TRAPD类的宏内的函数调用,如果没写(),编译时也不会报错,但是实际函数并没有执行,本来以为类型MFC的消息映射机制,看来不是…
Symbian IAP相关…
1.从CommDb中获取接入点信息:
CCommsDatabase* DB=CCommsDatabase::NewL(EDatabaseTypeIAP);
CleanupStack::PushL(DB);
CCommsDbTableView* view= DB->OpenIAPTableViewMatchingBearerSetLC(
ECommDbBearerGPRS|ECommDbBearerWLAN, //GPRS和无线局域网
ECommDbConnectionDirectionOutgoing); //方向无所谓的,写Unknown也可以
User::LeaveIfError(view->GotoFirstRecord()); //转到第一条记录