registerview.cpp

来自「一个比较完整的有关移动开发的例子 vc++6.0下编译通过」· C++ 代码 · 共 321 行

CPP
321
字号
/*
* ============================================================================
*  Name     : CRegisterView from CAknView
*  Part of  : Register
*  Copyright (c) 2003 Nokia. All rights reserved.
* ============================================================================
*/

// INCLUDE FILES
#include <aknviewappui.h>
#include <avkon.hrh>

#include <FairyLand.rsg>
#include "FairyLand.hrh"
#include "RegisterView.h"
#include "RegisterContainer.h" 
#include "LogonView.h"
#include "MainHelpview.h"
#include "GridView.h"

//#include <FairyLand.mbg>	//for mbm
#include <akncontext.h>	//for CAknContextPane
#include <akntitle.h>	//for CAknTitlePane
#include "FairyLandAppUi.h"
#include "LogonView.h"


#include <aknnotewrappers.h> 
#include <eikmenup.h>		//for CEikMenuPane
#include <eikmenub.h>	// for CEikMenuBar

// ================= MEMBER FUNCTIONS =======================

// C++ default constructor can NOT contain any code, that
// might leave.
//
CRegisterView* CRegisterView::NewL()
{
    CRegisterView* self = NewLC();
    CleanupStack::Pop(self);
    return self;
}

CRegisterView* CRegisterView::NewLC()
{
    CRegisterView* self = new (ELeave) CRegisterView;
    CleanupStack::PushL(self);
    self->ConstructL();
    return self;
}

CRegisterView::CRegisterView()
    {
    }

// EPOC default constructor can leave.
void CRegisterView::ConstructL()
    {
    BaseConstructL(R_REGISTER_VIEW);
    }

// Destructor
CRegisterView::~CRegisterView()
    {
    }

// ---------------------------------------------------------
// TUid CRegisterView::Id()
// Returns Id of the view.
// ---------------------------------------------------------
TUid CRegisterView::Id() const
    {
    return KViewId1;
    }

// ---------------------------------------------------------
// CRegisterView::HandleCommandL(TInt aCommand)
// Handles commands
// ---------------------------------------------------------
void CRegisterView::HandleCommandL(TInt aCommand)
    {   
	switch(aCommand)
	{


	case EFairyLandCmdLogon:	//EMyRegisterCmdChageView:
		{	
			AppUi()->ActivateLocalViewL(KViewId2);				
			break;
		}
	case EFairyLandCmdRegister:	//EMyRegisterCmdChageView:
		{	
			WriteFileToStreamL();
			break;
		}
	case EFairyLandCmdHelp:	//EMyRegisterCmdChageView:
		{	
			AppUi()->ActivateLocalViewL(KViewId9);				
			break;
		}

		
	default:
		{
			AppUi()->HandleCommandL(aCommand);
			break;
		}
		}
    }

// ---------------------------------------------------------
// CRegisterView::HandleClientRectChange()
// Handles client rect change.
// ---------------------------------------------------------
void CRegisterView::HandleClientRectChange()
    {
    if (iContainer)
        {
        iContainer->SetRect(ClientRect());
        }
    }

