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

📄 sdlexe.cpp

📁 SDL库 在进行视频显示程序spcaview安装时必须的库文件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//  INCLUDES#include <aknapp.h>#include <aknappui.h>#include <eikdoc.h>#include <sdlepocapi.h>#include <bautils.h>#include <eikstart.h>#include <badesca.h>#include <bautils.h>#include <apgcli.h>#include <sdlmain.h>#include <eikedwin.h>#include <eiklabel.h>#include <sdlexe.rsg>#include <aknglobalmsgquery.h>#include <apgwgnam.h> //  FORWARD DECLARATIONSclass CApaDocument;//const TUid KSDLUID = { 0xF01F605E };LOCAL_C void MakeCCmdLineL(const TDesC8& aParam, CDesC8Array& aArray)    {         const TChar dq('\"');    TLex8 lex(aParam);    TBool in = EFalse;    lex.SkipSpaceAndMark();    while(!lex.Eos())        {        TPtrC8 ptr;        if(in)            {            const TPtrC8 rem = lex.RemainderFromMark();            const TInt pos = rem.Locate(dq);            if(pos > 0)                {                lex.Inc(pos);                ptr.Set(lex.MarkedToken());                lex.SkipAndMark(1);                }            else                {                ptr.Set(rem);                }            in = EFalse;            }        else            {            ptr.Set(lex.NextToken());            const TInt pos = ptr.Locate(dq);            if(pos == 0)                {                lex.UnGetToMark();                lex.SkipAndMark(1);                in = ETrue;                continue; // back to in brace                }            else                lex.SkipSpaceAndMark();            }                aArray.AppendL(ptr);        }    }      NONSHARABLE_CLASS(TVirtualCursor) : public MOverlay	{	public:		TVirtualCursor();		void Set(const TRect& aRect, CFbsBitmap* aBmp, CFbsBitmap* aAlpha);		void Move(TInt aX, TInt aY);		void MakeEvent(TWsEvent& aEvent, const TPoint& aBasePos) const;		void Toggle();		TBool IsOn() const;	private:    	void Draw(CBitmapContext& aGc, const TRect& aTargetRect, const TSize& aSize);	private:		TRect iRect;		TPoint iInc;		TPoint iPos;		TBool iIsOn;		CFbsBitmap* iCBmp;		CFbsBitmap* iAlpha;	};		TVirtualCursor::TVirtualCursor() :  iInc(0, 0), iIsOn(EFalse), iCBmp(NULL)	{		}	const TInt KMaxMove = 10;	void TVirtualCursor::Move(TInt aX, TInt aY)	{	if(aX > 0 && iInc.iX > 0)			++iInc.iX;	else if(aX < 0 && iInc.iX < 0)			--iInc.iX;	else		iInc.iX = aX;	if(aY > 0 && iInc.iY > 0)			++iInc.iY;	else if(aY < 0 && iInc.iY < 0)			--iInc.iY;	else			iInc.iY = aY;		iInc.iX = Min(KMaxMove, iInc.iX); 		iInc.iX = Max(-KMaxMove, iInc.iX);		iInc.iY = Min(KMaxMove, iInc.iY);		iInc.iY =Max(-KMaxMove, iInc.iY);		const TPoint pos = iPos + iInc;	if(iRect.Contains(pos))		{		iPos = pos;		}	else		{		iInc = TPoint(0, 0);			}	}		void TVirtualCursor::Toggle()	{	iIsOn = !iIsOn;	}		TBool TVirtualCursor::IsOn() const	{	return iIsOn;	}	void TVirtualCursor::Set(const TRect& aRect, CFbsBitmap* aBmp, CFbsBitmap* aAlpha)	{	iRect = aRect;	iCBmp = aBmp;	iAlpha = aAlpha;	}			void TVirtualCursor::MakeEvent(TWsEvent& aEvent, const TPoint& aBasePos) const	{ 	aEvent.SetType(EEventPointer),	aEvent.SetTimeNow();	TPointerEvent& pointer = *aEvent.Pointer();		pointer.iType = TPointerEvent::EButton1Down;	pointer.iPosition = iPos;	pointer.iParentPosition = aBasePos;	}		void TVirtualCursor::Draw(CBitmapContext& aGc, const TRect& /*aTargetRect*/, const TSize& /*aSize*/)	{	if(iIsOn && iCBmp != NULL)		{		const TRect rect(TPoint(0, 0), iCBmp->SizeInPixels());		aGc.AlphaBlendBitmaps(iPos, iCBmp, rect, iAlpha, TPoint(0, 0));		}		}	NONSHARABLE_CLASS(TSdlClass)	{	public:		TSdlClass();		void SetMain(const TMainFunc& aFunc, TInt aFlags, MSDLMainObs* aObs, TInt aExeFlags);		TInt SdlFlags() const;		const TMainFunc& Main() const;		void SendEvent(TInt aEvent, TInt aParam, CSDL* aSDL);		TInt AppFlags() const; 		void AppFlags(TInt aFlags); 	private:		TMainFunc iFunc;		TInt iSdlFlags;		TInt iExeFlags;		MSDLMainObs* iObs;	};		void TSdlClass::AppFlags(TInt aFlags)	{	iExeFlags |= aFlags;	}	void TSdlClass::SendEvent(TInt aEvent, TInt aParam, CSDL* aSDL)	{	if(iObs != NULL)		iObs->SDLMainEvent(aEvent, aParam, aSDL);	}	TInt TSdlClass::AppFlags() const	{	return iExeFlags;	}	void TSdlClass::SetMain(const TMainFunc& aFunc, TInt aFlags, MSDLMainObs* aObs, TInt aExeFlags)	{		iFunc = aFunc;	iSdlFlags = aFlags;	iExeFlags = aExeFlags;	iObs = aObs;	}	const TMainFunc& TSdlClass::Main() const	{	return iFunc;	}	  TInt TSdlClass::SdlFlags() const 	{ 	return iSdlFlags; 	} 	 	TSdlClass::TSdlClass()	{	Mem::FillZ(this, sizeof(this));	} TSdlClass gSDLClass;        	     ////////////////////////////////////////////////////////////////    NONSHARABLE_CLASS(CSDLApplication) : public CAknApplication    {    public:    	CSDLApplication();    private:        CApaDocument* CreateDocumentL();         TFileName ResourceFileName() const;        TUid AppDllUid() const;       		void FindMeL();     		TUid iUid;    };    NONSHARABLE_CLASS(CSDLDocument)  : public CEikDocument    {    public:        CSDLDocument(CEikApplication& aApp);     private:     	CEikAppUi* CreateAppUiL();          };      ////////////////////////////////////////////////////////////////////      NONSHARABLE_CLASS(MExitWait) 	{ 	public: 		virtual void DoExit(TInt aErr) = 0; 	};    /////////////////////////////////////////////////////////////////////////  	NONSHARABLE_CLASS(CExitWait) : public CActive 	{ 	public: 		CExitWait(MExitWait& aWait); 		~CExitWait(); 	private: 		void RunL(); 		void DoCancel(); 	private: 		MExitWait& iWait; 		TRequestStatus* iStatusPtr; 	}; 	////////////////////////////////////////////////////////////////////////  	NONSHARABLE_CLASS(CSDLWin) : public CCoeControl	{	public:		void ConstructL(const TRect& aRect);		RWindow& GetWindow() const;		void SetNoDraw();	private:		void Draw(const TRect& aRect) const;	private:		TBool iNoDraw;	}; 		////////////////////////////////////////////////////////////////////////////	     NONSHARABLE_CLASS(CSDLAppUi) : public CAknAppUi, public MExitWait, MSDLObserver	{	public:		~CSDLAppUi();   	private: // New functions 		void ConstructL();    	void HandleCommandL(TInt aCommand); 		void HandleWsEventL(const TWsEvent& aEvent, CCoeControl* aDestination); 		void HandleResourceChangeL(TInt aType);           		void DoExit(TInt aErr);   	   		TInt SdlEvent(TInt aEvent, TInt aParam);    	TInt SdlThreadEvent(TInt aEvent, TInt aParam);        	void StartL();    	static TBool StartL(TAny* aThis);    	    	TBool ParamEditorL(TDes& aCheat);    	    	TBool ProcessCommandParametersL(CApaCommandLine &aCommandLine);    	    	void PrepareToExit();    	void HandleConsoleWindowL();    	void HandleConsoleWindow();    	void HandleForegroundEventL(TBool aForeground);    	    	static TBool IdleRequestL(TAny* aThis);    	    	TBool HandleKeyL(const TWsEvent& aEvent);        		private:		CExitWait* iWait;		CSDLWin* iSDLWin;		CSDL* iSdl;		CIdle* iStarter;		TBool iExitRequest;		CDesC8Array* iParams;		TInt iResOffset;		CIdle* iIdle;		TInt iStdOut;		TVirtualCursor iCursor;		CFbsBitmap*	iCBmp;		CFbsBitmap*	iAlpha;	//	TTime iLastPress;	//	CSDL::TOrientationMode iOrientation;	};	////////////////////////////////////////////////////////////////////////////////////////7CApaDocument* CSDLApplication::CreateDocumentL()	{	return new (ELeave) CSDLDocument(*this);	}	TUid CSDLApplication::AppDllUid() const	{	return iUid;	}		CSDLApplication::CSDLApplication()	{	TRAPD(err, FindMeL());	ASSERT(err == KErrNone);	}		void CSDLApplication::FindMeL()	{	RApaLsSession apa;	User::LeaveIfError(apa.Connect());	CleanupClosePushL(apa);	User::LeaveIfError(apa.GetAllApps());	TFileName name = RProcess().FileName();	TApaAppInfo info;	while(apa.GetNextApp(info) == KErrNone)		{		if(info.iFullName.CompareF(name) == 0)			{			iUid = info.iUid;			break;			}		}	CleanupStack::PopAndDestroy();	}	TFileName CSDLApplication::ResourceFileName() const	{	return KNullDesC();	}	///////////////////////////////////////////////////////////////////////////////////////////CExitWait::CExitWait(MExitWait& aWait) : CActive(CActive::EPriorityStandard), iWait(aWait)	{	CActiveScheduler::Add(this);	SetActive();	iStatusPtr = &iStatus;	}

⌨️ 快捷键说明

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