📄 chsggriddingcontainer.cpp
字号:
#include <gulicon.h>
#include <aknutils.h>
#include <avkon.hrh>
#include <eiklabel.h>
#include <eikedwin.h>
#include <stringloader.h>
#include <fbs.h>
#include <gdi.h>
#include <CJGProject.rsg>
#include <CJGProject.mbg>
#include "CSnowJGGControl.h"
#include "CHsgGriddingContainer.h"
#include "NewsRollText.h"
#include "LxdAD.h"
#include "CJGProjectappui.h"
#define MEMORY_FREE(a) if(a){delete a; a=NULL;}
CHsgGriddingContainer::CHsgGriddingContainer()
{
iHsgJGGPointer = NULL;
}
// EPOC default constructor can leave.
void CHsgGriddingContainer::ConstructL(const TRect& aRect)
{
CreateWindowL();
SetRect( aRect );
//闪屏处理
iOffScreenBitmap = new (ELeave) CFbsBitmap();
CleanupStack::PushL( iOffScreenBitmap );
User::LeaveIfError(iOffScreenBitmap->Create(Rect().Size(),EColor4K));
CleanupStack::Pop();
iOffScreenBitmapDevice = CFbsBitmapDevice::NewL(iOffScreenBitmap);
iOffScreenBitmapDevice->CreateContext( iOffScreenBitmapGc );
//滚动条
iLxdADPointer=new(ELeave)CLxdAD;
iLxdADPointer->LxdReadFileAD();
iRollText1 = new(ELeave)CNewsRollText;
iRollText1->SetContainerWindowL(*this);
HBufC* buf=iLxdADPointer->LxdGetAD(0);
iRollText1->NewsSetTextL(buf->Des());//显示中文滚动文字
iRollText1->NewsSetBackgroundColor(TRgb(159,203,223));
TSize sz = iRollText1->MinimumSize();
iRollText1->NewsSetExtent( TPoint(0,20), sz);
iRollText1->Start();
//获得MBM文件路径
TBuf<KMaxPath> KMbmPath;
#ifdef __WINS__//表示模拟器上
KMbmPath.Copy(_L("z:\\resource\\apps\\CJGProject.mbm"));
#else//表示真机上
CCJGProjectAppUi* pAppUi = (CCJGProjectAppUi*)CCoeEnv::Static()->AppUi();
pAppUi->GetMbmPath(KMbmPath);
KMbmPath.Append(_L("CJGProject.mbm"));
#endif
//加载位图
//_LIT(KMbmPath, "z:\\resource\\apps\\CJGProject.mbm");
CFbsBitmap* pSrcBmp;
CFbsBitmap* pMskBmp;
CFbsBitmap* pSrcBmpL;
CFbsBitmap* pMskBmpL;
iHsgJGGPointer = new (ELeave) CSnowJGGControl;
iHsgJGGPointer->SetContainerWindowL(*this);
// TInt nMapE = EMbmCjgproject1; //利用两个整型来在循环中使用mbm文件中的图片枚举值
// TInt nMaskE = EMbmCjgproject1_mask;
//
// TInt nMapEL = EMbmCjgproject11;
// TInt nMaskEL = EMbmCjgproject11_mask;
for (TInt i = 0; i < 9; ++i)
{
pSrcBmp = new (ELeave) CFbsBitmap();
pMskBmp = new (ELeave) CFbsBitmap();
pSrcBmp->Load(KMbmPath, EMbmCjgproject352x416_1+i*4);
pMskBmp->Load(KMbmPath, EMbmCjgproject352x416_1_mask+i*4);
pSrcBmpL = new (ELeave) CFbsBitmap();
pMskBmpL = new (ELeave) CFbsBitmap();
pSrcBmpL->Load(KMbmPath, EMbmCjgproject352x416_11+i*4);
pMskBmpL->Load(KMbmPath, EMbmCjgproject352x416_11_mask+i*4);
iHsgJGGPointer->SnowSetGridPicture(pSrcBmp, pMskBmp,pSrcBmpL, pMskBmpL);
}
//加载图标所对应的文本
TBuf<16> sBuf1;
CEikonEnv::Static()->ReadResource(sBuf1,R_QTN_CJG_01_NEWS_TEXT);
iHsgJGGPointer->SnowSetGridText(1,sBuf1);
TBuf<16> sBuf2;
CEikonEnv::Static()->ReadResource(sBuf2,R_QTN_CJG_02_NEWS_TEXT);
iHsgJGGPointer->SnowSetGridText(2,sBuf2);
TBuf<16> sBuf3;
CEikonEnv::Static()->ReadResource(sBuf3,R_QTN_CJG_03_NEWS_TEXT);
iHsgJGGPointer->SnowSetGridText(3,sBuf3);
TBuf<16> sBuf4;
CEikonEnv::Static()->ReadResource(sBuf4,R_QTN_CJG_04_NEWS_TEXT);
iHsgJGGPointer->SnowSetGridText(4,sBuf4);
TBuf<16> sBuf5;
CEikonEnv::Static()->ReadResource(sBuf5,R_QTN_CJG_05_NEWS_TEXT);
iHsgJGGPointer->SnowSetGridText(5,sBuf5);
TBuf<16> sBuf6;
CEikonEnv::Static()->ReadResource(sBuf6,R_QTN_CJG_06_NEWS_TEXT);
iHsgJGGPointer->SnowSetGridText(6,sBuf6);
TBuf<16> sBuf7;
CEikonEnv::Static()->ReadResource(sBuf7,R_QTN_CJG_07_NEWS_TEXT);
iHsgJGGPointer->SnowSetGridText(7,sBuf7);
TBuf<16> sBuf8;
CEikonEnv::Static()->ReadResource(sBuf8,R_QTN_CJG_08_NEWS_TEXT);
iHsgJGGPointer->SnowSetGridText(8,sBuf8);
TBuf<16> sBuf9;
CEikonEnv::Static()->ReadResource(sBuf9,R_QTN_CJG_09_NEWS_TEXT);
iHsgJGGPointer->SnowSetGridText(9,sBuf9);
//iHsgJGGPointer->SetGridText(0, _L("LDCI"));
iHsgJGGPointer->SetExtent(TPoint(0,100), aRect.Size());
ActivateL();
}
// destructor
CHsgGriddingContainer::~CHsgGriddingContainer()
{
MEMORY_FREE(iHsgJGGPointer);
MEMORY_FREE(iOffScreenBitmap);
MEMORY_FREE(iOffScreenBitmapDevice);
MEMORY_FREE(iOffScreenBitmapGc);
MEMORY_FREE(iRollText1);
MEMORY_FREE(iLxdADPointer);
}
void CHsgGriddingContainer::SizeChanged()
{
}
// ---------------------------------------------------------
// CHsgGriddingContainer::CountComponentControls() const
// return the number of controls
// ---------------------------------------------------------
//
TInt CHsgGriddingContainer::CountComponentControls() const
{
// return number of controls inside this container
return 2;
}
// ---------------------------------------------------------
// CHsgGriddingContainer::ComponentControl(TInt aIndex) const
// return the pointer to specified control.
// ---------------------------------------------------------
//
CCoeControl* CHsgGriddingContainer::ComponentControl( TInt aIndex ) const
{
//返回两个控件指针
switch (aIndex)
{
case 0:
return iHsgJGGPointer;
case 1:
return iRollText1;
default:
return NULL;
}
}
// ---------------------------------------------------------
// CHsgGriddingContainer::Draw(const TRect& aRect) const
// handle the message when client region must be redrawn.
// ---------------------------------------------------------
//
void CHsgGriddingContainer::Draw( const TRect& aRect ) const
{
// CWindowGc& gc = SystemGc();
// gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
// gc.SetBrushColor(KRgbGreen);
// gc.DrawRect(Rect());
//获得MBM文件路径
TBuf<KMaxPath> KMbmPath;
#ifdef __WINS__//表示模拟器上
KMbmPath.Copy(_L("z:\\resource\\apps\\CJGProject.mbm"));
#else//表示真机上
CCJGProjectAppUi* pAppUi = (CCJGProjectAppUi*)CCoeEnv::Static()->AppUi();
pAppUi->GetMbmPath(KMbmPath);
KMbmPath.Append(_L("CJGProject.mbm"));
#endif
//添加背景图片
//定义图片指针
//_LIT(KMbmPath, "z:\\resource\\apps\\CJGProject.mbm");
CFbsBitmap* pBitmap = new (ELeave) CFbsBitmap();
//加载图片(适应屏幕大小)
switch (aRect.Width())
{
case 352:
{
User::LeaveIfError(pBitmap->Load(KMbmPath, EMbmCjgproject352x416_background));
}
break;
case 240:
{
User::LeaveIfError(pBitmap->Load(KMbmPath, EMbmCjgproject240x320_background));
}
break;
default:
break;
}
//绘制位图
iOffScreenBitmapGc->BitBlt(TPoint(0,0), pBitmap);
delete pBitmap;
CWindowGc& gc = SystemGc();
gc.BitBlt(Rect().iTl,iOffScreenBitmap);
}
// ---------------------------------------------------------
// CAknExGridContainer::OfferKeyEventL(
// const TKeyEvent& aKeyEvent, TEventCode aType )
// Handles the key events.
// ---------------------------------------------------------
//
TKeyResponse CHsgGriddingContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType )
{
return iHsgJGGPointer->OfferKeyEventL(aKeyEvent,aType);
}
// End of File
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -