您的位置:首页 > 其它

【转】捕捉菜单打开和关闭事件

2010-01-20 12:06 537 查看
http://www.devdiv.net/bbs/thread-6066-1-1.html

开发伙伴平台:
S60 3rd Edition

详细描述
这个代码片段演示了如何在CAknAppUi派生类中捕捉菜单打开和关闭事件。这些事件可通过MEikEemuObserver中派生的SetEmphasis()方法来捕捉。如当一个游戏打开菜单而需要暂停时,就需要捕捉这样的事件。

此代码可以通过自签名来完成。

MMP文件
需要下列链接库

LIBRARY avkon.lib //Avkon resources头文件
#ifndef __TESTAAPPUI_H__
#define __TESTAAPPUI_H__

// INCLUDES
#include <aknappui.h>

// FORWARD DECLARATIONS
class CTestAAppView;
//class CGameEngine;

// CLASS DECLARATION
/**
* CTestAAppUi application UI class.
*/
class CTestAAppUi : public CAknAppUi
{
//...
private: // from MEikMenuObserver
void SetEmphasis(CCoeControl* aMenuWindow,TBool aEmphasis);
//...
//Pauses the application if menu is activated
void SetUiPauseState(TBool aEmphasis);
private:
// Data

//The application view
CTestAAppView* iAppView;

//The pointer to the game engine
//CGameEngine* iEngine;
};

#endif //__TESTAAPPUI_H__

源文件
#include "TestAAppUi.h"
#include "TestAAppView.h"

//...

// From MEikMenuObserver. Menu emphasising or de-emphasising function.
void CTestAAppUi::SetEmphasis(CCoeControl* /*aMenuWindow*/, TBool aEmphasis)
{
if(iAppView)
{
SetUiPauseState(aEmphasis);
}
}

void CTestAAppUi::SetUiPauseState(TBool aEmphasis)
{

//pause game if menu is activated
if(aEmphasis /*&& !iEngine->IsStopped()*/)
{
//this debug line works only in the emulator
//iEikonEnv->InfoMsg(_L("stop"));

//iEngine->StopGame();
}
else
{
//this debug line works only in the emulator
//iEikonEnv->InfoMsg(_L("start"));

//iEngine->StartGame();
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: