mirror of
https://github.com/reactos/reactos.git
synced 2025-02-25 01:39:30 +00:00
improved error reporting for GCC version
svn path=/trunk/; revision=5794
This commit is contained in:
parent
4fcd44e5eb
commit
3ff42008f4
2 changed files with 28 additions and 14 deletions
|
@ -418,6 +418,8 @@ void StartMenu::ActivateEntry(int id, ShellEntry* entry)
|
||||||
|
|
||||||
new_folders.push_back(entry->create_absolute_pidl(_hwnd));
|
new_folders.push_back(entry->create_absolute_pidl(_hwnd));
|
||||||
|
|
||||||
|
//TODO: merge all entries of subdirectories with the same name, like "All Users\...\Accessories" and "<user>\...\Accessories"
|
||||||
|
|
||||||
CreateSubmenu(id, new_folders);
|
CreateSubmenu(id, new_folders);
|
||||||
} else {
|
} else {
|
||||||
entry->launch_entry(_hwnd); //TODO: launch in the background
|
entry->launch_entry(_hwnd); //TODO: launch in the background
|
||||||
|
@ -529,11 +531,11 @@ StartMenuRoot::StartMenuRoot(HWND hwnd)
|
||||||
{
|
{
|
||||||
// insert directory "All Users\Start Menu"
|
// insert directory "All Users\Start Menu"
|
||||||
ShellDirectory cmn_startmenu(Desktop(), SpecialFolderPath(CSIDL_COMMON_STARTMENU, _hwnd), _hwnd);
|
ShellDirectory cmn_startmenu(Desktop(), SpecialFolderPath(CSIDL_COMMON_STARTMENU, _hwnd), _hwnd);
|
||||||
_dirs.push_back(StartMenuDirectory(cmn_startmenu, false)); // dont't add subfolders
|
_dirs.push_back(StartMenuDirectory(cmn_startmenu, false)); // don't add subfolders
|
||||||
|
|
||||||
// insert directory "<user name>\Start Menu"
|
// insert directory "<user name>\Start Menu"
|
||||||
ShellDirectory usr_startmenu(Desktop(), SpecialFolderPath(CSIDL_STARTMENU, _hwnd), _hwnd);
|
ShellDirectory usr_startmenu(Desktop(), SpecialFolderPath(CSIDL_STARTMENU, _hwnd), _hwnd);
|
||||||
_dirs.push_back(StartMenuDirectory(usr_startmenu, false)); // dont't add subfolders
|
_dirs.push_back(StartMenuDirectory(usr_startmenu, false)); // don't add subfolders
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -54,24 +54,35 @@ using namespace _com_util;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
struct COMException {
|
struct COMException
|
||||||
|
{
|
||||||
COMException(HRESULT hr)
|
COMException(HRESULT hr)
|
||||||
: _hr(hr)
|
: _hr(hr)
|
||||||
{
|
{
|
||||||
_msg = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LPCTSTR ErrorMessage() const
|
LPCTSTR ErrorMessage() const
|
||||||
{
|
{
|
||||||
if (!_msg)
|
if (_msg.empty()) {
|
||||||
_msg = TEXT("COM Exception"); //TODO: use FormatMessage()
|
LPTSTR pBuf;
|
||||||
|
|
||||||
|
if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,
|
||||||
|
0, _hr, MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT), (LPSTR)&pBuf, 0, NULL)) {
|
||||||
|
_msg = pBuf;
|
||||||
|
LocalFree(pBuf);
|
||||||
|
} else {
|
||||||
|
TCHAR buffer[128];
|
||||||
|
_stprintf(buffer, _T("unknown COM Exception: 0x%08X"), _hr);
|
||||||
|
_msg = buffer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return _msg;
|
return _msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
HRESULT _hr;
|
HRESULT _hr;
|
||||||
mutable LPCTSTR _msg;
|
mutable String _msg;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline void CheckError(HRESULT hr)
|
inline void CheckError(HRESULT hr)
|
||||||
|
@ -213,12 +224,12 @@ template<typename T> struct SShellPtr
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
SShellPtr()
|
SShellPtr()
|
||||||
: _p(0)
|
: _p(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
SShellPtr(T* p)
|
SShellPtr(T* p)
|
||||||
: _p(p)
|
: _p(p)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -243,11 +254,12 @@ private:
|
||||||
template<typename T> struct SIfacePtr
|
template<typename T> struct SIfacePtr
|
||||||
{
|
{
|
||||||
SIfacePtr()
|
SIfacePtr()
|
||||||
: _p(0)
|
: _p(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
SIfacePtr(T* p) : _p(p)
|
SIfacePtr(T* p)
|
||||||
|
: _p(p)
|
||||||
{
|
{
|
||||||
if (p)
|
if (p)
|
||||||
p->AddRef();
|
p->AddRef();
|
||||||
|
@ -322,7 +334,7 @@ template<typename T> struct SIfacePtr
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
SIfacePtr(const SIfacePtr& o)
|
SIfacePtr(const SIfacePtr& o)
|
||||||
: _p(o._p)
|
: _p(o._p)
|
||||||
{
|
{
|
||||||
if (_p)
|
if (_p)
|
||||||
_p->AddRef();
|
_p->AddRef();
|
||||||
|
@ -458,7 +470,7 @@ struct ShellPath : public SShellPtr<ITEMIDLIST>
|
||||||
}
|
}
|
||||||
|
|
||||||
ShellPath(ITEMIDLIST* p)
|
ShellPath(ITEMIDLIST* p)
|
||||||
: SShellPtr<ITEMIDLIST>(p)
|
: SShellPtr<ITEMIDLIST>(p)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue