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

📄 oandxappview.h

📁 Symbian OS C++ for Mobile Phones v3 Example Code
💻 H
字号:
// Copyright (c) 2004 - 2006, Symbian Software Ltd. All rights reserved.

#ifndef OANDXAPPVIEW_H
#define OANDXAPPVIEW_H

#include <coecntrl.h>
#include <coedef.h>
#include <aknview.h>
#include "oandxdefs.h"

class COandXAppViewContainer;
class COandXTile;


class COandXGameView : public CAknView
    {
public: // Constructor and destructor
    static COandXGameView* NewLC();
    ~COandXGameView();

    // Functions from base classes
    TUid Id() const;
    void HandleCommandL(TInt aCommand);
    void HandleViewRectChange();
    void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane); 
    COandXAppViewContainer* Container();

private:
    COandXGameView();
    void ConstructL();

    void DoActivateL(const TVwsViewId& aPrevViewId,TUid aCustomMessageId,
        const TDesC8& aCustomMessage);
    void DoDeactivate();

private: // Data
    COandXAppViewContainer* iContainer;
	// Set if the Game View's container is added to the control stack.
	TBool iGameViewStacked;
    };

class COandXSymbolControl : public CCoeControl
	{
protected:
	void DrawSymbol(CWindowGc& aGc, const TRect& aRect, TBool aDrawCross) const;
	};
	
class MViewCmdHandler
    {
public:
    virtual TBool TryHitSquareL(const COandXTile* aControl)=0;
    virtual TTileState TileStatus(const COandXTile* aControl) const =0;
    };
    
class COandXTile : public COandXSymbolControl
	{
public:
	COandXTile();
	~COandXTile();
	void ConstructL(RWindow& aWindow);

	// From CCoeControl
	TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
	TCoeInputCapabilities InputCapabilities() const;

	// New function
	void SetOwnerAndObserver(COandXAppViewContainer* aControl);

protected:
	void HandlePointerEventL(const TPointerEvent& aPointerEvent);
	void FocusChanged(TDrawNow aDrawNow);

private:
	// from CCoeControl
	void Draw(const TRect& aRect) const;
	
	// New function
	void TryHitL();

private:
	MViewCmdHandler* iCmdHandler;
	};

class COandXStatusWin : public COandXSymbolControl
	{
public:
	static COandXStatusWin* NewL(RWindow& aWindow);
	~COandXStatusWin();

private:
	COandXStatusWin();
	void ConstructL(RWindow& aWindow);
	void Draw(const TRect& aRect) const;
	};



class COandXAppViewContainer : public CCoeControl, public MCoeControlObserver, public MViewCmdHandler
	{
public:
	static COandXAppViewContainer* NewL(const TRect& aRect);
	virtual ~COandXAppViewContainer();
	
	// From CCoeControl
	TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);

	// new functions	
	void MoveFocusTo(const TInt aIndex);
	TInt IdOfFocusControl();
	void ShowTurn();
	void ResetView();

private:
	COandXAppViewContainer();
	void ConstructL(const TRect& aRect);

	void SwitchFocus(TInt aFromIndex, CCoeControl* aToControl);
	void DrawComps(TRect& aRect) const;
	COandXTile * CreateTileL();

	// From CCoeControl
	void Draw(const TRect& aRect) const;
	void SizeChanged();
	TInt CountComponentControls() const;
	CCoeControl* ComponentControl(TInt aIndex) const;
	
	// From MCoeControlObserver
	void HandleControlEventL(CCoeControl* aControl, TCoeEvent aEventType);

	// From MViewCmdHandler
	TBool TryHitSquareL(const COandXTile* aControl);
	TTileState TileStatus(const COandXTile* aControl) const;

private:
	RPointerArray<COandXTile> iTiles; // View owns the tiles
	COandXStatusWin* iStatusWin;	  // and its own status window.
	TRect iBoardRect;  // Board area
	TRect iBorderRect; // Bounding rectangle for border
	TInt iTileSide;	   // Tile dimension, allowing for line widths and border
	};

#endif // OANDXAPPVIEW_H

⌨️ 快捷键说明

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