mirror of
https://github.com/reactos/reactos.git
synced 2025-05-13 14:20:31 +00:00
[SHELL32]
- Improve code readability in defcontextmenu.cpp - Fix few leaks - Properly handle reference count when creating objects svn path=/trunk/; revision=54979
This commit is contained in:
parent
04acd45a57
commit
99b2e3df40
3 changed files with 448 additions and 511 deletions
File diff suppressed because it is too large
Load diff
|
@ -123,11 +123,9 @@ SH_ShowDriveProperties(WCHAR *pwszDrive, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST
|
||||||
{
|
{
|
||||||
HPSXA hpsx = NULL;
|
HPSXA hpsx = NULL;
|
||||||
HPROPSHEETPAGE hpsp[MAX_PROPERTY_SHEET_PAGE];
|
HPROPSHEETPAGE hpsp[MAX_PROPERTY_SHEET_PAGE];
|
||||||
WCHAR wszName[256];
|
|
||||||
PROPSHEETHEADERW psh;
|
PROPSHEETHEADERW psh;
|
||||||
HRESULT hr;
|
|
||||||
CComObject<CDrvDefExt> *pDrvDefExt = NULL;
|
CComObject<CDrvDefExt> *pDrvDefExt = NULL;
|
||||||
|
|
||||||
ZeroMemory(&psh, sizeof(PROPSHEETHEADERW));
|
ZeroMemory(&psh, sizeof(PROPSHEETHEADERW));
|
||||||
psh.dwSize = sizeof(PROPSHEETHEADERW);
|
psh.dwSize = sizeof(PROPSHEETHEADERW);
|
||||||
psh.dwFlags = 0; // FIXME: make it modeless
|
psh.dwFlags = 0; // FIXME: make it modeless
|
||||||
|
@ -135,6 +133,7 @@ SH_ShowDriveProperties(WCHAR *pwszDrive, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST
|
||||||
psh.nStartPage = 0;
|
psh.nStartPage = 0;
|
||||||
psh.phpage = hpsp;
|
psh.phpage = hpsp;
|
||||||
|
|
||||||
|
WCHAR wszName[256];
|
||||||
if (GetVolumeInformationW(pwszDrive, wszName, sizeof(wszName) / sizeof(WCHAR), NULL, NULL, NULL, NULL, 0))
|
if (GetVolumeInformationW(pwszDrive, wszName, sizeof(wszName) / sizeof(WCHAR), NULL, NULL, NULL, NULL, 0))
|
||||||
{
|
{
|
||||||
psh.pszCaption = wszName;
|
psh.pszCaption = wszName;
|
||||||
|
@ -148,13 +147,14 @@ SH_ShowDriveProperties(WCHAR *pwszDrive, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST
|
||||||
}
|
}
|
||||||
|
|
||||||
CComPtr<IDataObject> pDataObj;
|
CComPtr<IDataObject> pDataObj;
|
||||||
hr = SHCreateDataObject(pidlFolder, 1, apidl, NULL, IID_IDataObject, (LPVOID *)&pDataObj);
|
HRESULT hr = SHCreateDataObject(pidlFolder, 1, apidl, NULL, IID_IDataObject, (LPVOID *)&pDataObj);
|
||||||
|
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
ATLTRY(pDrvDefExt = new CComObject<CDrvDefExt>);
|
hr = CComObject<CDrvDefExt>::CreateInstance(&pDrvDefExt);
|
||||||
if (pDrvDefExt)
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
|
pDrvDefExt->AddRef(); // CreateInstance returns object with 0 ref count
|
||||||
hr = pDrvDefExt->Initialize(pidlFolder, pDataObj, NULL);
|
hr = pDrvDefExt->Initialize(pidlFolder, pDataObj, NULL);
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
|
|
|
@ -97,8 +97,6 @@ LoadPropSheetHandlers(LPCWSTR pwszPath, PROPSHEETHEADERW *pHeader, UINT cMaxPage
|
||||||
BOOL
|
BOOL
|
||||||
SH_ShowPropertiesDialog(LPCWSTR pwszPath, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST *apidl)
|
SH_ShowPropertiesDialog(LPCWSTR pwszPath, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST *apidl)
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
|
||||||
HPROPSHEETPAGE hppages[MAX_PROPERTY_SHEET_PAGE];
|
|
||||||
HPSXA hpsxa[3] = {NULL, NULL, NULL};
|
HPSXA hpsxa[3] = {NULL, NULL, NULL};
|
||||||
CComObject<CFileDefExt> *pFileDefExt = NULL;
|
CComObject<CFileDefExt> *pFileDefExt = NULL;
|
||||||
|
|
||||||
|
@ -107,6 +105,7 @@ SH_ShowPropertiesDialog(LPCWSTR pwszPath, LPCITEMIDLIST pidlFolder, LPCITEMIDLIS
|
||||||
if (pwszPath == NULL || !wcslen(pwszPath))
|
if (pwszPath == NULL || !wcslen(pwszPath))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
HPROPSHEETPAGE hppages[MAX_PROPERTY_SHEET_PAGE];
|
||||||
memset(hppages, 0x0, sizeof(HPROPSHEETPAGE) * MAX_PROPERTY_SHEET_PAGE);
|
memset(hppages, 0x0, sizeof(HPROPSHEETPAGE) * MAX_PROPERTY_SHEET_PAGE);
|
||||||
|
|
||||||
/* Make a copy of path */
|
/* Make a copy of path */
|
||||||
|
@ -129,13 +128,14 @@ SH_ShowPropertiesDialog(LPCWSTR pwszPath, LPCITEMIDLIST pidlFolder, LPCITEMIDLIS
|
||||||
Header.pszCaption = PathFindFileNameW(wszPath);
|
Header.pszCaption = PathFindFileNameW(wszPath);
|
||||||
|
|
||||||
CComPtr<IDataObject> pDataObj;
|
CComPtr<IDataObject> pDataObj;
|
||||||
hr = SHCreateDataObject(pidlFolder, 1, apidl, NULL, IID_IDataObject, (LPVOID *)&pDataObj);
|
HRESULT hr = SHCreateDataObject(pidlFolder, 1, apidl, NULL, IID_IDataObject, (LPVOID *)&pDataObj);
|
||||||
|
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
ATLTRY(pFileDefExt = new CComObject<CFileDefExt>);
|
hr = CComObject<CFileDefExt>::CreateInstance(&pFileDefExt);
|
||||||
if (pFileDefExt)
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
|
pFileDefExt->AddRef(); // CreateInstance returns object with 0 ref count
|
||||||
hr = pFileDefExt->Initialize(pidlFolder, pDataObj, NULL);
|
hr = pFileDefExt->Initialize(pidlFolder, pDataObj, NULL);
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue