📄 newapp11container.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 + -