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

📄 chsggriddingcontainer.cpp

📁 Symbian工程 九宫格界面
💻 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 + -