www.pudn.com > STBIHOST.rar > rctlkeys.h


// 
// Copyright (c) Microsoft Corporation.  All rights reserved. 
// 
// 
// Use of this source code is subject to the terms of the Microsoft end-user 
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT. 
// If you did not accept the terms of the EULA, you are not authorized to use 
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your 
// install media. 
// 
/*++ 
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF 
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO 
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A 
PARTICULAR PURPOSE. 
 
Module Name:  rctlkeys.h 
 
Abstract:  Defines window.external.RemoteControlKeys (IRemoteControlKeys), 
		   which extends the DHTML object model to allow pages to override 
		   the default button handlers for the STB remote control.  This 
		   is useful for STB features that are embedded in a web page, like 
		   the windows media player, or possibly a DVD player or TV tuner. 
 
Notes:	   To use this interface, web pages make the following calls: 
		   1) RemoteControlKeys.BeginRequest() 
		   2) set RemoteControlKeys properties (Play, stop, etc.) =true 
		      for keys they want to override, and optionally =false for 
		      keys to be handled by the host app 
		   3) RemoteControlKeys.EndRequest() 
		   4) RemoteControlKeys.ReleaseRequest() when the web page unloads 
 
--*/ 
 
#ifndef _RCTLKEYS_H_1001F5AE_D616_417F_A7DB_4DDCE25918AE_ 
#define _RCTLKEYS_H_1001F5AE_D616_417F_A7DB_4DDCE25918AE_ 
 
// define the remote control keys 
#define RCTL_STOP	 0 
#define RCTL_PLAY	 1 
#define RCTL_PREV	 2 
#define RCTL_NEXT	 3 
#define RCTL_FWD	 4 
#define RCTL_BACK	 5 
#define RCTL_PAUSE	 6 
#define RCTL_VOLUP	 7 
#define RCTL_VOLDN	 8 
#define RCTL_MUTE	 9 
#define RCTL_MENU	 10 
#define RCTL_UP		 11 
#define RCTL_DOWN	 12 
#define RCTL_LEFT	 13 
#define RCTL_RIGHT	 14 
#define RCTL_SELECT	 15 
#define RCTL_NUMKEYS 16 
 
