Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
tbext.h
Package: shell.rar [view]
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 6k
Category:
Windows Kernel
Development Platform:
Visual C++
- ///////////////////////////////////////////////////////
- // File: TBBxt.h (Toolbar Button Extension Headers
- // Author: Karim Farouki
- //
- // We declare here three classes:
- // (1) CToolbarExt a base class that takes care of the
- // button work for our custom extensions
- // (2) CToolbarExtBand the object which deals with custom
- // buttons that plug into bands
- // (3) CToolbarExtExec the object which deals with custom
- // buttons (or tools menu items) that exec stuff.
- //
- // The latter two are derived from the former
- #ifndef _TBEXT_H
- #define _TBEXT_H
- #include "priv.h"
- //
- // Internal interface for accessing ther properties of a button/menu extension.
- // This interface will likely go away afer IE5B2 when we move this functionality to
- // a browser helper object.
- //
- typedef enum _tagGetPropertyIDs
- {
- TBEX_BUTTONTEXT = 100, // VT_BSTR
- TBEX_TOOLTIPTEXT = 101, // VT_BSTR
- TBEX_GRAYICON = 102, // HICON as a VT_BYREF
- TBEX_HOTICON = 103, // HICON as a VT_BYREF
- TBEX_GRAYICONSM = 104, // HICON as a VT_BYREF
- TBEX_HOTICONSM = 105, // HICON as a VT_BYREF
- TBEX_DEFAULTVISIBLE = 106, // VT_BOOL
- TMEX_MENUTEXT = 200, // VT_BSTR
- TMEX_STATUSBARTEXT = 201, // VT_BSTR
- TMEX_CUSTOM_MENU = 202, // VT_BSTR
- } GETPROPERTYIDS;
- interface IBrowserExtension : IUnknown
- {
- virtual STDMETHODIMP Init(REFGUID refguid) = 0;
- virtual STDMETHODIMP GetProperty(SHORT iPropID, VARIANTARG * varProperty) = 0;
- };
- class CToolbarExt : public IBrowserExtension,
- public IOleCommandTarget,
- public IObjectWithSite
- {
- public:
- // Constructor/Destructor
- CToolbarExt();
- virtual ~CToolbarExt();
- // IUnknown Interface Members
- STDMETHODIMP QueryInterface(const IID& iid, void** ppv);
- STDMETHODIMP_(ULONG) AddRef();
- STDMETHODIMP_(ULONG) Release();
- // IBrowserExtension Interface Members
- STDMETHODIMP Init(REFGUID rguid);
- STDMETHODIMP GetProperty(SHORT iPropID, VARIANTARG * pvarProperty);
- // IOleCommandTarget Interface Members
- STDMETHODIMP QueryStatus(const GUID * pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT * pCmdText);
- STDMETHODIMP Exec(const GUID * pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT* pvaIn, VARIANT* pvaOut) = 0;
- // IObjectWithSite Interface Members
- STDMETHODIMP SetSite(IUnknown* pUnkSite);
- STDMETHODIMP GetSite(REFIID riid, void ** ppvSite);
- protected:
- BOOL _RegGetBoolValue(LPCWSTR pszPropName, BOOL fDefault);
- BOOL _RegReadString(HKEY hkeyThisExtension, LPCWSTR szPropName, BSTR * pbstrProp, BOOL fExpand = FALSE);
- HICON _ExtractIcon(LPWSTR pszPath, int resid, int cx, int cy);
- HRESULT _GetIcon(LPCWSTR pszIcon, int nWidth, int nHeight, HICON& rhIcon, VARIANTARG * pvarProperty);
- long _cRef;
- HICON _hIcon; // gray icon regular size
- HICON _hIconSm; // gray icon small
- HICON _hHotIcon; // Hot... are color versions of above
- HICON _hHotIconSm;
- BSTR _bstrButtonText; // The buttons caption
- BSTR _bstrToolTip; // This is optional (not supported on our side yet)
- HKEY _hkeyThisExtension;
- HKEY _hkeyCurrentLang; // optional location for localized strings
- IShellBrowser* _pisb; // passed in by IObjectWithSite::SetSite() Used to load band
- };
- class CToolbarExtBand : public CToolbarExt
- {
- public:
- // Constructor / Destructor
- CToolbarExtBand();
- virtual ~CToolbarExtBand();
- // Overridden IBrowserExtension Interface Members
- STDMETHODIMP Init(REFGUID rguid);
- // Overridden IOleCommandTarget Interface Members
- STDMETHODIMP QueryStatus(const GUID * pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT * pCmdText);
- STDMETHODIMP Exec(const GUID * pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT* pvaIn, VARIANT* pvaOut);
- protected:
- BOOL _bBandState; // This is a hack... ideally state will be determined from the browser
- BSTR _bstrBandCLSID; // CLSID of band to load. Kept as BSTR because this is how it is passed
- // to load the band
- };
- class CToolbarExtExec : public CToolbarExt
- {
- public:
- // Constructor / Destructor
- CToolbarExtExec();
- virtual ~CToolbarExtExec();
- // Overridden IBrowserExtension Interface Members
- STDMETHODIMP Init(REFGUID rguid);
- STDMETHODIMP GetProperty(SHORT iPropID, VARIANTARG * pvarProperty);
- // Overridden IObjectWithSite Interface Members
- STDMETHODIMP SetSite(IUnknown* pUnkSite);
- // Overridden IOleCommandTarget Interface Members
- STDMETHODIMP QueryStatus(const GUID * pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT * pCmdText);
- STDMETHODIMP Exec(const GUID * pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT* pvaIn, VARIANT* pvaOut);
- protected:
- BOOL _bButton; // Does this object support being a button?
- BOOL _bMenuItem; // Does it support being a menu item?
- BOOL _bExecCalled; // if Exec was called
- BSTR _bstrExec; // Thing to ShellExecute
- BSTR _bstrScript; // Script to Execute
- BSTR _bstrMenuText;
- BSTR _bstrMenuCustomize; // the menu that is to be customized
- BSTR _bstrMenuStatusBar;
- IUnknown* _punkExt; // (Optional) created when button is first pressed
- };
- #endif // _TBEXT_H