// ---------------------------------------------------------
// CRegisterView::DoActivateL(...)
// Creates the Container class object.
// ---------------------------------------------------------
void CRegisterView::DoActivateL(const TVwsViewId& /*aPrevViewId*/,
                                    TUid /*aCustomMessageId*/,
                                    const TDesC8& /*aCustomMessage*/)
    {

    iContainer = new (ELeave) CRegisterContainer;
    iContainer->SetMopParent(this);


    TRect rc;                                       
    rc.SetRect(ClientRect().iTl, TSize(176, 144));
    iContainer->ConstructL(rc);
    AppUi()->AddToStackL(*this, iContainer);


//	TBuf<KMaxPath> pathMbm;
//#ifdef __WINS__
//	pathMbm.Copy(_L("z:\\system\\apps\\ldc21\\ldc21.mbm"));
//#else
//CLDC21AppUi* pApp = (CLDC21AppUi*)CEikonEnv::Static()->AppUi();
//	pApp->GetAppPath(pathMbm);
//	pathMbm.Append(_L("ldc21.mbm"));
//#endif
	
	CEikStatusPane* statusPane = StatusPane();
	
	//set icon
//	CAknContextPane* contextPane = (CAknContextPane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidContext));
//	CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(pathMbm, EMbmLdc21Ldc21_icon2);
//	CFbsBitmap* bitmapMask = iEikonEnv->CreateBitmapL(pathMbm, EMbmLdc21Ldc21_mask2);
	
	//contextPane->SetPicture(bitmap);
//	contextPane->SetPicture(bitmap, bitmapMask);
	

	
	//load chinese words
	TBuf<32> RegisterTitle;
	CEikonEnv::Static()->ReadResource(RegisterTitle, R_QTN_MH_REGISTER);
	
	CAknTitlePane* titlePane = (CAknTitlePane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
	titlePane->SetTextL(RegisterTitle);
	

    }

// ---------------------------------------------------------
// CRegisterView::DoDeactivate()
// Deletes the Container class object.
// ---------------------------------------------------------
void CRegisterView::DoDeactivate()
    {
    if (iContainer)
        {
		AppUi()->RemoveFromStack(iContainer);
		delete iContainer;
		iContainer = NULL;
        }
    }





//写数据到流文件

void CRegisterView::WriteFileToStreamL()
{
	//创建会话
	RFs iFession;
	User::LeaveIfError(iFession.Connect());
		
			TBuf<KMaxPath> pathMbm1;
#ifdef __WINS__
	pathMbm1.Copy(_L("c:\\testStream.str"));
#else
	CFairyLandAppUi* pApp = (CFairyLandAppUi*)CEikonEnv::Static()->AppUi();
	pApp->GetAppPath(pathMbm1);
	pathMbm1.Append(_L("testStream.str"));
#endif
	

	RFileWriteStream writeStream;
	
	//从EDIT获取用户输入的数据  ........
	HBufC*	pStr1 = HBufC::NewL(128);	//pStr1->Des().Copy(_L("Data stream of file !"));
	TBuf<16> strName;
	iContainer->GetLoginName(strName);
	//将用户输入的数据存放到pStr中
	TPtr pTprStr1(pStr1->Des());
	pTprStr1.Copy(strName);

	//从EDIT获取用户输入的数据 ............
	HBufC*	pStr2 = HBufC::NewL(128);
 	TBuf<16> strpassword1;
	iContainer->GetLoginPassWord1(strpassword1);
	TPtr pTprStr2(pStr2->Des());
	pTprStr2.Copy(strpassword1);

	//从EDIT获取用户输入的数据   ...........
	HBufC*	pStr = HBufC::NewL(128);
	TBuf<16> strpassword2;
	iContainer->GetLoginPassWord2(strpassword2);
	TPtr pTprStr(pStr->Des());
	pTprStr.Copy(strpassword2);

	//写数据长度到流文件         ..............
	if( pStr1->Length() == 0 )         //判断姓名是否为空
	{
		delete pStr1;
		delete pStr2;
		delete pStr;
		TBuf<32> RegisterUserNameWarn;
		CEikonEnv::Static()->ReadResource(RegisterUserNameWarn, R_QTN_MH_REGISTER_WARN_USERNAME);
		//显示读取的文件内容
		CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
		informationNote->ExecuteLD(RegisterUserNameWarn);
		writeStream.Release();
		iFession.Close();
		return ;

	}
	else	
	{

		if(  pStr2->Length() !=6 )         //判断密码是否为6为有效数字
		{
			delete pStr1;
			delete pStr2;
			delete pStr;
			TBuf<32> RegisterPassWordWarn;
			CEikonEnv::Static()->ReadResource(RegisterPassWordWarn, R_QTN_MH_REGISTER_WARN_PASSWORD);
			//显示读取的文件内容
			CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
			informationNote->ExecuteLD(RegisterPassWordWarn);
			writeStream.Release();
			iFession.Close();
			return ;
		}

		else if( pStr2->Length() ==6 && pStr->Des() != pStr2->Des() )         //判断密码是否一致
		{
			delete pStr1;
			delete pStr2;
			delete pStr;
			TBuf<32> RegisterPassWordconfirmWarn;
			CEikonEnv::Static()->ReadResource(RegisterPassWordconfirmWarn, R_QTN_MH_REGISTER_WARN_PASSWORD_CONFIRM);
			//显示读取的文件内容
			CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
			informationNote->ExecuteLD(RegisterPassWordconfirmWarn);
            writeStream.Release();
			iFession.Close();

			return ;
		}
		else
		{

		//删除文件
		iFession.Delete(pathMbm1);
	
		User::LeaveIfError(writeStream.Create(iFession,pathMbm1, EFileWrite));
		//压栈
		writeStream.PushL();

		writeStream.WriteInt32L(pStr1->Length());
		writeStream << pStr1->Des();

		writeStream.WriteInt32L(pStr2->Length());
		writeStream << pStr2->Des();
		
		}

	}
	

	delete pStr1;
	delete pStr2;
	delete pStr;
	
	writeStream.CommitL();
	writeStream.Pop();
	writeStream.Release();
	iFession.Close();
	AppUi()->ActivateLocalViewL(KViewId2);
	
// 	_LIT(message,"write ok !");
// 	CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
// 	informationNote->ExecuteLD(message);
}

// End of File


⌨️ 快捷键说明

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