www.pudn.com > FTP¿Í»§¶Ë³ÌÐòµÄÔ´³ÌÐò.zip > FPView.h


// FPView.h : Declaration of the CFPView 
// Copyright © 1999 Ziff-Davis, Inc. 
// Written by Ignacio Alvarez 
 
#ifndef __FPVIEW_H_ 
#define __FPVIEW_H_ 
 
#include "resource.h"       // main symbols 
#include  
 
 
///////////////////////////////////////////////////////////////////////////// 
// CFPView 
class ATL_NO_VTABLE CFPView :  
	public CComObjectRootEx, 
	public IFPView, 
	public CComCompositeControl, 
	public IPersistStreamInitImpl, 
	public IOleControlImpl, 
	public IOleObjectImpl, 
	public IOleInPlaceActiveObjectImpl, 
	public IViewObjectExImpl, 
	public IOleInPlaceObjectWindowlessImpl, 
	public CComCoClass, 
	public IShellView 
{ 
public: 
	CFPView() 
	{ 
		SaveSettings.fFlags = 0; 
		SaveSettings.ViewMode = 0; 
		m_bWindowOnly = TRUE; 
		CalcExtent(m_sizeExtent); 
	} 
 
DECLARE_REGISTRY_RESOURCEID(IDR_FPVIEW) 
DECLARE_NOT_AGGREGATABLE(CFPView) 
 
DECLARE_PROTECT_FINAL_CONSTRUCT() 
 
BEGIN_COM_MAP(CFPView) 
	COM_INTERFACE_ENTRY(IFPView) 
	COM_INTERFACE_ENTRY(IViewObjectEx) 
	COM_INTERFACE_ENTRY(IViewObject2) 
	COM_INTERFACE_ENTRY(IViewObject) 
	COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless) 
	COM_INTERFACE_ENTRY(IOleInPlaceObject) 
	COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless) 
	COM_INTERFACE_ENTRY(IOleInPlaceActiveObject) 
	COM_INTERFACE_ENTRY(IOleControl) 
	COM_INTERFACE_ENTRY(IOleObject) 
	COM_INTERFACE_ENTRY(IPersistStreamInit) 
	COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit) 
	COM_INTERFACE_ENTRY(IShellView) 
END_COM_MAP() 
 
BEGIN_PROP_MAP(CFPView) 
	PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4) 
	PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4) 
	// Example entries 
	// PROP_ENTRY("Property Description", dispid, clsid) 
	// PROP_PAGE(CLSID_StockColorPage) 
END_PROP_MAP() 
 
BEGIN_MSG_MAP(CFPView) 
	CHAIN_MSG_MAP(CComCompositeControl) 
	COMMAND_HANDLER(IDC_BUTTON1, BN_CLICKED, OnClickedButton1) 
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); 
 
BEGIN_SINK_MAP(CFPView) 
	//Make sure the Event Handlers have __stdcall calling convention 
END_SINK_MAP() 
 
	STDMETHOD(OnAmbientPropertyChange)(DISPID dispid) 
	{ 
		if (dispid == DISPID_AMBIENT_BACKCOLOR) 
		{ 
			SetBackgroundColorFromAmbient(); 
			FireViewChange(); 
		} 
		return IOleControlImpl::OnAmbientPropertyChange(dispid); 
	} 
 
 
 
// IViewObjectEx 
	DECLARE_VIEW_STATUS(0) 
 
// IFPView 
private: 
	FOLDERSETTINGS SaveSettings; 
 
public: 
    // *** IOleWindow methods *** 
 
	STDMETHOD(GetWindow)(HWND* phwnd) 
	{ 
		*phwnd = m_hWnd; 
		return NOERROR; 
	} 
 
	STDMETHOD(ContextSensitiveHelp)(BOOL /* fEnterMode */) 
	{ 
		ATLTRACENOTIMPL(_T("ContextSensitiveHelp")); 
	} 
 
	// *** IShellView methods *** 
	STDMETHOD(TranslateAccelerator) (  LPMSG lpmsg) 
	{ 
		ATLTRACENOTIMPL(_T("TranslateAccelerator")); 
	} 
 
#ifdef _FIX_ENABLEMODELESS_CONFLICT 
	STDMETHOD(EnableModelessSV)(BOOL /* fEnable */) 
	{ 
		ATLTRACENOTIMPL(_T("EnableModelessSV")); 
	} 
#else 
	STDMETHOD(EnableModeless)(BOOL /* fEnable */) 
	{ 
		ATLTRACENOTIMPL(_T("EnableModeless")); 
	} 
#endif 
 
	STDMETHOD(UIActivate) (  UINT uState) 
	{ 
		ATLTRACENOTIMPL(_T("UIActivate")); 
	} 
	 
	STDMETHOD(Refresh) ()  
	{ 
		ATLTRACENOTIMPL(_T("Refresh")); 
	} 
 
	STDMETHOD(CreateViewWindow)(  IShellView  *lpPrevView, 
					LPCFOLDERSETTINGS lpfs, IShellBrowser  * psb, 
					RECT * prcView, HWND  *phWnd)  
	{ 
		if(lpPrevView) 
			lpPrevView->GetCurrentInfo(&SaveSettings);	// If there was a previous view, it copies its folder settings in order to maintain a consistent look between views 
		else 
			SaveSettings = *lpfs;						// Otherwise, it uses the folder settings that the shell passes to the function 
		HWND l_parent = NULL; 
		psb->GetWindow (&l_parent);						// Gets the handle to the parent window 
		CreateControlWindow(l_parent, *prcView);		// Creates the View window 
		*phWnd = m_hWnd; 
		return NOERROR; 
	} 
 
	STDMETHOD(DestroyViewWindow)(void)  
	{ 
		DestroyWindow();	// Destroys the View window; 
		return NOERROR; 
	} 
 
	STDMETHOD(GetCurrentInfo)(  LPFOLDERSETTINGS lpfs) 
	{ 
		*lpfs = SaveSettings; // Returns the saved folder settings 
		return NOERROR; 
	} 
 
	STDMETHOD(AddPropertySheetPages)(  DWORD dwReserved, 
					LPFNADDPROPSHEETPAGE lpfn, LPARAM lparam) 
	{ 
		ATLTRACENOTIMPL(_T("AddPropertySheetPages")); 
	} 
 
	STDMETHOD(SaveViewState)(void) 
	{ 
		ATLTRACENOTIMPL(_T("SaveViewState")); 
	} 
 
	STDMETHOD(SelectItem)(  LPCITEMIDLIST pidlItem, UINT uFlags) 
	{ 
		ATLTRACENOTIMPL(_T("SelectItem")); 
	} 
 
	STDMETHOD(GetItemObject)(  UINT uItem, REFIID riid, 
					LPVOID *ppv)  
	{ 
		*ppv = NULL; 
		ATLTRACENOTIMPL(_T("GetItemObject")); 
	} 
 
 
	enum { IDD = IDD_FPVIEW }; 
	 
	// This function is called when the user presses the Help button 
	LRESULT OnClickedButton1(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) 
	{ 
		char Path[MAX_PATH]; 
		ReadFolders(); 
		wsprintf(Path, "%sFPointer.hlp", dllPath); 
		ShellExecute(0, "open", Path, NULL, NULL, SW_SHOWNORMAL);	// Opens the help file 
		return 0; 
	} 
}; 
 
#endif //__FPVIEW_H_