- wxPanel *p = new wxPanel(this);
- wxStaticText *s = new wxStaticText(p, -1, message, wxPoint(20, 20), wxSize(360, 40), wxALIGN_CENTER);
+ wxPanel *panel = new wxPanel( this );
+ wxStaticText *text = new wxStaticText(panel, wxID_ANY, message);
+
+ panel->SetCursor(*wxHOURGLASS_CURSOR);
+ text->SetCursor(*wxHOURGLASS_CURSOR);
+
+ // make the frame of at least the standard size (400*80) but big enough
+ // for the text we show
+ wxSize sizeText = text->GetBestSize();
+#ifdef __WXPM__
+ int nX = 0;
+ int nY = 0;
+ int nWidth = 0;
+ int nHeight = 0;
+ int nParentHeight = parent->GetClientSize().y;
+ int nParentWidth = parent->GetClientSize().x;
+ int nColor;
+
+ SetBackgroundColour("WHITE");
+ nColor = (LONG)GetBackgroundColour().GetPixel();
+
+ ::WinSetPresParam( GetHwnd()
+ ,PP_BACKGROUNDCOLOR
+ ,sizeof(LONG)
+ ,(PVOID)&nColor
+ );
+ panel->SetBackgroundColour("WHITE");
+ nColor = (LONG)panel->GetBackgroundColour().GetPixel();
+
+ ::WinSetPresParam( GetHwndOf(panel)
+ ,PP_BACKGROUNDCOLOR
+ ,sizeof(LONG)
+ ,(PVOID)&nColor
+ );
+ nWidth = wxMax(sizeText.x, 340) + 60;
+ nHeight = wxMax(sizeText.y, 40) + 40;
+ nX = (nParentWidth - nWidth) / 2;
+ nY = (nParentHeight / 2) - (nHeight / 2);
+ nY = nParentHeight - (nY + nHeight);
+ ::WinSetWindowPos( m_hFrame
+ ,HWND_TOP
+ ,nX
+ ,nY
+ ,nWidth
+ ,nHeight
+ ,SWP_SIZE | SWP_MOVE | SWP_ACTIVATE
+ );
+ text->SetBackgroundColour("WHITE");
+ nColor = (LONG)text->GetBackgroundColour().GetPixel();
+
+ ::WinSetPresParam( GetHwndOf(text)
+ ,PP_BACKGROUNDCOLOR
+ ,sizeof(LONG)
+ ,(PVOID)&nColor
+ );
+ text->Center(wxBOTH);
+#else
+ SetClientSize(wxMax(sizeText.x, 340) + 60, wxMax(sizeText.y, 40) + 40);
+
+ // need to size the panel correctly first so that text->Centre() works
+ panel->SetSize(GetClientSize());
+
+ text->Centre(wxBOTH);