don't hardcode 16/32 as sizes for small/normal icons (fixes bug 1862812)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50999 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2008-01-03 01:13:44 +00:00
parent e81fa3850e
commit b9e6623377
3 changed files with 22 additions and 15 deletions

View File

@ -312,6 +312,7 @@ All (GUI):
wxMSW:
- Fix rare bug with messages delivered to wrong wxSocket (Tim Kosse)
- Fix setting icons when they have non-default (16*16 and 32*32) sizes
2.8.7

View File

@ -142,6 +142,11 @@ protected:
virtual void DoGetSize(int *width, int *height) const;
#endif // __WXWINCE__
// helper of SetIcons(): calls gets the icon with the size specified by the
// given system metrics (SM_C{X|Y}[SM]ICON) from the bundle and sets it
// using WM_SETICON with the specified wParam (ICOM_SMALL or ICON_BIG)
void DoSelectAndSetIcon(const wxIconBundle& icons, int smX, int smY, int i);
// is the window currently iconized?
bool m_iconized;

View File

@ -965,25 +965,26 @@ wxString wxTopLevelWindowMSW::GetTitle() const
return GetLabel();
}
void wxTopLevelWindowMSW::DoSelectAndSetIcon(const wxIconBundle& icons,
int smX,
int smY,
int i)
{
const wxSize size(::GetSystemMetrics(smX), ::GetSystemMetrics(smY));
const wxIcon icon = icons.GetIconOfExactSize(size);
if ( icon.Ok() )
{
::SendMessage(GetHwnd(), WM_SETICON, i, (LPARAM)GetHiconOf(icon));
}
}
void wxTopLevelWindowMSW::SetIcons(const wxIconBundle& icons)
{
wxTopLevelWindowBase::SetIcons(icons);
#if !defined(__WXMICROWIN__)
const wxIcon& sml = icons.GetIconOfExactSize(16);
if( sml.Ok() )
{
::SendMessage( GetHwndOf( this ), WM_SETICON, ICON_SMALL,
(LPARAM)GetHiconOf(sml) );
}
const wxIcon& big = icons.GetIconOfExactSize(32);
if( big.Ok() )
{
::SendMessage( GetHwndOf( this ), WM_SETICON, ICON_BIG,
(LPARAM)GetHiconOf(big) );
}
#endif // !__WXMICROWIN__
DoSelectAndSetIcon(icons, SM_CXSMICON, SM_CYSMICON, ICON_SMALL);
DoSelectAndSetIcon(icons, SM_CXICON, SM_CYICON, ICON_BIG);
}
bool wxTopLevelWindowMSW::EnableCloseButton(bool enable)