- m_messageBitmap = bitmap;
- SetName(name);
- if (parent) parent->AddChild(this);
-
- m_backgroundColour = parent->GetDefaultBackgroundColour() ;
- m_foregroundColour = parent->GetDefaultForegroundColour() ;
-
- if ( id == -1 )
- m_windowId = (int)NewControlId();
- else
- m_windowId = id;
-
- int x = pos.x;
- int y = pos.y;
- int width = size.x;
- int height = size.y;
-
- if ( width < 0 && bitmap.Ok() )
- width = bitmap.GetWidth();
- if ( height < 0 && bitmap.Ok() )
- height = bitmap.GetHeight();
-
- m_windowStyle = style;
-
- // Use an ownerdraw button to produce a static bitmap, since there's
- // no ownerdraw static.
- // TODO: perhaps this should be a static item, with style SS_BITMAP.
- HWND static_item =
- CreateWindowEx(0, "BUTTON", "", BS_OWNERDRAW | WS_TABSTOP | WS_CHILD,
- 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId,
- wxGetInstance(), NULL);
- m_hWnd = (WXHWND) static_item;
-
- // Subclass again for purposes of dialog editing mode
- SubclassWin((WXHWND) static_item);
- SetSize(x, y, width, height);
- return TRUE;
+ WXDWORD msStyle = wxControl::MSWGetStyle(style, exstyle);
+
+#ifdef __WIN32__
+ // what kind of control are we?
+ msStyle |= m_isIcon ? SS_ICON : SS_BITMAP;
+
+ // we use SS_CENTERIMAGE to prevent the control from resizing the bitmap to
+ // fit to its size -- this is unexpected and doesn't happen in other ports
+ msStyle |= SS_CENTERIMAGE;
+#else // Win16
+ msStyle |= BS_OWNERDRAW;
+#endif // Win32/16
+
+ return msStyle;