- // all controls have these childs (wxWindows creates all controls visible
- // by default)
- style |= WS_CHILD | WS_VISIBLE;
+ // all controls should have this style
+ style |= WS_CHILD;
+
+ // create the control visible if it's currently shown for wxWidgets
+ if ( m_isShown )
+ {
+ style |= WS_VISIBLE;
+ }
+
+ // choose the position for the control: we have a problem with default size
+ // here as we can't calculate the best size before the control exists
+ // (DoGetBestSize() may need to use m_hWnd), so just choose the minimal
+ // possible but non 0 size because 0 window width/height result in problems
+ // elsewhere
+ int x = pos.x == wxDefaultCoord ? 0 : pos.x,
+ y = pos.y == wxDefaultCoord ? 0 : pos.y,
+ w = size.x == wxDefaultCoord ? 1 : size.x,
+ h = size.y == wxDefaultCoord ? 1 : size.y;
+
+ // ... and adjust it to account for a possible parent frames toolbar
+ AdjustForParentClientOrigin(x, y);