X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/434005ca85ce8b4e08092add395f26147004c298..19e30148e18cc99296b26503c155e5cef59045f4:/src/msw/toplevel.cpp?ds=sidebyside diff --git a/src/msw/toplevel.cpp b/src/msw/toplevel.cpp index 0c5ef7d3b3..8283ec20d6 100644 --- a/src/msw/toplevel.cpp +++ b/src/msw/toplevel.cpp @@ -39,6 +39,14 @@ #include "wx/msw/private.h" +#ifndef ICON_BIG + #define ICON_BIG 1 +#endif + +#ifndef ICON_SMALL + #define ICON_SMALL 0 +#endif + // ---------------------------------------------------------------------------- // stubs for missing functions under MicroWindows // ---------------------------------------------------------------------------- @@ -64,21 +72,25 @@ extern const wxChar *wxCanvasClassName; // wxTopLevelWindowMSW implementation // ============================================================================ +// ---------------------------------------------------------------------------- +// wxDialog helpers +// ---------------------------------------------------------------------------- + // Dialog window proc LONG APIENTRY _EXPORT -wxDlgProc(HWND WXUNUSED(hWnd), UINT message, WPARAM WXUNUSED(wParam), LPARAM WXUNUSED(lParam)) +wxDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { - if ( message == WM_INITDIALOG ) + switch ( message ) { - // for this message, returning TRUE tells system to set focus to the - // first control in the dialog box - return TRUE; - } - else - { - // for all the other ones, FALSE means that we didn't process the - // message - return FALSE; + case WM_INITDIALOG: + // for this message, returning TRUE tells system to set focus to the + // first control in the dialog box + return TRUE; + + default: + // for all the other ones, FALSE means that we didn't process the + // message + return FALSE; } } @@ -584,14 +596,26 @@ bool wxTopLevelWindowMSW::ShowFullScreen(bool show, long style) void wxTopLevelWindowMSW::SetIcon(const wxIcon& icon) { - // this sets m_icon - wxTopLevelWindowBase::SetIcon(icon); + SetIcons( wxIconBundle( icon ) ); +} + +void wxTopLevelWindowMSW::SetIcons(const wxIconBundle& icons) +{ + wxTopLevelWindowBase::SetIcons(icons); #if defined(__WIN95__) && !defined(__WXMICROWIN__) - if ( m_icon.Ok() ) + const wxIcon& sml = icons.GetIcon( wxSize( 16, 16 ) ); + if( sml.Ok() && sml.GetWidth() == 16 && sml.GetHeight() == 16 ) + { + ::SendMessage( GetHwndOf( this ), WM_SETICON, ICON_SMALL, + (LPARAM)GetHiconOf(sml) ); + } + + const wxIcon& big = icons.GetIcon( wxSize( 32, 32 ) ); + if( big.Ok() && big.GetWidth() == 32 && big.GetHeight() == 32 ) { - ::SendMessage(GetHwnd(), WM_SETICON, - (WPARAM)TRUE, (LPARAM)GetHiconOf(m_icon)); + ::SendMessage( GetHwndOf( this ), WM_SETICON, ICON_BIG, + (LPARAM)GetHiconOf(big) ); } #endif // __WIN95__ }