mirror of
https://github.com/reactos/reactos.git
synced 2025-04-22 13:10:39 +00:00
[BROWSEUI] Don't leak the image lists created by CAddressBand and CToolsBand.
svn path=/trunk/; revision=74441
This commit is contained in:
parent
4bc905e4fd
commit
cb488db9b7
3 changed files with 31 additions and 37 deletions
|
@ -205,6 +205,12 @@ HRESULT STDMETHODCALLTYPE CAddressBand::CloseDW(DWORD dwReserved)
|
||||||
if (fAddressEditBox) fAddressEditBox.Release();
|
if (fAddressEditBox) fAddressEditBox.Release();
|
||||||
if (fSite) fSite.Release();
|
if (fSite) fSite.Release();
|
||||||
|
|
||||||
|
if (m_himlNormal)
|
||||||
|
ImageList_Destroy(m_himlNormal);
|
||||||
|
|
||||||
|
if (m_himlHot)
|
||||||
|
ImageList_Destroy(m_himlHot);
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -521,15 +527,12 @@ LRESULT CAddressBand::OnWindowPosChanging(UINT uMsg, WPARAM wParam, LPARAM lPara
|
||||||
void CAddressBand::CreateGoButton()
|
void CAddressBand::CreateGoButton()
|
||||||
{
|
{
|
||||||
const TBBUTTON buttonInfo [] = { { 0, 1, TBSTATE_ENABLED, 0 } };
|
const TBBUTTON buttonInfo [] = { { 0, 1, TBSTATE_ENABLED, 0 } };
|
||||||
HIMAGELIST normalImagelist;
|
|
||||||
HIMAGELIST hotImageList;
|
|
||||||
HINSTANCE shellInstance;
|
HINSTANCE shellInstance;
|
||||||
|
|
||||||
|
|
||||||
shellInstance = GetModuleHandle(_T("shell32.dll"));
|
shellInstance = GetModuleHandle(_T("shell32.dll"));
|
||||||
normalImagelist = ImageList_LoadImageW(shellInstance, MAKEINTRESOURCE(IDB_GOBUTTON_NORMAL),
|
m_himlNormal = ImageList_LoadImageW(shellInstance, MAKEINTRESOURCE(IDB_GOBUTTON_NORMAL),
|
||||||
20, 0, RGB(255, 0, 255), IMAGE_BITMAP, LR_CREATEDIBSECTION);
|
20, 0, RGB(255, 0, 255), IMAGE_BITMAP, LR_CREATEDIBSECTION);
|
||||||
hotImageList = ImageList_LoadImageW(shellInstance, MAKEINTRESOURCE(IDB_GOBUTTON_HOT),
|
m_himlHot = ImageList_LoadImageW(shellInstance, MAKEINTRESOURCE(IDB_GOBUTTON_HOT),
|
||||||
20, 0, RGB(255, 0, 255), IMAGE_BITMAP, LR_CREATEDIBSECTION);
|
20, 0, RGB(255, 0, 255), IMAGE_BITMAP, LR_CREATEDIBSECTION);
|
||||||
|
|
||||||
fGoButton = CreateWindowEx(WS_EX_TOOLWINDOW, TOOLBARCLASSNAMEW, 0, WS_CHILD | WS_CLIPSIBLINGS |
|
fGoButton = CreateWindowEx(WS_EX_TOOLWINDOW, TOOLBARCLASSNAMEW, 0, WS_CHILD | WS_CLIPSIBLINGS |
|
||||||
|
@ -538,10 +541,10 @@ void CAddressBand::CreateGoButton()
|
||||||
0, 0, 0, 0, m_hWnd, NULL, _AtlBaseModule.GetModuleInstance(), NULL);
|
0, 0, 0, 0, m_hWnd, NULL, _AtlBaseModule.GetModuleInstance(), NULL);
|
||||||
SendMessage(fGoButton, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
|
SendMessage(fGoButton, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
|
||||||
SendMessage(fGoButton, TB_SETMAXTEXTROWS, 1, 0);
|
SendMessage(fGoButton, TB_SETMAXTEXTROWS, 1, 0);
|
||||||
if (normalImagelist)
|
if (m_himlNormal)
|
||||||
SendMessage(fGoButton, TB_SETIMAGELIST, 0, reinterpret_cast<LPARAM>(normalImagelist));
|
SendMessage(fGoButton, TB_SETIMAGELIST, 0, reinterpret_cast<LPARAM>(m_himlNormal));
|
||||||
if (hotImageList)
|
if (m_himlHot)
|
||||||
SendMessage(fGoButton, TB_SETHOTIMAGELIST, 0, reinterpret_cast<LPARAM>(hotImageList));
|
SendMessage(fGoButton, TB_SETHOTIMAGELIST, 0, reinterpret_cast<LPARAM>(m_himlHot));
|
||||||
SendMessage(fGoButton, TB_ADDSTRINGW,
|
SendMessage(fGoButton, TB_ADDSTRINGW,
|
||||||
reinterpret_cast<WPARAM>(_AtlBaseModule.GetResourceInstance()), IDS_GOBUTTONLABEL);
|
reinterpret_cast<WPARAM>(_AtlBaseModule.GetResourceInstance()), IDS_GOBUTTONLABEL);
|
||||||
SendMessage(fGoButton, TB_ADDBUTTONSW, 1, (LPARAM) &buttonInfo);
|
SendMessage(fGoButton, TB_ADDBUTTONSW, 1, (LPARAM) &buttonInfo);
|
||||||
|
|
|
@ -41,6 +41,9 @@ private:
|
||||||
HWND fGoButton;
|
HWND fGoButton;
|
||||||
HWND fComboBox;
|
HWND fComboBox;
|
||||||
bool fGoButtonShown;
|
bool fGoButtonShown;
|
||||||
|
HIMAGELIST m_himlNormal;
|
||||||
|
HIMAGELIST m_himlHot;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CAddressBand();
|
CAddressBand();
|
||||||
virtual ~CAddressBand();
|
virtual ~CAddressBand();
|
||||||
|
|
|
@ -40,6 +40,8 @@ private:
|
||||||
CComPtr<IDockingWindowSite> fDockSite;
|
CComPtr<IDockingWindowSite> fDockSite;
|
||||||
GUID fExecCommandCategory;
|
GUID fExecCommandCategory;
|
||||||
CComPtr<IOleCommandTarget> fExecCommandTarget;
|
CComPtr<IOleCommandTarget> fExecCommandTarget;
|
||||||
|
HIMAGELIST m_himlNormal;
|
||||||
|
HIMAGELIST m_himlHot;
|
||||||
public:
|
public:
|
||||||
CToolsBand();
|
CToolsBand();
|
||||||
virtual ~CToolsBand();
|
virtual ~CToolsBand();
|
||||||
|
@ -294,36 +296,16 @@ HRESULT STDMETHODCALLTYPE CToolsBand::SetSite(IUnknown* pUnkSite){
|
||||||
SendMessage(TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_HIDECLIPPEDBUTTONS | TBSTYLE_EX_MIXEDBUTTONS | TBSTYLE_EX_DRAWDDARROWS);
|
SendMessage(TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_HIDECLIPPEDBUTTONS | TBSTYLE_EX_MIXEDBUTTONS | TBSTYLE_EX_DRAWDDARROWS);
|
||||||
|
|
||||||
HINSTANCE shell32Instance = GetModuleHandle(_T("shell32.dll"));
|
HINSTANCE shell32Instance = GetModuleHandle(_T("shell32.dll"));
|
||||||
HBITMAP imgNormal = reinterpret_cast<HBITMAP>(
|
m_himlNormal = ImageList_LoadImageW(shell32Instance, MAKEINTRESOURCE(214),
|
||||||
LoadImage(shell32Instance, MAKEINTRESOURCE(214),
|
0, 0, RGB(255, 0, 255), IMAGE_BITMAP, LR_DEFAULTSIZE | LR_CREATEDIBSECTION);
|
||||||
IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_CREATEDIBSECTION));
|
|
||||||
|
|
||||||
HBITMAP imgHot = reinterpret_cast<HBITMAP>(
|
m_himlHot = ImageList_LoadImageW(shell32Instance, MAKEINTRESOURCE(215),
|
||||||
LoadImage(shell32Instance, MAKEINTRESOURCE(215),
|
0, 0, RGB(255, 0, 255), IMAGE_BITMAP, LR_DEFAULTSIZE | LR_CREATEDIBSECTION);
|
||||||
IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_CREATEDIBSECTION));
|
|
||||||
|
|
||||||
if (imgNormal && imgHot)
|
|
||||||
{
|
|
||||||
BITMAP bitmapInfo;
|
|
||||||
GetObjectW(imgNormal, sizeof(bitmapInfo), &bitmapInfo);
|
|
||||||
HIMAGELIST himlNormal = ImageList_Create(bitmapInfo.bmHeight, bitmapInfo.bmHeight, ILC_COLOR32, 4, 4);
|
|
||||||
ImageList_Add(himlNormal, imgNormal, NULL);
|
|
||||||
|
|
||||||
GetObjectW(imgHot, sizeof(bitmapInfo), &bitmapInfo);
|
|
||||||
HIMAGELIST himlHot = ImageList_Create(bitmapInfo.bmHeight, bitmapInfo.bmHeight, ILC_COLOR32, 4, 4);
|
|
||||||
ImageList_Add(himlHot, imgHot, NULL);
|
|
||||||
|
|
||||||
SendMessage(TB_SETIMAGELIST, 0, (LPARAM) himlNormal);
|
|
||||||
SendMessage(TB_SETHOTIMAGELIST, 0, (LPARAM) himlHot);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
SendMessage(TB_SETIMAGELIST, 0, (LPARAM) m_himlNormal);
|
||||||
|
SendMessage(TB_SETHOTIMAGELIST, 0, (LPARAM) m_himlHot);
|
||||||
SendMessage(TB_ADDBUTTONSW, numShownButtons, (LPARAM)&tbButtonsAdd);
|
SendMessage(TB_ADDBUTTONSW, numShownButtons, (LPARAM)&tbButtonsAdd);
|
||||||
|
|
||||||
if (imgNormal)
|
|
||||||
DeleteObject(imgNormal);
|
|
||||||
if (imgHot)
|
|
||||||
DeleteObject(imgHot);
|
|
||||||
|
|
||||||
return hResult;
|
return hResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -344,7 +326,6 @@ HRESULT STDMETHODCALLTYPE CToolsBand::GetWindow(HWND *lphwnd)
|
||||||
|
|
||||||
HRESULT STDMETHODCALLTYPE CToolsBand::ContextSensitiveHelp(BOOL fEnterMode)
|
HRESULT STDMETHODCALLTYPE CToolsBand::ContextSensitiveHelp(BOOL fEnterMode)
|
||||||
{
|
{
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -357,7 +338,14 @@ HRESULT STDMETHODCALLTYPE CToolsBand::CloseDW(DWORD dwReserved)
|
||||||
|
|
||||||
m_hWnd = NULL;
|
m_hWnd = NULL;
|
||||||
|
|
||||||
if (fDockSite) fDockSite.Release();
|
if (fDockSite)
|
||||||
|
fDockSite.Release();
|
||||||
|
|
||||||
|
if (m_himlNormal)
|
||||||
|
ImageList_Destroy(m_himlNormal);
|
||||||
|
|
||||||
|
if (m_himlHot)
|
||||||
|
ImageList_Destroy(m_himlHot);
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue