symbian各种资源的定义

 /* Copyright (c) 2002, Nokia. All rights reserved */

NAME HELL  //资源的ID。在一个项目内保证无重复名称

#include <eikon.rh>//必须的一些内部结构和常量的定义

#include <eikon.rsg>//必须的一些内部结构和常量的定义

#include <avkon.rh>//必须的一些内部结构和常量的定义

#include <avkon.rsg>//必须的一些内部结构和常量的定义

#include "HelloWorld.hrh"//自定义的一些内部结构和常量的定义

// ---------------------------------------------------------

//   以下两个不许在任何程序中做任何修改

//     This resource should be empty.

RESOURCE RSS_SIGNATURE { }

//     Default Document Name

RESOURCE TBUF r_default_document_name { buf=""; }

// ---------------------------------------------------------

//标识菜单和快捷键的资源ID

RESOURCE EIK_APP_INFO

     {

     menubar = r_helloworld_menubar;

     cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT;

     }

// ---------------------------------------------------------

// 定义菜单

RESOURCE MENU_BAR r_helloworld_menubar

     {

     titles =

         {

         MENU_TITLE {menu_pane = r_helloworld_menu;}

         };

     }

// ---------------------------------------------------------

// 定义子菜单

RESOURCE MENU_PANE r_helloworld_menu

     {

     items =

         {

         MENU_ITEM {command = EHelloWorldCommand1;   txt = "Hello";},

//如果有子菜单,那么加入cascade = r_aknexlist_item_menu;这里

// RESOURCE MENU_PANE r_aknexlist_item_menu

         MENU_ITEM {command = EAknSoftkeyExit;    txt = "Exit";}

         };

     }

 

/*定义了字符串资源。虽然这里是小写。但是在程序中引用时必须全部大写。这个和symbian的编译器相关。他把rss的资源串编译到<SDK_installation_directory>/include路径下,成为rsg文件。而CPP实际上#include的是这个rsg文件。*/

RESOURCE TBUF32 r_hewb_command1_text { buf=qtn_hewb_command1_text; }

RESOURCE TBUF32 r_hewb_caption_string { buf=qtn_hewb_caption_string; }

 

// End of File

 

                     

二、关于对话框的定义:
1、   定义一个对话框资源

//构造方式:

     CMmssSendDialog* iSendDialog = new ( ELeave ) CMmssSendDialog;

        iSendDialog->SetMopParent( this );

     iSendDialog->ExecuteLD( R_MMSSEND_DIALOG );

//-------------------------------------------------------------------------------------------

 

RESOURCE DIALOG r_mmssend_dialog

     {

     flags =    EEikDialogFlagNoDrag |     // 无法拖曳

                        EEikDialogFlagNoTitleBar |   //无标题栏

                        EEikDialogFlagFillAppClientRect | //将应用程序客户区填满

                        EEikDialogFlagCbaButtons |   //使用CBA按钮

EEikDialogFlagModeless;    //不接受按钮事件

//以上可以参见SDK   :Developer Library ? API Reference ? C++ API reference ? UIKLAFGT

     buttons = R_AVKON_SOFTKEYS_OPTIONS_EXIT;

     form = r_mmssend_form;

     }

 

// ---------------------------------------------------------

//默认的单行显示模式

   

// ---------------------------------------------------------

//可以设置为double行显示


