// WS_POPUP in a few cases just to avoid having caption/border which we
// don't want
-#if !(defined(__SMARTPHONE__) && defined(__WXWINCE__))
// border and caption styles
- if ( style & wxRESIZE_BORDER )
+ if ( ( style & wxRESIZE_BORDER ) && !IsAlwaysMaximized())
msflags |= WS_THICKFRAME;
else if ( exflags && ((style & wxBORDER_DOUBLE) || (style & wxBORDER_RAISED)) )
*exflags |= WS_EX_DLGMODALFRAME;
#ifndef __POCKETPC__
else
msflags |= WS_POPUP;
-#endif
#endif
// normally we consider that all windows without a caption must be popups,
if ( style & wxMINIMIZE )
msflags |= WS_MINIMIZE;
-#if !defined(__POCKETPC__)
if ( style & wxMAXIMIZE )
msflags |= WS_MAXIMIZE;
-#endif
// Keep this here because it saves recoding this function in wxTinyFrame
if ( style & (wxTINY_CAPTION_VERT | wxTINY_CAPTION_HORIZ) )
#if defined(__SMARTPHONE__) || defined(__POCKETPC__)
bool wxTopLevelWindowMSW::HandleSettingChange(WXWPARAM wParam, WXLPARAM lParam)
{
- SHACTIVATEINFO* info = (SHACTIVATEINFO*) m_activateInfo;
- if (!info) return false;
- return SHHandleWMSettingChange(GetHwnd(), wParam, lParam, info) == TRUE;
+ SHACTIVATEINFO *info = (SHACTIVATEINFO*) m_activateInfo;
+ if ( info )
+ {
+ SHHandleWMSettingChange(GetHwnd(), wParam, lParam, info);
+ }
+
+ return wxWindowMSW::HandleSettingChange(wParam, lParam);
}
#endif
WXLRESULT rc = 0;
bool processed = false;
+#if defined(__SMARTPHONE__) || defined(__POCKETPC__)
switch ( message )
{
-#if defined(__SMARTPHONE__) || defined(__POCKETPC__)
case WM_ACTIVATE:
{
SHACTIVATEINFO* info = (SHACTIVATEINFO*) m_activateInfo;
break;
}
- case WM_SETTINGCHANGE:
- {
- processed = HandleSettingChange(wParam,lParam);
- break;
- }
case WM_HIBERNATE:
{
if (wxTheApp)
}
break;
}
-#endif
}
+#endif
if ( !processed )
rc = wxTopLevelWindowBase::MSWWindowProc(message, wParam, lParam);
WXDWORD exflags;
WXDWORD flags = MSWGetCreateWindowFlags(&exflags);
-#if !defined(__HANDHELDPC__) && ((defined(_WIN32_WCE) && _WIN32_WCE < 400) || \
- defined(__POCKETPC__) || \
- defined(__SMARTPHONE__))
- // Always expand to fit the screen in PocketPC or SmartPhone
- wxSize sz(wxDefaultSize);
- wxUnusedVar(size);
-#else // other (including normal desktop) Windows
- wxSize sz(size);
-#endif
+ wxSize sz;
+
+ if (IsAlwaysMaximized())
+ {
+ sz = wxDefaultSize;
+ }
+ else
+ {
+ sz = size;
+ }
bool result = MSWCreate(wxCanvasClassName, title, pos, sz, flags, exflags);
// Note: if we include PocketPC in this test, dialogs can fail to show up,
// for example the text entry dialog in the dialogs sample. Problem with Maximise()?
#if defined(__WXWINCE__) && (defined(__SMARTPHONE__) || defined(__WINCE_STANDARDSDK__))
- if ( style & wxMAXIMIZE )
+ if ( ( style & wxMAXIMIZE ) || IsAlwaysMaximized() )
{
this->Maximize();
}
}
else // hidden
{
- // we can't maximize the hidden frame because it shows it as well, so
- // just remember that we should do it later in this case
+ // we can't maximize the hidden frame because it shows it as well,
+ // so just remember that we should do it later in this case
m_maximizeOnShow = maximize;
// after calling Maximize() the client code expects to get the frame
// "real" size and doesn't want to know that, because of implementation
// details, the frame isn't really maximized yet but will be only once
// it's shown, so return our size as it will be then in this case
-
- // we don't know which display we're on yet so use the default one
- SetSize(wxGetClientDisplayRect().GetSize());
+ if ( maximize )
+ {
+ // unfortunately we don't know which display we're on yet so we
+ // have to use the default one
+ SetSize(wxGetClientDisplayRect().GetSize());
+ }
+ //else: can't do anything in this case, we don't have the old size
}
}
bool wxTopLevelWindowMSW::IsMaximized() const
{
-#ifdef __WXWINCE__
- return false;
-#else
- return m_maximizeOnShow || ::IsZoomed(GetHwnd()) != 0;
+ return IsAlwaysMaximized() ||
+#if !defined(__SMARTPHONE__) && !defined(__POCKETPC__)
+ (::IsZoomed(GetHwnd()) != 0) ||
#endif
+ m_maximizeOnShow;
}
void wxTopLevelWindowMSW::Iconize(bool iconize)
#ifdef __WXWINCE__
return false;
#else
- // also update the current state
- ((wxTopLevelWindowMSW *)this)->m_iconized = ::IsIconic(GetHwnd()) != 0;
-
- return m_iconized;
+ // don't use m_iconized, it may be briefly out of sync with the real state
+ // as it's only modified when we receive a WM_SIZE and we could be called
+ // from an event handler from one of the messages we receive before it,
+ // such as WM_MOVE
+ return ::IsIconic(GetHwnd()) != 0;
#endif
}
{
wxTopLevelWindowBase::SetIcons(icons);
-#if defined(__WIN95__) && !defined(__WXMICROWIN__)
+#if !defined(__WXMICROWIN__)
const wxIcon& sml = icons.GetIcon( wxSize( 16, 16 ) );
if( sml.Ok() && sml.GetWidth() == 16 && sml.GetHeight() == 16 )
{
::SendMessage( GetHwndOf( this ), WM_SETICON, ICON_BIG,
(LPARAM)GetHiconOf(big) );
}
-#endif // __WIN95__
+#endif // !__WXMICROWIN__
}
bool wxTopLevelWindowMSW::EnableCloseButton(bool enable)
LONG APIENTRY _EXPORT
wxDlgProc(HWND hDlg,
UINT message,
- WPARAM wParam,
- LPARAM lParam)
+ WPARAM WXUNUSED(wParam),
+ LPARAM WXUNUSED(lParam))
{
switch ( message )
{
// ourselves, we return FALSE for it as well
return FALSE;
}
-
- case WM_SETTINGCHANGE:
- {
-#if defined(__SMARTPHONE__) || defined(__POCKETPC__)
- wxTopLevelWindow *tlw = wxDynamicCast(wxGetWindowFromHWND(hDlg), wxTopLevelWindow);
- if(tlw) return tlw->HandleSettingChange(wParam,lParam) ? TRUE : FALSE;
-#else
- wxUnusedVar(wParam);
- wxUnusedVar(lParam);
-#endif
- break;
- }
}
// for almost all messages, returning FALSE means that we didn't process