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