#include <shellapi.h>
#include <shlobj.h>
Go to the source code of this file.
Classes | |
struct | COMException |
Exception with context information. More... | |
struct | ComInit |
COM Initialisation. More... | |
struct | OleInit |
OLE initialisation for drag drop support. More... | |
struct | CommonShellMalloc |
We use a common IMalloc object for all shell memory allocations. More... | |
struct | ShellMalloc |
wrapper class for IMalloc with usage of common allocator More... | |
struct | SShellPtr< T > |
wrapper template class for pointers to shell objects managed by IMalloc More... | |
struct | SIfacePtr< T > |
wrapper class for COM interface pointers More... | |
struct | ComSrvObject |
struct | SimpleComObject |
struct | IComSrvQI< BASE > |
struct | IComSrvQI< IUnknown > |
class | IComSrvBase< BASE, OBJ > |
struct | CommonDesktop |
caching of desktop ShellFolder object More... | |
struct | ShellFolder |
IShellFolder smart pointer. More... | |
struct | ShellLinkPtr |
IShellLink smart pointer. More... | |
struct | ShellPath |
wrapper class for item ID lists More... | |
struct | StrRetA |
easy retrieval of multi byte strings out of STRRET structures More... | |
struct | StrRetW |
easy retrieval of wide char strings out of STRRET structures More... | |
class | FileSysShellPath |
Retrieval of file system paths of ShellPath objects. More... | |
struct | FolderBrowser |
Browse dialog operating on shell namespace. More... | |
struct | SpecialFolderPath |
Retrieval of special shell folder paths. More... | |
struct | DesktopFolderPath |
Shell folder path of the desktop. More... | |
struct | SpecialFolder |
Retrieval of special shell folder. More... | |
struct | DesktopFolder |
Shell folder of the desktop. More... | |
struct | SpecialFolderFSPath |
file system path of special folder More... | |
struct | ShellItemEnumerator |
wrapper class for enumerating shell namespace objects More... | |
struct | PIDList |
list of PIDLs More... | |
struct | CtxMenuInterfaces |
struct | ExtContextMenuHandlerT< BASE > |
Defines | |
#define | NOVTABLE |
#define | ANSUNC |
#define | COMExceptionBase _com_error |
#define | THROW_EXCEPTION(hr) throw COMException(hr, __FILE__, __LINE__) |
#define | CHECKERROR(hr) ((void)(FAILED(hr)? THROW_EXCEPTION(hr): 0)) |
#define | IShellLinkPtr IShellLinkAPtr |
#define | path_from_pidl path_from_pidlA |
#define | ILGetSize ILGetSize_local |
#define | UNION_MEMBER(x) x |
#define | StrRet StrRetA |
Functions | |
void | HandleException (COMException &e, HWND hwnd) |
Exception Handler for COM exceptions. | |
ShellFolder & | GetDesktopFolder () |
HRESULT | path_from_pidlA (IShellFolder *folder, LPCITEMIDLIST pidl, LPSTR buffer, int len) |
HRESULT | path_from_pidlW (IShellFolder *folder, LPCITEMIDLIST pidl, LPWSTR buffer, int len) |
HRESULT | name_from_pidl (IShellFolder *folder, LPCITEMIDLIST pidl, LPTSTR buffer, int len, SHGDNF flags) |
UINT | ILGetSize_local (LPCITEMIDLIST pidl) |
HRESULT | ShellFolderContextMenu (IShellFolder *shell_folder, HWND hwndParent, int cidl, LPCITEMIDLIST *ppidl, int x, int y, CtxMenuInterfaces &cm_ifs) |
#define ANSUNC |
Definition at line 60 of file shellclasses.h.
#define CHECKERROR | ( | hr ) | ((void)(FAILED(hr)? THROW_EXCEPTION(hr): 0)) |
Definition at line 162 of file shellclasses.h.
Referenced by ShellFolder::attach(), ComInit::ComInit(), DesktopShellView::DoContextMenu(), ShellFolder::get_name(), ShellPath::GetUIObjectOf(), CommonShellMalloc::init(), OleInit::OleInit(), ShellBrowser::OnTreeItemRClick(), ShellFolder::ShellFolder(), ShellItemEnumerator::ShellItemEnumerator(), ShellPath::ShellPath(), SIfacePtr< IOleInPlaceObject >::SIfacePtr(), SpecialFolderPath::SpecialFolderPath(), StartMenu::WndProc(), QuickLaunchBar::WndProc(), and FileChildWindow::WndProc().
#define COMExceptionBase _com_error |
Definition at line 67 of file shellclasses.h.
#define ILGetSize ILGetSize_local |
Definition at line 638 of file shellclasses.h.
Referenced by ShellPath::assign(), ShellPath::create_absolute_pidl(), ShellPath::operator+=(), ShellPath::operator=(), and ShellPath::ShellPath().
#define IShellLinkPtr IShellLinkAPtr |
Definition at line 573 of file shellclasses.h.
#define NOVTABLE |
Definition at line 58 of file shellclasses.h.
#define path_from_pidl path_from_pidlA |
Definition at line 628 of file shellclasses.h.
Referenced by ShellDirectory::get_path(), and ShellDirectory::read_directory().
#define StrRet StrRetA |
Definition at line 871 of file shellclasses.h.
Referenced by ShellFolder::get_name(), and name_from_pidl().
#define THROW_EXCEPTION | ( | hr ) | throw COMException(hr, __FILE__, __LINE__) |
Definition at line 161 of file shellclasses.h.
Referenced by BStr::assign(), ScanNTFSStreams(), and WebChildWindow::WndProc().
#define UNION_MEMBER | ( | x ) | x |
Definition at line 861 of file shellclasses.h.
Referenced by StrRetW::GetString(), and StrRetA::GetString().
ShellFolder& GetDesktopFolder | ( | ) |
Definition at line 117 of file shellclasses.cpp.
References CommonDesktop::init().
Referenced by QuickLaunchBar::AddShortcuts(), CollectProgramsThread::collect_programs(), ShellEntry::do_context_menu(), Entry::do_context_menu(), FileChildWindow::FileChildWindow(), ShellEntry::get_parent_folder(), Favorites::import_IE_favorites(), BookmarkList::import_IE_favorites(), ShellBrowser::Init(), DesktopWindow::Init(), main(), ShellFolder::ShellFolder(), ShellPath::ShellPath(), StartMenu::StartMenu(), and StartMenuRoot::StartMenuRoot().
{ static CommonDesktop s_desktop; // initialize s_desktop s_desktop.init(); return s_desktop; }
void HandleException | ( | COMException & | e, |
HWND | hwnd | ||
) |
Exception Handler for COM exceptions.
Definition at line 93 of file shellclasses.cpp.
References TEXT, and COMException::toString().
Referenced by PropertySheetDialog::DoModal(), explorer_main(), StartMenu::Init(), ShellBrowser::InsertSubitems(), Window::MessageLoop(), MainFrameBase::OpenShellFolders(), ShellDirectory::read_directory(), StartMenuRoot::TrackStartmenu(), and WebChildWindow::WndProc().
{ String msg = e.toString(); SetLastError(0); if (hwnd && !IsWindowVisible(hwnd)) hwnd = 0; MessageBox(hwnd, msg, TEXT("ShellClasses Exception"), MB_ICONHAND|MB_OK); // If displaying the error message box _with_ parent was not successfull, display it now without a parent window. if (GetLastError() == ERROR_INVALID_WINDOW_HANDLE) MessageBox(0, msg, TEXT("ShellClasses Exception"), MB_ICONHAND|MB_OK); }
UINT ILGetSize_local | ( | LPCITEMIDLIST | pidl ) |
Definition at line 428 of file shellclasses.cpp.
{ if (!pidl) return 0; int l = sizeof(USHORT/*SHITEMID::cb*/); while(pidl->mkid.cb) { l += pidl->mkid.cb; pidl = LPCITEMIDLIST((LPBYTE)pidl+pidl->mkid.cb); } return l; }
HRESULT name_from_pidl | ( | IShellFolder * | folder, |
LPCITEMIDLIST | pidl, | ||
LPTSTR | buffer, | ||
int | len, | ||
SHGDNF | flags | ||
) |
Definition at line 175 of file shellclasses.cpp.
References CONTEXT, and StrRet.
Referenced by ShellDirectory::read_directory().
{ CONTEXT("name_from_pidl()"); StrRet str; HRESULT hr = folder->GetDisplayNameOf(pidl, flags, &str); if (SUCCEEDED(hr)) str.GetString(pidl->mkid, buffer, len); else buffer[0] = '\0'; return hr; }
HRESULT path_from_pidlA | ( | IShellFolder * | folder, |
LPCITEMIDLIST | pidl, | ||
LPSTR | buffer, | ||
int | len | ||
) |
Definition at line 143 of file shellclasses.cpp.
References CONTEXT, and StrRetA::GetString().
{ CONTEXT("path_from_pidlA()"); StrRetA str; HRESULT hr = folder->GetDisplayNameOf(pidl, SHGDN_FORPARSING, &str); if (SUCCEEDED(hr)) str.GetString(pidl->mkid, buffer, len); else buffer[0] = '\0'; return hr; }
HRESULT path_from_pidlW | ( | IShellFolder * | folder, |
LPCITEMIDLIST | pidl, | ||
LPWSTR | buffer, | ||
int | len | ||
) |
Definition at line 159 of file shellclasses.cpp.
References CONTEXT, and StrRetW::GetString().
{ CONTEXT("path_from_pidlW()"); StrRetW str; HRESULT hr = folder->GetDisplayNameOf(pidl, SHGDN_FORPARSING, &str); if (SUCCEEDED(hr)) str.GetString(pidl->mkid, buffer, len); else buffer[0] = '\0'; return hr; }
HRESULT ShellFolderContextMenu | ( | IShellFolder * | shell_folder, |
HWND | hwndParent, | ||
int | cidl, | ||
LPCITEMIDLIST * | ppidl, | ||
int | x, | ||
int | y, | ||
CtxMenuInterfaces & | cm_ifs | ||
) |
Definition at line 531 of file shellclasses.cpp.
References CtxMenuInterfaces::query_interfaces(), and CtxMenuInterfaces::reset().
Referenced by ShellEntry::do_context_menu(), Entry::do_context_menu(), and DesktopShellView::DoContextMenu().
{ IContextMenu* pcm; HRESULT hr = shell_folder->GetUIObjectOf(hwndParent, cidl, apidl, IID_IContextMenu, NULL, (LPVOID*)&pcm); // HRESULT hr = CDefFolderMenu_Create2(dir?dir->_pidl:DesktopFolder(), hwndParent, 1, &pidl, shell_folder, NULL, 0, NULL, &pcm); if (SUCCEEDED(hr)) { pcm = cm_ifs.query_interfaces(pcm); HMENU hmenu = CreatePopupMenu(); if (hmenu) { hr = pcm->QueryContextMenu(hmenu, 0, FCIDM_SHVIEWFIRST, FCIDM_SHVIEWLAST, CMF_NORMAL|CMF_EXPLORE); if (SUCCEEDED(hr)) { UINT idCmd = TrackPopupMenu(hmenu, TPM_LEFTALIGN|TPM_RETURNCMD|TPM_RIGHTBUTTON, x, y, 0, hwndParent, NULL); cm_ifs.reset(); if (idCmd) { CMINVOKECOMMANDINFO cmi; cmi.cbSize = sizeof(CMINVOKECOMMANDINFO); cmi.fMask = 0; cmi.hwnd = hwndParent; cmi.lpVerb = (LPCSTR)(INT_PTR)(idCmd - FCIDM_SHVIEWFIRST); cmi.lpParameters = NULL; cmi.lpDirectory = NULL; cmi.nShow = SW_SHOWNORMAL; cmi.dwHotKey = 0; cmi.hIcon = 0; hr = pcm->InvokeCommand(&cmi); } } else cm_ifs.reset(); DestroyMenu(hmenu); } pcm->Release(); } return hr; }
ROS Explorer Source Code Documentation
generated on 02.01.2013 by ![]() |