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

📄 newapp11container.cpp

📁 一个很不错的Symbian程序源代码,里面有图片和一些对话框
💻 CPP
字号:
/*
============================================================================
 Name        : CNewApp11Container from NewApp11Container.h
 Author      : 
 Version     :
 Copyright   : Your copyright notice
 Description : Container control implementation
============================================================================
*/

// INCLUDE FILES
#include "NewApp11Container.h"

#include <eiklabel.h>  // for example label control
#include <aknenv.h>
#include <eikspane.h> 
#include "ToUnicode.h"

#include <aknutils.h>

const TInt KColorBlue=210;
const TInt KColorRed=35;
const TInt KColorGreen=185;
const TInt KColorYellow=5;


 TInt      iTextHeight;
 TInt      iTextLineCount;
 TInt      iLineHeight;
// ================= MEMBER FUNCTIONS =======================

// ---------------------------------------------------------
// CNewApp11Container::ConstructL(const TRect& aRect)
// EPOC two phased constructor
// ---------------------------------------------------------
//
void CNewApp11Container::ConstructL(const TRect& aRect)
    {
    CreateWindowL();

  
	_LIT(KMultiBitmapFilename,"\\resource\\apps\\NewApp11.mbm" );

	if(aRect.iBr.iX != 240) 
	{
		 iGroundImage     = iEikonEnv->CreateBitmapL( KMultiBitmapFilename, 6);
	}
	else
		iGroundImage     = iEikonEnv->CreateBitmapL( KMultiBitmapFilename, 3);  
    iIconImage = iEikonEnv->CreateBitmapL( KMultiBitmapFilename, 1);    

	iNaviImage = iEikonEnv->CreateBitmapL( KMultiBitmapFilename, 4); 

	iBeginYPoint = 67;

    SetRect(aRect);
    ActivateL();
    }

// Destructor
CNewApp11Container::~CNewApp11Container()
    {
  //  delete iLabel;

    }

// ---------------------------------------------------------
// CNewApp11Container::SizeChanged()
// Called by framework when the view size is changed
// ---------------------------------------------------------
//
void CNewApp11Container::SizeChanged()
    {
    // TODO: Add here control resize code etc.
   // iLabel->SetExtent( TPoint(10,10), iLabel->MinimumSize() );
 
    }

// ---------------------------------------------------------
// CNewApp11Container::CountComponentControls() const
// ---------------------------------------------------------
//
TInt CNewApp11Container::CountComponentControls() const
    {
    return 0; // return nbr of controls inside this container
    }

// ---------------------------------------------------------
// CNewApp11Container::ComponentControl(TInt aIndex) const
// ---------------------------------------------------------
//
CCoeControl* CNewApp11Container::ComponentControl(TInt aIndex) const
    {
    switch ( aIndex )
        {
        default:
            return NULL;
        }
    }

TInt CNewApp11Container::SetCursorInfo()
{
	const  CFont* myFont = AknLayoutUtils::FontFromId( EAknLogicalFontPrimarySmallFont, NULL );
	TInt iTestValue;
	iTextHeight = myFont->HeightInPixels(); 
	iLineHeight = iTextHeight * 1.5;

	iTestValue = myFont->AscentInPixels();                        
	iTestValue = myFont->DescentInPixels();                       
	//iTestValue = myFont->CharWidthInPixels(TChar aChar);          
	
	TText8 *psrc = (TText8 *) "你好";
	ToUnicode unicode;
	HBufC * ptr = unicode.ConvertL(psrc);
	iTestValue = myFont->TextWidthInPixels(*ptr);   
	iTestValue = myFont->BaselineOffsetInPixels();                                                                            
	return iTestValue;
}

