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

📄 powcpl.h

📁 Windows WDM 设备驱动程序开发指南光盘 保护随书的源代码
💻 H
字号:
// powcpl.h -- Declarations for sample power-management property page provider
// Copyright (C) 1998 by Walter Oney
// All rights reserved

#ifndef POWCPL_H
#define POWCPL_H

#ifndef __AFXWIN_H__
	#error include 'stdafx.h' before including this file for PCH
#endif

#define arraysize(p) (sizeof(p)/sizeof((p)[0]))

enum HEAPTYPE {LOCALHEAP, SHELLHEAP};

#ifdef _DEBUG
	#define ASSERT_THIS_VALID() pThis->AssertValid()
#else
	#define AssertValid()
	#define ASSERT_THIS_VALID()
#endif

///////////////////////////////////////////////////////////////////////////////

class CShellxApp : public CWinApp
{
public:

	//{{AFX_VIRTUAL(CShellxApp)
	virtual BOOL InitInstance();
	virtual int ExitInstance();
	//}}AFX_VIRTUAL

	//{{AFX_MSG(CShellxApp)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

///////////////////////////////////////////////////////////////////////////////

class CShellPropPage : public CPropertyPage
{								// class CShellPropPage
	DECLARE_DYNAMIC(CShellPropPage)

public:
	CShellPropPage(CCmdTarget* parent, UINT id);
	virtual ~CShellPropPage();

	CCmdTarget*	m_parent;
	UINT (CALLBACK* m_callback)(HWND, UINT, LPPROPSHEETPAGE);

	HRESULT AddPage(LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam);
};								// class CShellPropPage

#include "page1.h"

///////////////////////////////////////////////////////////////////////////////
																			
class CShellExtension : public CCmdTarget
{								// class CShellExtension
	DECLARE_DYNCREATE(CShellExtension)
	CShellExtension();

private:
	DWORD	m_sig;

public:
	//{{AFX_VIRTUAL(CShellExtension)
	//}}AFX_VIRTUAL

protected:

	virtual ~CShellExtension();

#ifdef _DEBUG
	void AssertValid();
#endif

	CPage1			m_page1;
	IDataObject*			m_data;		// current data object
	HKEY					m_hkey;		// registry key
	LPCITEMIDLIST			m_idlist;	// ID list for affected object
	CString					m_source;	// name of drag source or context menu subject

	//{{AFX_MSG(CShellExtension)
	//}}AFX_MSG

	DECLARE_MESSAGE_MAP()
	DECLARE_OLECREATE(CShellExtension)

	DECLARE_INTERFACE_MAP()

	// IShellExtInit interface
	BEGIN_INTERFACE_PART(ShellExtInit, IShellExtInit)
		STDMETHOD(Initialize)(LPCITEMIDLIST idlist, LPDATAOBJECT objects, HKEY hkey);
	END_INTERFACE_PART(ShellExtInit)

	// IShellPropSheetExt interface
	BEGIN_INTERFACE_PART(ShellPropSheetExt, IShellPropSheetExt)
		STDMETHOD(AddPages)(LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam);
		STDMETHOD(ReplacePage)(UINT uPageID, LPFNADDPROPSHEETPAGE lpfnReplacePage, LPARAM lParam);
	END_INTERFACE_PART(ShellPropSheetExt)
};								// class CShellExtension

///////////////////////////////////////////////////////////////////////////////

inline CString UuidToCString(const UUID& iid)
	{
	LPTSTR s;
#ifdef _UNICODE
	UuidToString((UUID*) &iid, (LPWSTR) &s);
#else
	UuidToString((UUID*) &iid, (PBYTE*) &s);
#endif
	CString result(s);
	RpcStringFree((PBYTE*) &s);
	return result;
	}

#define IMPLEMENT_DUAL_INTERFACE_IUNKNOWN(theClass, localClass) \
ULONG theClass::X##localClass::AddRef() { \
	METHOD_PROLOGUE(theClass, localClass) \
	return pThis->ExternalAddRef(); } \
ULONG theClass::X##localClass::Release() { \
	METHOD_PROLOGUE(theClass, localClass) \
	return pThis->ExternalRelease(); } \
HRESULT theClass::X##localClass::QueryInterface(REFIID iid, PVOID* ppv) { \
	METHOD_PROLOGUE(theClass, localClass) \
	return (HRESULT) pThis->ExternalQueryInterface(&iid, ppv); }

#endif

⌨️ 快捷键说明

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