Symbian OS S60 对话框编程的一些经验(一)
时间:2010-06-02 来源:maolxu
1.对话框 1.1主要步骤: 在rss文件中定义RESOURCE DIALOG资源——声明将来拥有该资源的对话框类——实现类的相关成员函数——通过该类对象调用对话框(AppUi或其他地方) 1.1.1 Step1:定义对话框资源 在rss文件中定义RESOURCE DIALOG r_my_dlg资源,由于在<eikon.rh>中DIALOG的结构体包括: STRUCT DIALOG { LONG flags = 0; //对话框属性值 LTEXT title = “”; //标题栏文本 LLINK pages = 0; //页面资源id LLINK buttons = 0; //按钮资源id STRUCT items[]; //对话框子控件定义,每个控件时一个DLG_LINE类型资源 LLINK form = 0; //表单资源id } items = ……的DLG_LINE定义如下: STRUCT DLG_LINE { WORD type; //子控件类型(如EEikCtLabel、EEikCtEdwin) LTEXT prompt; //子控件名称 WORD id = 0; //子控件id LONG itemflags = 0; STRUCT control; //子控件资源定义(如LABEL、EDWIN) LTEXT trailer = ""; LTEXT bmpfile = ""; // NEW AVKON bitmap filename WORD bmpid = 0xffff; // NEW AVKON icon image ID WORD bmpmask; // NEW AVKON icon mask ID LTEXT tooltip = ""; // NEW AVKON hint text for form line } 1.1.2 Step2:继承CAknDialog类的对话框类 到目前为止,看过一些CAknDialog的成员函数如下: Public: ConstructL(); ExecuteLD(Tint aResourceId); PrepareLC(Tint aResourceId); RunLD(); DynInitMenuPaneL(Tint aResourceId, CEikMenuPane *aMenuPane); OfferKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType); ProcessCommandL(Tint aCommandId); FocusChanged(TDrwNow aDrawNow); Protected: OkToExitL(Tint aButtonId); SizeChanged(); Draw(const TRect &aRect) const; CreateMenuBarL(Tint aMenuTitleResourceId); 这些函数要有印象,因为常会看到。 在编程过程中,常常会遇见以下问题: 1)记得在相应的cpp文件中包含使用到的类的头文件; 2)由于要加载rss的对话框资源,但是在对话框类中包含rss文件无效(报错无法打开),所以要包含rsg文件,这个文件是中间生成文件,名字很长,由“工程名_UID”组成,可以在mmp的TARGET查到其exe,改个名字就行了; 3)在AppUi中使用自己写的类时,会报许多错误,这些错误可以根据错误信息,在mmp文件中添加相应的LIBRARY文件,这些LIBRARY可以在SDK文档中找到。 |
川大科技园职业技能培训学院(3G嵌入式技术创新中心)
咨询热线:400-702-8828 028-6862 6028
联系人:欧老师 联系方式QQ:928077186
地址:四川省成都市科华北路47号(川大科技大厦)2楼