⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s60uiexampleinitialcontainer.cpp

📁 《Symbian S60第3版手机程序开发与实用教程》光盘源代码
💻 CPP
字号:
// Copyright (c) 2006 Nokia Corporation.

#include "S60UIExampleInitialContainer.h"
#include "S60UIExampleModel.h"
#include <akntitle.h>
#include <eikspane.h>
#include <aknViewAppUi.h>
#include <aknutils.h>
#include <akniconutils.h>
#include <S60UIExample.mbg>
#include <S60UIExample.rsg>
#include <stringloader.h>    

// -----------------------------------------------------------------------------
// CS60UIExampleInitialContainer::NewL()
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
CS60UIExampleInitialContainer* CS60UIExampleInitialContainer::NewL(
                                                  const TRect& aRect,
                                                  CS60UIExampleModel& aModel)
    {
    CS60UIExampleInitialContainer* self = 
                     CS60UIExampleInitialContainer::NewLC(aRect, aModel);
    CleanupStack::Pop(self);
    return self;
    }


// -----------------------------------------------------------------------------
// CS60UIExampleInitialContainer::NewLC()
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
CS60UIExampleInitialContainer* CS60UIExampleInitialContainer::NewLC(
                                                   const TRect& aRect,
                                                   CS60UIExampleModel& aModel)
    {
    CS60UIExampleInitialContainer* self = 
                         new (ELeave) CS60UIExampleInitialContainer(aModel);
    CleanupStack::PushL(self);
    self->ConstructL(aRect);
    return self;
    }


// -----------------------------------------------------------------------------
// CS60UIExampleInitialContainer::CS60UIExampleInitialContainer()
// First stage constructor
// -----------------------------------------------------------------------------
//

CS60UIExampleInitialContainer::CS60UIExampleInitialContainer(
                                                 CS60UIExampleModel& aModel)
    :iModel(aModel)
    {
    }

    
// -----------------------------------------------------------------------------
// CS60UIExampleInitialContainer::ConstructL()
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CS60UIExampleInitialContainer::ConstructL(const TRect& aRect)
    {
    CreateWindowL();

    CEikStatusPane* statusPane = iAvkonViewAppUi->StatusPane();
    CAknTitlePane* titlePane = (CAknTitlePane*)statusPane->ControlL(
                                         TUid::Uid(EEikStatusPaneUidTitle));
    // Set the text string.
    iTitle = StringLoader::LoadL(R_S60UIEXAMPLE_TITLE_TEXT, iCoeEnv);
    titlePane ->SetTextL(*iTitle); 
    
    // Get background graphic
    _LIT(KSvgFile,"z:\\resource\\apps\\S60UIExample.mif");
    iBkgBitmap = 
               AknIconUtils::CreateIconL(KSvgFile, EMbmS60uiexampleStart_bkg);
    SetRect(aRect);
    
    ActivateL();
    }
    
    
// -----------------------------------------------------------------------------
// CS60UIExampleInitialContainer::~CS60UIExampleInitialContainer()
// Destructor
// -----------------------------------------------------------------------------
//
CS60UIExampleInitialContainer::~CS60UIExampleInitialContainer()
    {
    delete iBkgBitmap;
    delete iTitle;
    }
    
    
// -----------------------------------------------------------------------------
// CS60UIExampleInitialContainer::SizeChanged()
// Handles necessary size changes, in this case resizing the bitmap.
// -----------------------------------------------------------------------------
//
void CS60UIExampleInitialContainer::SizeChanged()
    {
    TRect rect = Rect();
    TInt error = AknIconUtils::SetSize(iBkgBitmap, 
                                       rect.Size(), 
                                       EAspectRatioNotPreserved);
    }


// -----------------------------------------------------------------------------
// CS60UIExampleInitialContainer::HandleResourceChange()
// Called by framework when screen size changes. Use to cause necessary
// resizing to be performed.
// -----------------------------------------------------------------------------
//
void CS60UIExampleInitialContainer::HandleResourceChange(TInt aType)
    {
    CCoeControl::HandleResourceChange(aType);
    if (aType == KEikDynamicLayoutVariantSwitch)
        {
        // Screen size has changed. Get the new Main Pane size
        TRect rect;
        AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, rect);
        // Pass it on. Eventually SizeChanged() performs the necessary
        // resizing
        SetRect(rect);
        }

    }

// -----------------------------------------------------------------------------
// CS60UIExampleInitialContainer::Draw() const
// Draws the display
// -----------------------------------------------------------------------------
//
void CS60UIExampleInitialContainer::Draw(const TRect& aRect) const
    {
    CWindowGc& gc = SystemGc();

    // draw the background
    gc.BitBlt(TPoint(0,0), iBkgBitmap);

    // Overlay the title
    gc.SetPenStyle(CGraphicsContext::ESolidPen);
    gc.SetPenColor(KRgbBlack);
    gc.UseFont(AknLayoutUtils::FontFromId(EAknLogicalFontTitleFont));
    TPoint textPos(aRect.iBr.iX/3, aRect.iBr.iY/3);
    gc.DrawText(*iTitle, textPos);
    gc.DiscardFont();
    }


// End of File

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -