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_