标题: 怎样获取可用的堆内存(heap memory)数量
TSS000057
开发伙伴平台: 60系列开发平台 1.0/2.0
设备, 软件版本: 无
大类: Symbian C++
子类: 普通
说明:
获取可用堆内存的数量,请参考SDK Help中的User::Available()
和RHeap::Available()两个函数。
创建日期:2003.3.3
BestRegards
hoolee
标题: 怎样获取可用的堆内存(heap memory)数量
TSS000057
开发伙伴平台: 60系列开发平台 1.0/2.0
设备, 软件版本: 无
大类: Symbian C++
子类: 普通
说明:
获取可用堆内存的数量,请参考SDK Help中的User::Available()
和RHeap::Available()两个函数。
创建日期:2003.3.3
BestRegards
hoolee
标题: 如何在程序中启动记事本及图片浏览程序
TSS000191
开发伙伴平台: 60系列开发平台 2.0
设备, 软件版本: 无
大类: Symbian C++
子类: 普通
说明:
我们可以通过下列方式在程序中启动记事本及图片浏览程序
程序将根据文件类型启动相应的系统程序(记事本或图片浏览器),如果aFile为txt文件Code:void TTestEmbedApp::EmbedLaunchFileL(const TDesC& aFile) { // iDocHandler is a CDocumentHandler pointer if( !iDocHandler) { iDocHandler = CDocumentHandler::NewL((CEikProcess*)iEikonEnv->Process()); } TDataType empty; iDocHandler->OpenFileEmbeddedL(aFile, empty); }
则记事本将启动,并显示这个文件。
如果aFile是jpg文件,则图片浏览器将启动,并显示这张图片。
这里需要用到下列库:
LIBRARYcommonui.lib // Documenthandler
LIBRARYapmime.lib // TDataType
需要包含下列头文件:
#include <DocumentHandler.h>
#include <apmstd.h> // TDataType
创建日期:2005.3.17
BestRegards
hoolee
标题: 如何构造一个能接收多位数字的输入框
TSS000178
开发伙伴平台: 60系列开发平台 1.0/2.0
设备, 软件版本: 无
大类: Symbian C++
子类: 普通
说明:
详细描述:
我想向用户提供一个输入框,用户可以输入15位数字。我现在使用
CAknTextQueryDialog,因为CAknNumberQueryDialog虽然能接收数字输入,但不能满足我的位数要求。
如果使用CAknTextQueryDialog虽然可以输入足够15位字符,但很难保证用户输入的就是数字。
请问有没有方法提供一个能接收多位数字的输入框?
解决方案
可以通过指定Edwin editor的flags标记来限定用户的输入,输入对话框的资源看起来如下:
上面的示例提供给用户一个可以输入足够位数数字的对话框。Code:DLG_LINE { type=EEikCtEdwin; id=EMyQuery; control=EDWIN { maxlength=15; }; } ... void CTestDlgDialog::PrepareLC(TInt aResourceId) { CEikDialog::PrepareLC( aResourceId ); // Dialog base class can be CAknDialog //CAknDialog::PrepareLC( aResourceId ); // Pick up the Editor control from the dialog CEikEdwin* control = static_cast<CEikEdwin*>(ControlOrNull(EMyQuery)); // Set the input mode control->SetAknEditorInputMode(EAknEditorNumericInputMode); // Restrict the other input modes control->SetAknEditorAllowedInputModes(EAknEditorNumericInputMode); }
但是它也允许用户输入"*#pw+"这样的字符——通过使用"*"或
"#"键,我们可以监控用户的按键输入来避免用户输入这些字符。
还可以显示一个警告框提示用户的非法输入。
创建日期:2005.3.27
BestRegards
hoolee
Last edited by hoolee; 2005-04-26 at 12:56.
标题: 我准备编译这个例子:
(Symbian\6.1\Series60\Epoc32Ex\Graphics\WS\BitmapSprite ),
可是却无法找到BitmapSprite.mbg,这个文件去哪里了?
TSS000040
开发伙伴平台: 60系列开发平台 1.0/2.0
设备, 软件版本: 无
大类: Symbian C++
子类: 普通
说明:
这个.mbg文件时被bmconv工具(命令行程序)加了/h命令后,自动
生成的头文件。
例如:
这样的命令行程序会从Windows位图文件中生成EPOC(译者注:Code:bmconv /hBitmapSprite.mbg Mil1mask.bmp Mil2mask.bmp Windml1a.bmp Windml1b.bmp Windml1c.bmp Windml1d.bmp Windml2a.bmp Windml2b.bmp Windml2c.bmp Windml2d.bmp
Symbian)的多位图文件(multi-bitmap)和所需要用的头文件。
注意:如果环境变量PATH设置不正确的话,会产生bad command or filename
错误。
如果使用下面的工具程序的话:
而且MMP文件包含了下面的BITMAP定义(在此例子中):Code:bldmake bldfiles abld build wins urel
.mbg头文件就会被自动生成。Code:START BITMAP BitmapSprite.mbm header sourcepath . source 2 Windml1a.bmp Windml2a.bmp Windml1b.bmp Windml2b.bmp source 2 Windml1c.bmp Windml2c.bmp Windml1d.bmp Windml2d.bmp source 2 Mil1mask.bmp Mil2mask.bmp end
其实位图头文件的内容很简单:
Code:// BitmapSprite.mbg // Generated by BitmapCompiler // Copyright (c) 1998-2000 Symbian Ltd. All rights // reserved. enum TMbmBitmapsprite { EMbmBitmapspriteMil2mask, EMbmBitmapspriteWindml1a, EMbmBitmapspriteWindml1b, EMbmBitmapspriteWindml1c, EMbmBitmapspriteWindml1d, EMbmBitmapspriteWindml2a, EMbmBitmapspriteWindml2b, EMbmBitmapspriteWindml2c, EMbmBitmapspriteWindml2d };
创建日期:2003.4.4
BestRegards
hoolee
标题: 在应用程序中内置一个摄像头的视图(view)
TSS000037
开发伙伴平台: 60系列开发平台 1.0/2.0
设备, 软件版本: 无
大类: Symbian C++
子类: 多媒体
说明:
详细描述
我怎样可以像我的程序中添加一个内置式的
摄像头的视图(view)呢?比如在'信息'程序
中,选项->添加->新图象,这样的功能。
概况
下面的代码演示了如何在一个应用程序中内
置一个摄像头程序。包括启动摄像头的函数,
MApaEmbeddedDocObserver::NotifyExit()
这一函数也要对其进行实现,以便用户退出
时做出响应。
解决方案
Code:void MyApplication::NewImage() { const TUid KUidCamera = { 0x1000593F }; RApaLsSession apaLs; TApaAppInfo appInfo; CApaDocument* doc = NULL; CEikProcess* process = CEikonEnv::Static()->Process(); User::LeaveIfError(apaLs.Connect()); CleanupClosePushL(apaLs); User::LeaveIfError(apaLs.GetAppInfo(appInfo, KUidCamera)); doc = process->AddNewDocumentL(appInfo.iCaption, KUidCamera); CleanupStack::PopAndDestroy(); // apaLs TApaDocCleanupItem cleanup(process, doc); CleanupStack::PushL(cleanup); doc->NewDocumentL(); CleanupStack::Pop(); // cleanup doc->EditL(this, ETrue); } void MyApplication::NotifyExit(TExitMode aMode) { // camera view has been closed }
创建日期:2003.3.4
BestRegards
hoolee
标题: 怎样检测笔型键("ABC"key)
TSS000055
开发伙伴平台: 60系列开发平台 1.0/2.0
设备, 软件版本: 无
大类: Symbian C++
子类: 普通
说明:
详细描述
笔型键("ABC"key)的TKeyEvent.iCode值和iScanCode
的值分别是什么?
解决方案
在60系列手持设备上,笔型键被影射为上档修饰(Shift
Modifier)键。下面的代码演示和如何可以检测他:
他的键盘码和扫描码(keycode and scancode)取决于按Code:TKeyResponse CMyClass::OfferKeyEventL(...) { TBool shiftKeyPressed = (aKeyEvent.iModifiers & EModifierShift); ... }
下SHIFT键的同时还按下了另外哪个键。下面的代码演示
了一个列表框的OfferKeyEventL()函数如何检测
SHIFT+OK组和键,这个组和键被用来标记列表框成员。
创建日期:2003.7.4Code:TKeyResponse CMyBusinessClass::OfferKeyEventL(...) { TBool shiftKeyPressed = (aKeyEvent.iModifiers & EModifierShift); if (shiftKeyPressed && aKeyEvent.iCode==EKeyOK) DoSomething(); ... }
BestRegards
hoolee
Last edited by hoolee; 2005-04-26 at 13:01.
标题: 怎样可以检测一部Nokia N-Gage™游戏手机的USB线缆是否连接
TSS000054
开发伙伴平台: 60系列开发平台 1.0
设备, 软件版本: 无
大类: Symbian C++
子类: 普通
说明:
详细描述
当USB电缆连接到了一部Nokia N-Gage™游戏手机上时,
手机的MMC存储卡活动就减慢了速度或者暂停下来了。
请问程序中我怎样可以检测USB电缆连接到了设备上?
解决方案
很不幸,你不能检测USB电缆是否被插上了或者没有被
插上。USB设备的操作并不属于Symbian平台方面,尽管
他的确会减慢MMC存储卡活动甚至让它停止。
创建日期:2003.7.4
BestRegards
hoolee
标题: 我怎样可以获取一个视图(view)中控件(container)的指针?
TSS000042
开发伙伴平台: 60系列开发平台 1.0
设备, 软件版本: 无
大类: Symbian C++
子类: 普通
说明:
你可以通过下面的方法来获取一个视图(view)中控件(container)的指针:
创建日期:2003.6.2Code:CAknView* view = iAvkonViewAppUi->View(myViewUid);
BestRegards
hoolee
标题: 怎么才能隐藏菜单中的图标?
TSS000043
开发伙伴平台: 60系列开发平台 1.0
设备, 软件版本: 无
大类: Symbian C++
子类: 普通
说明:
在AIF资源文件中(.rss)中使用KAppIsHidden标记
创建日期:2003.3.14Code:RESOURCE AIF_DATA { app_uid=...; num_icons=2; embeddability=KAppNotEmbeddable; newfile=KAppDoesNotSupportNewFile;' hidden=KAppIsHidden; }
BestRegards
hoolee
标题: 如何不让程序显示在任务列表中?
TSS000044
开发伙伴平台: 60系列开发平台 1.0
设备, 软件版本: 无
大类: Symbian C++
子类: 普通
说明:
描述:
一个应用程序可以被设为电话程序级别,这样就不会响应关闭程序事件了。
如果要这样做,我们需要调用CEikonEnv::SetSystem(ETrue)。
而另一个相似的函数为CEikonEnv::SetBusy(),它的不同之处在于在关闭时会
显示一个确认对话框,在用户确认之前是不会关闭该程序的。这主要用
于重要任务不能被中断时。
解决方案:
下面的代码展示了如何将程序从任务列表中隐去。
结论:Code:TInt wgId = iEikonEnv->RootWin().Identifier(); RWsSession session = iEikonEnv->WsSession(); CApaWindowGroupName* wgName = CApaWindowGroupName::NewLC(session, wgId); wgName->SetHidden(ETrue); wgName->SetWindowGroupName(iEikonEnv->RootWin()); CleanupStack::PopAndDestroy(); // wgName
第三方程序切记不要使用隐藏或系统级别处理。除非这样做是十分必须和必要的。
对用户来说,总应该可以看到自己手机上正在运行的程序,并予于关闭、释放内存。
创建日期:2003.9.15
BestRegards
hoolee
标题: 如何隐去等待对话框中的齿轮图标
TSS000172
开发伙伴平台: 60系列开发平台 1.0
设备, 软件版本: 无
大类: Symbian C++
子类: 普通
说明:
详细描述
在等待对话框中我们一般都会看到一个齿轮动籣图标,你也可以定义你自己的图标来取代它。参考SDK中的note例子就可以了解。
在avkon.mbg中有很多图标的id,如EMbmAvkonQgn_note_empty和EMbmAvkonQgn_note_empty_mask,怎么使用它们才能显示一个空白图标呢?
下面的资源示例展示了如何构造一个空白图标的等待对话框:
创建日期:2003.3.13Code:RESOURCE DIALOG r_aknexnote_wait_note_softkey_cancel { flags = EAknWaitNoteFlags; buttons = R_AVKON_SOFTKEYS_CANCEL; items = { DLG_LINE { type = EAknCtNote; id = EAknExNoteCtrlIdWaitNote; control= AVKON_NOTE { layout = EWaitLayout; singular_label = qtn_aknexnote_wait_prompt; imagefile = AVKON_BMPFILE_NAME; imageid = EMbmAvkonQgn_note_empty; imagemask = EMbmAvkonQgn_note_empty_mask; animation = R_QGN_GRAF_WAIT_BAR_ANIM; }; } }; }
BestRegards
hoolee
标题: 如何在程序中启动安装程序卸载某应用?
TSS000174
开发伙伴平台: Series 80
设备, 软件版本: 无
大类: Symbian C++
子类: 普通
说明:
下列代码展示了如何在程序中启动安装程序卸载某应用,在“c:\system\install\”下有相应程序.SIS文件,它包含了程序安装的信息。我们要进行的卸载操作就是要将.PKG中所有生成的文件都删除干净,以及c:\system\install\目录下相关的.SIS文件。
创建日期:2003.3.8Code:#include <apacmdln.h> #include <eikdll.h> #include <instapp.h> CApaCommandLine* cmdLine; cmdLine=CApaCommandLine::NewLC(); cmdLine->SetLibraryNameL( _L("z:\\System\\apps\\instapp\\instapp.app")); cmdLine->SetDocumentNameL( _L("c:\\system\\install\\MyApplication.sis")); cmdLine->SetCommandL(EApaCommandRun); cmdLine->SetTailEndL(KUninstallCommandLineTail); EikDll::StartAppL(*cmdLine); CleanupStack::PopAndDestroy(); // cmdLine
BestRegards
hoolee
标题: 当我尝试使用
CEikonEnv::Static()->CreateBitmapL()打开文件的
时候程序当掉了,函数总是返回-1001错误代码。我
怎样才能找到訽因?
TSS000025
开发伙伴平台: Series 60 1.0/2.0
设备, 软件版本: 无
大类: Symbian C++
子类: 普通
说明:
详细描述
当我使用CEikonEnv::Static()->CreateBitmapL()来打
开一个文件时程序运行失败。不管发生了什么错误(比
如内存不足或者文件没有找到),程序总是返回-1001
错误。我怎样才能找到比如“文件未找到”这样的错误提
示呢?
解决方案
如果错误的訽因出现在了文件系统中,那么可以用函数
CWsBitmap::Load()来代替CreateBitmapL()。如果发生
的是一个错误,程序是会返回的是一个系统级的错误代
码的。CEikonEnv使用CWsBitmap::Load()函数来调用一
个位图但是如果遇到了错误就会“退出(Leave)”。退出
(Leave)机制被用来提供了一个在错误处理API范围内的
错误文本提示信息。在使用文件名作为参数来调用Load()
和CreateBitmapL()函数时,二者是有所不同的。前者
只能使用绝对路径。
创建日期:2003.9.8
BestRegards
hoolee
标题: 在一部60系列设备上,
我怎样可以在使用摄像头拍照的时候添加一个快门的
声音呢?
TSS000029
开发伙伴平台: Series 60 1.0/2.0
设备, 软件版本: 无
大类: Symbian C++
子类: 多媒体
说明:
使用CAknKeySoundSystem类将会在摄像头捕捉籣面的
时候播放声音方面是一个很有效的方法。下面的代码
演示了如何在你的应用程序中实现这个特性:
在你的.RSS资源文件中添加下面的代码Code:// myapp.h #include <aknsoundsystem.h> const TInt KSnapSoundId = 2; class MyClass { ... private: CAknKeySoundSystem* iCameraSound; }; void MyClass::ConstructL() { ... iCameraSound = static_cast<CAknAppUi*>(CEikonEnv::Static()->AppUi())->KeySounds(); if (iCameraSound) { TRAPD(error, iCameraSound->AddAppSoundInfoListL( R_CAMERA_SNAP_SOUND)); if ((error != KErrAlreadyExists) && (error != KErrNone)) { User::LeaveIfError(error); } } } void MyClass::PlaySnapSound() { iCameraSound->PlaySound(KSnapSoundId); }
创建日期:2003.10.29Code:#define KcameraSoundFile "Z:\\system\\sounds\\digital\\Camera1a_2_8kHz.wav" #define KSnapSoundId 2 RESOURCE AVKON_SOUND_INFO_LIST r_camera_snap_sound { list = { AVKON_SOUND_INFO { sid = KSnapSoundId; priority = 45; preference = EAknAudioPrefCamera; // defined in avkon.hrh file = KCameraSoundFile; } }; }
BestRegards
hoolee
标题: 我怎样可以查看Z驱动器
的文件目录结构呢?
TSS000048
开发伙伴平台: Series 80
设备, 软件版本: 无
大类: Symbian C++
子类: 普通
说明:
使用以下的步骤你就可以浏览Z盘驱动器的内容:
1,打开文件管理器
2,用键盘输入“++sp”并看到右上角会显示信息
3,打开从“工具”菜单项中打开“设置”,一个名
为“ShowROM”的选项会显示出来
4,开启“ShowROM”选项,并重新启动文件管理器
现在你就可以浏览Z盘驱动器的内容了。
创建日期:2003.5.6
BestRegards
hoolee
Last edited by hoolee; 2005-05-10 at 10:54.