#include <precomp.h>
Go to the source code of this file.
Defines | |
| #define | CSIDL_FLAG_CREATE 0x8000 |
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 *apidl, int x, int y, CtxMenuInterfaces &cm_ifs) |
| #define CSIDL_FLAG_CREATE 0x8000 |
Definition at line 445 of file shellclasses.cpp.
Referenced by SpecialFolderFSPath::SpecialFolderFSPath().
| 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 * | apidl, | ||
| 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
|