// ---------------------------------------------------------
// CNewApp11Container::Draw(const TRect& aRect) const
// ---------------------------------------------------------
//
void CNewApp11Container::Draw(const TRect& aRect) const
    {
    // Get the standard graphics context
    CWindowGc& gc = SystemGc();
	TPoint iImagePoint(0,0);

	SetCursorInfo();
	//这里的27显示底部的菜单
	iTextLineCount = (aRect.iBr.iY - iBeginYPoint-27)/iLineHeight +1;
	
	gc.BitBlt( iImagePoint, iGroundImage);

	TPoint iNaviPoint(140,47);
	gc.BitBlt(iNaviPoint, iNaviImage);

	TRect iNaviCurRect;
	
	iNaviCurRect.iTl=TPoint(110,37);
	iNaviCurRect.iBr=TPoint(140,57);
	
	gc.SetPenStyle( CGraphicsContext::ENullPen );
    gc.SetPenColor( KColorRed );
    gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
	gc.DrawRect(iNaviCurRect);



	TSize PenSize(1,1);
	TRgb colorBlue=AKN_LAF_COLOR(KColorBlue);
	TRgb colorRed=AKN_LAF_COLOR(KColorRed);
	
    gc.SetPenSize(PenSize);
	gc.SetPenStyle(CGraphicsContext::ESolidPen);
	gc.SetPenColor(colorBlue);	
	for(int i = 1; i < iTextLineCount+1; i++)
	{
		TPoint point3(10,  iBeginYPoint+i*iLineHeight-2);
		TPoint point4(200, iBeginYPoint+i*iLineHeight-2);
		gc.DrawLine(point3,point4);
	}

	

    gc.SetPenStyle( CGraphicsContext::ENullPen );
    gc.SetPenColor( KColorRed );
    gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
    //Draw Text
    
    
    gc.SetBrushColor( AKN_LAF_COLOR( 219 ) ); 
    // gc.SetBrushStyle( CGraphicsContext::ENullBrush );
    gc.SetPenStyle(CGraphicsContext::ESolidPen);
    gc.SetPenColor(KColorYellow);

	//显示光标的框框
	TRect iRect;
	TInt  iCursorDisplay;
	if(iCursorIndex >= iTextLineCount)
	{
		iCursorDisplay = iTextLineCount-1;
	}
	else
	{
		iCursorDisplay = iCursorIndex;
	}
	//大于4用第4的位置
	iRect.iTl=TPoint(20, iBeginYPoint+iLineHeight*iCursorDisplay+1);
	iRect.iBr=TPoint(160,iLineHeight-3+iBeginYPoint+iLineHeight*iCursorDisplay);
	gc.DrawRect(iRect);


	//这里使用的,不现的屏幕显示的字体的大小是不样的。
	// const CFont* normalFont=iEikonEnv->NormalFont();
	// CFont* speciFont = iEikonEnv->
/*
	 _LIT(KSystemFontName,"LatinBold12");   
	//创建字体(显示蓝牙信息用)  

	CFont*   myFont;   
	TFontSpec iDisplayFontSpec   =   TFontSpec(KSystemFontName,   3);//设定为最小
	CGraphicsDevice * iGraphicsDevice=CEikonEnv::Static()->ScreenDevice();
	iGraphicsDevice->GetNearestFontInTwips(myFont, iDisplayFontSpec);
*/
	const  CFont* myFont = AknLayoutUtils::FontFromId( EAknLogicalFontPrimarySmallFont, NULL );
	//const  CFont* myFont = AknLayoutUtils::FontFromId( EAknHighestLogicalFont, NULL );
	int i;
	i = iCursorIndex - iTextLineCount;
	if(i <0)
	{
		i = 0;
	}
/*
	_LIT(EBufInfo,"你好,Hello");
	TBufC<30> bufInfo(EBufInfo);
	TPtrC iTPtr = bufInfo.Des();
	TText8 *psrc = (TText8 *)iTPtr.Ptr();
*/
	
	TText8 *psrc = (TText8 *)"你好,Hello";
	ToUnicode unicode;
	unicode.ConvertAA();
	HBufC *pOut = unicode.ConvertL(psrc);
	gc.UseFont(myFont);
	for(int j  = 1; j < iTextLineCount+1; j++)
	{
		TPoint point3(30,iBeginYPoint+j*iLineHeight-20);
		TPoint point4(60,iBeginYPoint+j*iLineHeight-3);

		_LIT(EFormatText, "%03d.");
		TBuf<100>  iText;
		iText.Format(EFormatText, i);
		iText.Append(*pOut);

		//这里的point是的汉字底部的左边的
		gc.DrawText(iText, point4);

		//Image右上角的象素点
		gc.BitBlt(point3, iIconImage);
		i++;
	}
	gc.DiscardFont();
//	iGraphicsDevice->ReleaseFont(myFont);   
    }


void CNewApp11Container::NextCoursor(TInt aStep)
  
    {
		iCursorIndex = iCursorIndex + aStep;
		if(iCursorIndex < 0 )
		{
			iCursorIndex  = 45;
		}
		else if(iCursorIndex > 45)
		{
			iCursorIndex = 0;
		}
		DrawNow();
    }
// ---------------------------------------------------------
// CNewApp11Container::HandleControlEventL(
//     CCoeControl* aControl,TCoeEvent aEventType)
// ---------------------------------------------------------
//
void CNewApp11Container::HandleControlEventL(
    CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/)
    {
    // TODO: Add your control event handler code here
    }


 TKeyResponse CNewApp11Container::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType )
{


   if( aKeyEvent.iCode == EKeyDownArrow)
	{
		NextCoursor(1);
		return EKeyWasConsumed;
	}
	else if(aKeyEvent.iCode == EKeyUpArrow)
	{
		NextCoursor(-1);
		return EKeyWasConsumed;
	}

	 return EKeyWasNotConsumed;
}

  

⌨️ 快捷键说明

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