RESOURCE FORM r_mmssend_form

     {

     flags = EEikFormEditModeOnly |

EEikFormUseDoubleSpacedFormat;

//Specify a style of form optionally. The default setting is single line display.
//1、EEikFormUseDoubleSpacedFormat : Double line display.
//2、EEikFormHideEmptyFields : To make empty data fields Invisible.
//3、EEikFormShowBitmaps : To display a bitmap on a label.
//4、EEikFormEditModeOnly : To display the form in edit mode only.

     items =

         {

         DLG_LINE

             {

type = EEikCtEdwin;     //是一个编辑文本框 Editor window

//实际上这个是枚举类型,可参看SDK:

//Developer Library ? API Reference ? C++ API reference ? UIKLAFGT ? UIKLAFGT Resource Constants ? TEikStockControls

     prompt = qtn_mmssend_recipient_prompt;// 这个控件的label显示的字符串

             id = EMmsRecipientEditor;

             control = EDWIN

                 {

                 flags = EEikEdwinNoHorizScrolling | EEikEdwinResizable;

                 width = qtn_mmssend_recipient_width;

                 maxlength = qtn_mmssend_recipient_maxlenght;

                 default_input_mode = EAknEditorNumericInputMode;//数字输入模式

                 };

},

 

            DLG_LINE

             {

             type = EEikCtEdwin;

                prompt = qtn_mmssend_subject_prompt;

             id = EMmsSubjectEditor;

             control = EDWIN

                 {

                 flags = EEikEdwinNoHorizScrolling | EEikEdwinResizable;

                 width = qtn_mmssend_subject_width;

                 maxlength = qtn_mmssend_subject_maxlenght;

                 default_input_mode = EAknEditorTextInputMode;//文本输入模式

                 };

             }

 

            };

}

三、定义AVKON_VIEW:
该类相当于新的view函数。

构造函数的承载

BaseConstructL( R_AKNEXLIST_VIEW_COLUMNVIEW );

//--------------------------资源-----------------------------------------------------

RESOURCE AVKON_VIEW r_aknexlist_view_columnview

     {

     menubar = r_aknexlist_menubar_main;

     hotkeys = r_aknexlist_hotkeys;

}

四、定义LISTBOX:
构造LISTBOX:

1)

resourceId = R_AKNEXLIST_MENULIST_SINGLE_NUMBER_HEADING;

//可以用祖先      CEikFormattedCellListBox* iListBox;在类中先申明该对象。调用的使用可以根据需要创建需要的派生类。
listBox = new(ELeave)CAknSingleStyleListBox();

listBox->SetContainerWindowL( parent);
TResourceReader reader;
CEikonEnv::Static()->CreateResourceReaderLC(reader, aResourceId);
listBox->SetObserver(observer);
listBox->ConstructFromResourceL( reader );
CleanupStack::PopAndDestroy(); // resource stuffs.

 

 

2) CEikColumnListBox* iColListBox;
CEikFormattedCellListBox* iForListBox;

iColListBox = new (ELeave) CAknSingleStyleListBox();
iForListBox = new (ELeave) CAknDoubleGraphicStyleListBox();

iColListBox->SetContainerWindowL( *this );
iForListBox->SetContainerWindowL( *this );

//从资源文件中生成LISTBOX
TResourceReader reader;
CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TEST_SINGLE);
iColListBox->ConstructFromResourceL( reader );

CEikonEnv::Static()->CreateResourceReaderLC( reader, R_TEST_DOUBLE);
iForListBox->ConstructFromResourceL( reader );

//设置SCROLLBAR
iColListBox->CreateScrollBarFrameL( ETrue );
iColListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );

iForListBox->CreateScrollBarFrameL( ETrue );
iForListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );

//适合窗口大小
iColListBox->SetRect(Rect());
iForListBox->SetRect(Rect());

//激活
iColListBox->ActivateL();
iForListBox->ActivateL();

//--------------------------样式一览参观-----------------------------------------------------------
// CAknDoubleStyleListBox

  

//CAknDoubleNumberStyleListBox();

  

//CAknDoubleLargeStyleListBox()


//CAknDoubleStyleListBox();


//CAknDoubleLargeStyleListBox();

  

//-----------------listbox属性-------------------------------------------------------

RESOURCE LISTBOX r_aknexlist_menulist_single_number_heading

     {

     array_id = r_aknexlist_item_single_number_heading;

     flags = EAknListBoxMenuList;

     }

RESOURCE ARRAY r_aknexlist_item_single_number_heading

     {

     items =

         {

         LBUF

             {

             txt = “item1”;

             },

         LBUF

             {

             txt = ”item2”;

             },

         LBUF

             {

             txt = ”item3”;

             },

         LBUF

             {

             txt = ”item4”;

             },

         LBUF

             {

             txt = ”item5”;

             },

         LBUF

             {

             txt = ”item6”;

             }

         LBUF

             {

             txt = ”item7”;

             }

         };

     }

 

 

 

