/*--------------------------------------------------------------------------* * * Microsoft Windows * Copyright (C) Microsoft Corporation, 1992 - 00 * * File: powertest.h * * Contents: Interface for ACPI test snap-in * * History: 29-Feb-2000 jeffro Created * *--------------------------------------------------------------------------*/ #pragma once /*+-------------------------------------------------------------------------* * CPowerTestSnapinItem * * *--------------------------------------------------------------------------*/ class CPowerTestSnapinItem : public CBaseSnapinItem { public: CPowerTestSnapinItem(); BEGIN_COM_MAP(CPowerTestSnapinItem) COM_INTERFACE_ENTRY(IDataObject) // Cant have empty map so add IDataObject END_COM_MAP() public: virtual const tstring* PstrDisplayName(void); virtual BOOL FIsContainer(void) { return FALSE; } virtual BOOL FUsesResultList(void) { return FALSE; } virtual const CNodeType*Pnodetype(void) { return &nodetypePowerTestRoot; } virtual SC ScGetField(DAT dat, tstring& strField) { strField.erase(); return S_OK;} virtual SC ScGetResultViewType(LPOLESTR* ppViewType, long* pViewOptions); virtual SC ScOnShow(CComponent *pComponent, BOOL fSelect); virtual SnapinMenuItem *Pmenuitem(void); virtual INT CMenuItem(void); virtual SC ScCommand(long nCommandID, CComponent *pComponent = NULL); virtual DWORD DwFlagsMenuGray(void); // There is no list-view so following methods are empty. virtual SC ScInitializeResultView(CComponent *pComponent) { return S_OK;} virtual SC ScOnAddImages(IImageList* ipResultImageList) { return S_OK;} private: // bits returned from DwFlagsMenuGray enum { eFlag_ConsolePowerCreated = 0x00000001, eFlag_ConsolePowerNotCreated = 0x00000002, }; std::wstring GetMessageText(); void ReleaseAll (); void UpdateMessageView (); SC ScOnCreateConsolePower (CComponent *pComponent); SC ScOnReleaseConsolePower (CComponent *pComponent); SC ScOnResetIdleTimer (CComponent *pComponent); SC ScOnSetExecutionState (CComponent *pComponent); private: CComQIPtr m_spMsgView; CComPtr m_spConsolePower; CComPtr m_spConsolePowerSink; DWORD m_dwAdviseCookie; int m_cSystem; int m_cDisplay; static SnapinMenuItem s_rgMenuItems[]; }; /*+-------------------------------------------------------------------------* * CPowerTestConsolePowerSinkImpl * * *--------------------------------------------------------------------------*/ class CPowerTestConsolePowerSinkImpl : public CComObjectRoot, public IConsolePowerSink { BEGIN_COM_MAP(CPowerTestConsolePowerSinkImpl) COM_INTERFACE_ENTRY(IConsolePowerSink) END_COM_MAP() DECLARE_NOT_AGGREGATABLE(CPowerTestConsolePowerSinkImpl); public: STDMETHOD (OnPowerBroadcast)(WPARAM wParam, LPARAM lParam, LRESULT* plResult); }; /*+-------------------------------------------------------------------------* * CPowerTestSnapin * * *--------------------------------------------------------------------------*/ class CPowerTestSnapin : public CBaseSnapin { typedef CComObject > t_itemRoot; SNAPIN_DECLARE( CPowerTestSnapin); public: CPowerTestSnapin(); virtual ~CPowerTestSnapin(); // information about the snapin and root (ie initial) node virtual BOOL FStandalone() {return TRUE;} // only an extension snapin. virtual BOOL FIsExtension() {return FALSE;} virtual LONG IdsDescription(void) {return IDS_POWERTESTSNAPIN;} virtual LONG IdsName(void) {return IDS_POWERTESTSNAPIN;} virtual SC ScInitBitmaps(void); const CSnapinInfo * Psnapininfo() {return &snapininfoPowerTest;} private: tstring m_strDisplayName; }; /*+-------------------------------------------------------------------------* * CPowerTestDlg * * *--------------------------------------------------------------------------*/ class CPowerTestDlg : public CDialogImpl { public: CPowerTestDlg(bool fResetTimer = false) : m_fResetTimer (fResetTimer), m_dwAdd (0), m_dwRemove (0) {} DWORD GetAddFlags () const { return (m_dwAdd); } DWORD GetRemoveFlags () const { return (m_dwRemove); } enum { IDD = IDD_ConsolePowerTest }; BEGIN_MSG_MAP(CPowerTestDlg) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) COMMAND_ID_HANDLER(IDOK, OnOK) COMMAND_ID_HANDLER(IDCANCEL, OnCancel) END_MSG_MAP() // Handler prototypes: // LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); // LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled); LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { if (m_fResetTimer) { SetWindowText (_T("IConsolePower::ResetIdleTimer")); ::EnableWindow (GetDlgItem (IDC_RemoveGroup), false); ::EnableWindow (GetDlgItem (IDC_RemoveSystem), false); ::EnableWindow (GetDlgItem (IDC_RemoveDisplay), false); } return 1; // Let the system set the focus } LRESULT OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { if (IsDlgButtonChecked (IDC_AddSystem)) m_dwAdd |= ES_SYSTEM_REQUIRED; if (IsDlgButtonChecked (IDC_AddDisplay)) m_dwAdd |= ES_DISPLAY_REQUIRED; if (IsDlgButtonChecked (IDC_RemoveSystem)) m_dwRemove |= ES_SYSTEM_REQUIRED; if (IsDlgButtonChecked (IDC_RemoveDisplay)) m_dwRemove |= ES_DISPLAY_REQUIRED; EndDialog(wID); return 0; } LRESULT OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { EndDialog(wID); return 0; } private: const bool m_fResetTimer; DWORD m_dwAdd; DWORD m_dwRemove; };