#if defined(__WXWINCE__)
#include <ole2.h>
#include <shellapi.h>
- #if _WIN32_WCE < 400
+ // Standard SDK doesn't have aygshell.dll: see include/wx/msw/wince/libraries.h
+ #if _WIN32_WCE < 400 || !defined(WCE_PLATFORM_STANDARDSDK)
#include <aygshell.h>
#endif
#include "wx/msw/wince/missing.h"
// globals
// ----------------------------------------------------------------------------
-// list of all frames and modeless dialogs
-wxWindowList wxModelessWindows;
-
// the name of the default wxWindows class
#ifdef __WXWINCE__
extern wxChar *wxCanvasClassName;
}
//else: WS_OVERLAPPED is 0 anyhow, so it is on by default
+#ifndef __SMARTPHONE__
// border and caption styles
if ( style & wxRESIZE_BORDER )
msflags |= WS_THICKFRAME;
msflags |= WS_BORDER;
else
msflags |= WS_POPUP;
+#endif
// normally we consider that all windows without caption must be popups,
// but CE is an exception: there windows normally do not have the caption
// Keep this here because it saves recoding this function in wxTinyFrame
if ( style & (wxTINY_CAPTION_VERT | wxTINY_CAPTION_HORIZ) )
msflags |= WS_CAPTION;
-
+
if ( exflags )
{
// there is no taskbar under CE, so omit all this
WXDWORD exflags;
WXDWORD flags = MSWGetCreateWindowFlags(&exflags);
- return MSWCreate(wxCanvasClassName, title, pos, size, flags, exflags);
+#if (defined(_WIN32_WCE) && _WIN32_WCE < 400) || \
+ defined(WIN32_PLATFORM_PSPC) || \
+ defined(__SMARTPHONE__)
+ // Always expand to fit the screen in PocketPC or SmartPhone
+ wxSize sz(wxDefaultSize);
+#else // other (including normal desktop) Windows
+ wxSize sz(size);
+#endif
+
+ return MSWCreate(wxCanvasClassName, title, pos, sz, flags, exflags);
}
bool wxTopLevelWindowMSW::Create(wxWindow *parent,
);
}
+ // Native look is full screen window on Smartphones
+#ifdef __SMARTPHONE__
+ if ( style & wxMAXIMIZE )
+ Maximize();
+#endif
+
return ret;
}
wxTopLevelWindowMSW::~wxTopLevelWindowMSW()
{
- if ( wxModelessWindows.Find(this) )
- wxModelessWindows.DeleteObject(this);
-
// after destroying an owned window, Windows activates the next top level
// window in Z order but it may be different from our owner (to reproduce
// this simply Alt-TAB to another application and back before closing the
return FALSE;
}
-
+#ifndef __WXWINCE__
// update appearance immediately
if ( !::DrawMenuBar(GetHwnd()) )
{
wxLogLastError(_T("DrawMenuBar"));
}
+#endif
#endif // !__WXMICROWIN__
return TRUE;
WPARAM WXUNUSED(wParam),
LPARAM WXUNUSED(lParam))
{
- switch ( message )
+ if ( message == WM_INITDIALOG )
{
- case WM_INITDIALOG:
- // for this message, returning TRUE tells system to set focus to
- // the first control in the dialog box, but as we set the focus
- // ourselves, we return FALSE from here as well, so fall through
-#ifdef __WXWINCE__
- {
- SHINITDLGINFO shidi;
- shidi.dwMask = SHIDIM_FLAGS;
- shidi.dwFlags = SHIDIF_DONEBUTTON |
- SHIDIF_SIZEDLGFULLSCREEN;
- shidi.hDlg = hDlg;
- SHInitDialog( &shidi );
- }
+ // under CE, add a "Ok" button in the dialog title bar and make it full
+ // screen
+ //
+ // VZ: we should probably allow for overriding this, e.g. by including
+ // MAXIMIZED flag in the dialog style by default and doing this
+ // only if it is present...
+
+ // Standard SDK doesn't have aygshell.dll: see
+ // include/wx/msw/wince/libraries.h
+#if defined(__WXWINCE__) && !defined(WCE_PLATFORM_STANDARDSDK)
+ SHINITDLGINFO shidi;
+ shidi.dwMask = SHIDIM_FLAGS;
+ shidi.dwFlags = SHIDIF_DONEBUTTON |
+ SHIDIF_SIZEDLGFULLSCREEN;
+ shidi.hDlg = hDlg;
+ SHInitDialog( &shidi );
+#else // no SHInitDialog()
+ wxUnusedVar(hDlg);
#endif
-
- default:
- // for all the other ones, FALSE means that we didn't process the
- // message
- return FALSE;
}
+
+ // for almost all messages, returning FALSE means that we didn't process
+ // the message
+ //
+ // for WM_INITDIALOG, returning TRUE tells system to set focus to
+ // the first control in the dialog box, but as we set the focus
+ // ourselves, we return FALSE for it as well
+ return FALSE;
}
// ============================================================================