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

📄 leave.cpp

📁 symbian os c++ s60 下的一个简单leave例程
💻 CPP
字号:
#include <e32base.h>
#include <e32cons.h>
#include <e32std.h>


// 定义本地数据
LOCAL_D CConsoleBase* console;
LOCAL_D TInt err;


//定义本地代码
LOCAL_C TInt Ex_1_L(TInt,TInt);
LOCAL_C TInt Ex_2_L(TInt,TInt);
LOCAL_C TInt Ex_3_L(CConsoleBase*);


//全局函数,被 E32 调用的主函数,
GLDEF_C TInt E32Main()  
    {

	// 定义一个 Descriptor,作为Console的标头显示
	_LIT(TITLE,"\nLeave 测试\n");
	//存放一组二维值,分别表示长和宽
	TSize Ts=TSize();
	//设置这组值
	Ts.SetSize(-1,-1);

	//在 e32base.h 中定义了Console 类 ,NewL() 这个类的静态方法。
	console=Console::NewL(TITLE,Ts);

	TInt i=0;
	TKeyCode key;

	while(i<1000)
	{
	
		//断言处理:按 Esc 键 终止线程并退出
		__ASSERT_ALWAYS(key!=27,User::Panic(_L("End Thread"),key));


		key=console->Getch();
		console->Printf(_L("step[%d]:%c	\n"),i++,key);

		// 按 T 键 
		if (key==116)
		{
			
			console->Write(_L("[T]请输入A和B的值:\na="));
			//从键盘输入
			TInt a=console->Getch();			
			//把输入码转为0-9的数字
			a=a-48;
			console->Printf(_L("%d"),a);
	
			console->Write(_L("\nb="));
		
			TInt b=console->Getch();
			b=b-48;
			console->Printf(_L("%d\n"),b);

			//使用 Trap 宏设置 code point,
			//函数在Trap Harness的保护下运行
			TRAP(err,Ex_1_L(a,b));
			//输出错误码
			console->Printf(_L("err=%d\n"),err);
			//错误处理
			if(err==2)
			{
				console->Write(_L("错误:a不能大于b!\n"));
				err=KErrNone;
			}

		}
		
		
		// 按 C 键 清楚屏幕
		if (key==99)
		{
			console->ClearScreen();
		}

		// 按 S 键 
		if (key==115)
		{
			
			console->Write(_L("[S]请输入A和B的值:\na="));
			//从键盘输入
			TInt a=console->Getch();			
			//把输入码转为0-9的数字
			a=a-48;
			console->Printf(_L("%d"),a);
	
			console->Write(_L("\nb="));
		
			TInt b=console->Getch();
			b=b-48;
			console->Printf(_L("%d\n"),b);

			//使用 Trap 宏设置 code point,
			//函数在Trap Harness的保护下运行
			TRAP(err,Ex_2_L(a,b));
			//输出错误码
			console->Printf(_L("err=%d\n"),err);
			//错误处理
			if(err<0)
			{
				console->Write(_L("错误:值不可以小于零!\n"));
				err=KErrNone;
			}
			else
			{
				console->Write(_L("没有Leave发生!\n"));
			}
		}
		// 按 D 键 
		if (key==100)
		{
			
			CConsoleBase* cnsx=console;
			cnsx->Write(_L("我是cnsx指针\n"));

			console->Write(_L("是否要取消cnsx 指针?y/n \n"));
			TInt ch=console->Getch();
			if(ch==121 || ch==69)
			{
				cnsx=NULL;
			}
			else
			{
				cnsx->Write(_L("我还在那!\n"));
			}
			//设置Code Point
			TRAP(err, Ex_3_L(cnsx));

			console->Printf(_L("err=%d\n"),err);

			if(err<0)
			{
				console->Write(_L("错误:cnsx指针已经被取消!\n"));
			}
		}		
	}

	return 0; 
    }



TInt Ex_1_L(TInt aNuma,TInt aNumb)
{

	console->Printf(_L("Ex_1_L:a=%d,b=%d\n"),aNuma,aNumb);
	
	//如果 aNuma 的值大于aNumb 的值则leave
	if(aNuma>aNumb)
	{
		console->Printf(_L("%d>%d ,User Leave!\n"),aNuma,aNumb);
		User::Leave(2);
	}	
	return 0;
}


TInt Ex_2_L(TInt aNuma,TInt aNumb)
{

	console->Printf(_L("Ex_2_L:a=%d,b=%d\n"),aNuma,aNumb);
	TInt sub;
	sub=aNumb-aNuma;
	if(sub<0)
	{
		console->Printf(_L("%d-%d=%d,%d<0,User Leave!\n"),aNumb,aNuma,sub,sub);	
	}
	//当sub值小于 0 时 leave
	User::LeaveIfError(sub);
	return 0;
}

TInt Ex_3_L(CConsoleBase* cnx)
{

	//当 cnx等于 NULL 时 leave
	User::LeaveIfNull(cnx);

	return 0;
}

⌨️ 快捷键说明

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