五、定义Tedit:
CEikLabel*   iLabel2;//定义标签

         CEikEdwin*   iEdwin;//定义edit.

CEikGlobalTextEditor*    iGTextEd;//定义基本上同edit


--------------------资源------------------------------------------

RESOURCE GTXTED r_aknexeditor_view1_gtexted

     {

     flags = EAknEditorFlagDefault;

     width = qnn_aknexeditor_view1_gtexted_width;

     height = qnn_aknexeditor_view1_gtexted_height;

     numlines = qnn_aknexeditor_view1_gtexted_numlines;

     textlimit= qnn_aknexeditor_view1_gtexted_textlimit;

     fontcontrolflags = EGulFontControlAll;

     fontnameflags = EGulNoSymbolFonts;

     }

----------------------------------------------------------------------

 

iCoeEnv->ReadResource( text, R_AKNEXEDITOR_VIEW1_LABEL1);

------------------------------资源-------------------------------------------------------

RESOURCE TBUF32 r_aknexeditor_view1_label1

     {

     buf = qtn_aknexeditor_label_edwin;

     }

--------------------------------------------------------------------------------------------------

     iLabel2 = new ( ELeave ) CEikLabel;

     iLabel2->SetContainerWindowL( *this ); //设置附着的容器

     iLabel2->SetTextL( text );

     iLabel2->SetExtent( GTEXTED_LABEL_POS, iLabel1->MinimumSize() );

 

     TResourceReader reader;

     iCoeEnv->CreateResourceReaderLC( reader, R_AKNEXEDITOR_VIEW1_EDWIN );

//将资源数据读入

     iEdwin = new ( ELeave ) CEikEdwin;

     iEdwin->SetContainerWindowL( *this );//设置附着的容器

     iEdwin->ConstructFromResourceL( reader );

     //将资源和iEdwin关联。

iEdwin ->SetExtent( position, iEdwin ->MinimumSize() );

// 其中TPoint position;设置主要的控件位置

// 以下是设置情况 Edwins

iEdwins->SetAknEditorCase( EAknEditorUpperCase );

//->SetAknEditorCase( EAknEditorLowerCase );

//->SetAknEditorCase( EAknEditorTextCase );

--------------------------资源----------------------------------------------------------------------

RESOURCE EDWIN r_aknexeditor_view1_edwin

     {

     flags = EAknEditorFlagDefault;

     width = qnn_aknexeditor_view1_edwin_width;

     lines= qnn_aknexeditor_view1_edwin_height;

     maxlength = qnn_aknexeditor_view1_edwin_maxlength;

     }

------------------------------------------------------------------------------------------------------------

     CleanupStack::PopAndDestroy();   // Resource reader

     iEdwin->SetExtent( EDWIN_POS, iEdwin->MinimumSize() );

iEdwin->SetFocus( ETrue );//设置控件的焦点。

 

 

六、字符串数组类:
CDesCArrayFlat* items =

iCoeEnv->ReadDesCArrayResourceL( R_AKNEXEDITOR_VIEW5_LABELS );

CleanupStack::PushL( items );

---------------------------资源定义---------------------------------------------------------

 

RESOURCE ARRAY r_aknexeditor_view5_labels

     {

     items =

         {

         LBUF { txt = qtn_aknexeditor_view5_label1; },

         LBUF { txt = qtn_aknexeditor_view5_label2; },

         LBUF { txt = qtn_aknexeditor_view5_label3; },

         LBUF { txt = qtn_aknexeditor_view5_label4; },

         LBUF { txt = qtn_aknexeditor_view5_label5; },

         LBUF { txt = qtn_aknexeditor_view5_label6; }

         };

     }

七、如何控制多个面版(view)
1、   CAknNavigationControlContainer* iNaviPane;

CAknTabGroup*                    iTabGroup;