// define bitmask selectors for each key 
#define RCTL_BM_STOP	(1 << RCTL_STOP) 
#define RCTL_BM_PLAY	(1 << RCTL_PLAY) 
#define RCTL_BM_PREV	(1 << RCTL_PREV) 
#define RCTL_BM_NEXT	(1 << RCTL_NEXT) 
#define RCTL_BM_FWD		(1 << RCTL_FWD) 
#define RCTL_BM_BACK	(1 << RCTL_BACK) 
#define RCTL_BM_PAUSE	(1 << RCTL_PAUSE) 
#define RCTL_BM_VOLUP	(1 << RCTL_VOLUP) 
#define RCTL_BM_VOLDN	(1 << RCTL_VOLDN) 
#define RCTL_BM_MUTE	(1 << RCTL_MUTE) 
#define RCTL_BM_MENU	(1 << RCTL_MENU) 
#define RCTL_BM_UP		(1 << RCTL_UP) 
#define RCTL_BM_DOWN	(1 << RCTL_DOWN) 
#define RCTL_BM_LEFT	(1 << RCTL_LEFT) 
#define RCTL_BM_RIGHT	(1 << RCTL_RIGHT) 
#define RCTL_BM_SELECT	(1 << RCTL_SELECT) 
 
 
class CRCtlKeys : 
	public CComObjectRoot, 
	public IDispatchImpl 
{ 
	CMainWnd* m_pMainWnd; 
	BYTE m_bytTrans; 
	ULONG m_bmKeys; 
 
public: 
 
	DECLARE_NO_REGISTRY() 
	DECLARE_NOT_AGGREGATABLE(CRCtlKeys) 
	DECLARE_PROTECT_FINAL_CONSTRUCT() 
 
	BEGIN_CATEGORY_MAP(CRCtlKeys) 
	END_CATEGORY_MAP() 
 
	BEGIN_COM_MAP(CRCtlKeys) 
		COM_INTERFACE_ENTRY(IRemoteControlKeys) 
		COM_INTERFACE_ENTRY(IDispatch) 
	END_COM_MAP() 
 
	CRCtlKeys() : 
		m_pMainWnd(NULL), 
		m_bytTrans(0), 
		m_bmKeys(0) 
	{ } 
 
	~CRCtlKeys() 
	{ } 
 
	VOID SetInst(CMainWnd* pMainWnd) 
	{ 
		ASSERT(pMainWnd); 
		m_pMainWnd = pMainWnd; 
	} 
 
	// IRemoteControlKeys 
	STDMETHOD(BeginRequest)(); 
	STDMETHOD(EndRequest)(); 
	STDMETHOD(ReleaseRequest)(); 
	STDMETHOD(get_Stop)(/*[out, retval]*/ VARIANT_BOOL* pVal); 
	STDMETHOD(put_Stop)(/*[in]*/ VARIANT_BOOL newVal); 
	STDMETHOD(get_Play)(/*[out, retval]*/ VARIANT_BOOL* pVal); 
	STDMETHOD(put_Play)(/*[in]*/ VARIANT_BOOL newVal); 
	STDMETHOD(get_Previous)(/*[out, retval]*/ VARIANT_BOOL* pVal); 
	STDMETHOD(put_Previous)(/*[in]*/ VARIANT_BOOL newVal); 
	STDMETHOD(get_Next)(/*[out, retval]*/ VARIANT_BOOL* pVal); 
	STDMETHOD(put_Next)(/*[in]*/ VARIANT_BOOL newVal); 
	STDMETHOD(get_Forward)(/*[out, retval]*/ VARIANT_BOOL* pVal); 
	STDMETHOD(put_Forward)(/*[in]*/ VARIANT_BOOL newVal); 
	STDMETHOD(get_Backward)(/*[out, retval]*/ VARIANT_BOOL* pVal); 
	STDMETHOD(put_Backward)(/*[in]*/ VARIANT_BOOL newVal); 
	STDMETHOD(get_Pause)(/*[out, retval]*/ VARIANT_BOOL* pVal); 
	STDMETHOD(put_Pause)(/*[in]*/ VARIANT_BOOL newVal); 
	STDMETHOD(get_VolumeUp)(/*[out, retval]*/ VARIANT_BOOL* pVal); 
	STDMETHOD(put_VolumeUp)(/*[in]*/ VARIANT_BOOL newVal); 
	STDMETHOD(get_VolumeDown)(/*[out, retval]*/ VARIANT_BOOL* pVal); 
	STDMETHOD(put_VolumeDown)(/*[in]*/ VARIANT_BOOL newVal); 
	STDMETHOD(get_Mute)(/*[out, retval]*/ VARIANT_BOOL* pVal); 
	STDMETHOD(put_Mute)(/*[in]*/ VARIANT_BOOL newVal); 
	STDMETHOD(get_Menu)(/*[out, retval]*/ VARIANT_BOOL* pVal); 
	STDMETHOD(put_Menu)(/*[in]*/ VARIANT_BOOL newVal); 
	STDMETHOD(get_Up)(/*[out, retval]*/ VARIANT_BOOL* pVal); 
	STDMETHOD(put_Up)(/*[in]*/ VARIANT_BOOL newVal); 
	STDMETHOD(get_Down)(/*[out, retval]*/ VARIANT_BOOL* pVal); 
	STDMETHOD(put_Down)(/*[in]*/ VARIANT_BOOL newVal); 
	STDMETHOD(get_Left)(/*[out, retval]*/ VARIANT_BOOL* pVal); 
	STDMETHOD(put_Left)(/*[in]*/ VARIANT_BOOL newVal); 
	STDMETHOD(get_Right)(/*[out, retval]*/ VARIANT_BOOL* pVal); 
	STDMETHOD(put_Right)(/*[in]*/ VARIANT_BOOL newVal); 
	STDMETHOD(get_Select)(/*[out, retval]*/ VARIANT_BOOL* pVal); 
	STDMETHOD(put_Select)(/*[in]*/ VARIANT_BOOL newVal); 
}; 
 
#endif	// _RCTLKEYS_H_1001F5AE_D616_417F_A7DB_4DDCE25918AE_