CAknNavigationDecorator*         iDecoratedTabGroup;

CAknTitlePane*                   iTitlePane;

CAknExEditorScenarioManager*     iScenarioManager;

TUid                             iCurrentViewId;

2、CEikStatusPane *sp = StatusPane();

iTitlePane =

   static_cast<CAknTitlePane*>( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );

     iNaviPane = ( CAknNavigationControlContainer* ) sp->ControlL(

         TUid::Uid( EEikStatusPaneUidNavi ) );

     iDecoratedTabGroup = iNaviPane->ResourceDecorator();

     if ( iDecoratedTabGroup )

         {

         iTabGroup = ( CAknTabGroup* ) iDecoratedTabGroup->DecoratedControl();

         }

     // 屏幕管理器

iScenarioManager = new ( ELeave ) CAknExEditorScenarioManager;

3、各种VIEW后,加入调用

// Create and add views.

     CAknExEditorView1* view1 = new ( ELeave ) CAknExEditorView1;

     CleanupStack::PushL( view1 );

     view1->ConstructL();

     CleanupStack::Pop();     // view1

     AddViewL( view1 );         //加入调用

     CAknExEditorView4* view4 = new ( ELeave ) CAknExEditorView4;

     CleanupStack::PushL( view4 );

     view4->ConstructL();

     CleanupStack::Pop();     // view4

AddViewL( view4 );         //加入调用

4、激活一个VIEW:

ActivateViewL( view1->Id() );

//-----------------------实现--------------------------

void CAknExEditorAppUi::ActivateViewL( TUid aViewId )

     {

     ActivateLocalViewL( aViewId );

     iCurrentViewId = aViewId;

 

     TBuf<KTitleBufLength> newTitle;

     iScenarioManager->GetTitle( aViewId, &newTitle );

     iTitlePane->SetTextL( newTitle );

     }

5、实现前翻、后翻

void CAknExEditorAppUi::ActivateNextViewL()

     {

     TUid viewId = iScenarioManager->NextViewTo( iCurrentViewId );

     if ( viewId == TUid::Uid( KScenarioNotFound ) )

         {

         viewId = iScenarioManager->FirstViewId();

         }

     ActivateViewL( viewId );

     }

 

// ----------------------------------------------------

// CAknExEditorAppUi::ActivatePrevViewL()

// Activates previous view.

// ( other items were commented in a header ).

// ----------------------------------------------------

//

void CAknExEditorAppUi::ActivatePrevViewL()

     {

     TUid viewId = iScenarioManager->PrevViewTo( iCurrentViewId );

     if ( viewId == TUid::Uid( KScenarioNotFound ) )

         {

         viewId = iScenarioManager->LastViewId();

         }

     ActivateViewL( viewId );

     }

 

八、MCoeControlObserver接口:
这个接口可以直接派生出VIEW的容器类

class CAknExEditorContainer : public CCoeControl, McoeControlObserver

这种容器类可以在view的容器上嵌入相关的edit、label等组件。而不是用

GC来直接操作这些界面元素。

 

在view类中如何调用:

 

     private:

         void DoActivateL( const TVwsViewId& /*aPrevViewId*/,

                           TUid /*aCustomMessageId*/,

                           const TDesC8& /*aCustomMessage*/ );//创建容器类

         void DoDeactivate();//删除容器类

         CAknExEditorContainer1* iContainer;//-------------------implentment---------------------

void CAknExEditorView1::DoActivateL( const TVwsViewId& /*aPrevViewId*/,

                                      TUid /*aCustomMessageId*/,

                                      const TDesC8& /*aCustomMessage*/ )

     {

     iContainer = new ( ELeave ) CAknExEditorContainer1;

     iContainer->SetMopParent( this );

     iContainer->ConstructL( ClientRect() );

     AppUi()->AddToStackL( *this, iContainer );

     }

void CAknExEditorView1::DoDeactivate()

     {

     if ( iContainer )

         {

         AppUi()->RemoveFromStack( iContainer );

         }

    

     delete iContainer;

     iContainer = NULL;

     }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值