Remove MicroWindows support.
MicroWindows (aka Nano-X) support hasn’t been updated since 2010 and last work for it in wxWidgets happened more than 10 years ago.
This commit is contained in:
44
configure
vendored
44
configure
vendored
@@ -1084,7 +1084,6 @@ with_mac
|
||||
with_wine
|
||||
with_msw
|
||||
with_directfb
|
||||
with_microwin
|
||||
with_x11
|
||||
with_qt
|
||||
enable_nanox
|
||||
@@ -2309,7 +2308,6 @@ Optional Packages:
|
||||
--with-wine use Wine
|
||||
--with-msw use MS-Windows
|
||||
--with-directfb use DirectFB
|
||||
--with-microwin use MicroWindows
|
||||
--with-x11 use X11
|
||||
--with-qt use Qt
|
||||
--with-libpng use libpng (PNG image format)
|
||||
@@ -3823,13 +3821,12 @@ USE_ALPHA=
|
||||
|
||||
NEEDS_D_REENTRANT_FOR_R_FUNCS=0
|
||||
|
||||
ALL_TOOLKITS="GTK OSX_CARBON OSX_COCOA OSX_IPHONE MICROWIN MOTIF MSW X11 DFB QT"
|
||||
ALL_TOOLKITS="GTK OSX_CARBON OSX_COCOA OSX_IPHONE MOTIF MSW X11 DFB QT"
|
||||
|
||||
DEFAULT_wxUSE_GTK=0
|
||||
DEFAULT_wxUSE_OSX_CARBON=0
|
||||
DEFAULT_wxUSE_OSX_COCOA=0
|
||||
DEFAULT_wxUSE_OSX_IPHONE=0
|
||||
DEFAULT_wxUSE_MICROWIN=0
|
||||
DEFAULT_wxUSE_MOTIF=0
|
||||
DEFAULT_wxUSE_MSW=0
|
||||
DEFAULT_wxUSE_X11=0
|
||||
@@ -3840,7 +3837,6 @@ DEFAULT_DEFAULT_wxUSE_GTK=0
|
||||
DEFAULT_DEFAULT_wxUSE_OSX_CARBON=0
|
||||
DEFAULT_DEFAULT_wxUSE_OSX_COCOA=0
|
||||
DEFAULT_DEFAULT_wxUSE_OSX_IPHONE=0
|
||||
DEFAULT_DEFAULT_wxUSE_MICROWIN=0
|
||||
DEFAULT_DEFAULT_wxUSE_MOTIF=0
|
||||
DEFAULT_DEFAULT_wxUSE_MSW=0
|
||||
DEFAULT_DEFAULT_wxUSE_X11=0
|
||||
@@ -4550,12 +4546,6 @@ if test "${with_directfb+set}" = set; then :
|
||||
fi
|
||||
|
||||
|
||||
# Check whether --with-microwin was given.
|
||||
if test "${with_microwin+set}" = set; then :
|
||||
withval=$with_microwin; wxUSE_MICROWIN="$withval" CACHE_MICROWIN=1 TOOLKIT_GIVEN=1
|
||||
fi
|
||||
|
||||
|
||||
# Check whether --with-x11 was given.
|
||||
if test "${with_x11+set}" = set; then :
|
||||
withval=$with_x11; wxUSE_X11="$withval" wxUSE_UNIVERSAL="yes" CACHE_X11=1 TOOLKIT_GIVEN=1
|
||||
@@ -4702,7 +4692,7 @@ if test "$wxUSE_GUI" = "yes"; then
|
||||
|
||||
NUM_TOOLKITS=`expr ${wxUSE_GTK:-0} + ${wxUSE_OSX_CARBON:-0} \
|
||||
+ ${wxUSE_OSX_COCOA:-0} + ${wxUSE_OSX_IPHONE:-0} + ${wxUSE_DFB:-0} \
|
||||
+ ${wxUSE_MICROWIN:-0} + ${wxUSE_MOTIF:-0} + ${wxUSE_MSW:-0} \
|
||||
+ ${wxUSE_MOTIF:-0} + ${wxUSE_MSW:-0} \
|
||||
+ ${wxUSE_X11:-0} + ${wxUSE_QT:-0}`
|
||||
|
||||
|
||||
@@ -24735,36 +24725,6 @@ $as_echo "yes" >&6; }
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "$wxUSE_MICROWIN" = 1; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MicroWindows" >&5
|
||||
$as_echo_n "checking for MicroWindows... " >&6; }
|
||||
if test "x$MICROWINDOWS" = x ; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
|
||||
$as_echo "not found" >&6; }
|
||||
as_fn_error $? "Cannot find MicroWindows library. Make sure MICROWINDOWS is set." "$LINENO" 5
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MICROWINDOWS" >&5
|
||||
$as_echo "$MICROWINDOWS" >&6; }
|
||||
fi
|
||||
|
||||
if test -f $MICROWINDOWS/lib/libmwin.a; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: MicroWindows' libraries found." >&5
|
||||
$as_echo "MicroWindows' libraries found." >&6; }
|
||||
else
|
||||
as_fn_error $? "Cannot find MicroWindows libraries, make sure they are compiled." "$LINENO" 5
|
||||
fi
|
||||
|
||||
TOOLKIT_INCLUDE="-I$MICROWINDOWS/include"
|
||||
GUI_TK_LIBRARY="-L$MICROWINDOWS/lib -lmwin -lmwengine -mwfonts -mwdrivers -mwinlib"
|
||||
|
||||
wxUSE_UNIVERSAL="yes"
|
||||
|
||||
TOOLKIT=MICROWIN
|
||||
GUIDIST=MICROWIN_DIST
|
||||
|
||||
TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__WXMSW__ -D__WIN95__ -D__WIN32__ -DMWIN -DMICROWIN_NOCONTROLS -DMICROWIN_TODO=1"
|
||||
fi
|
||||
|
||||
if test "$wxUSE_X11" = 1 -o "$wxUSE_MOTIF" = 1; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5
|
||||
$as_echo_n "checking for X... " >&6; }
|
||||
|
33
configure.in
33
configure.in
@@ -99,7 +99,7 @@ NEEDS_D_REENTRANT_FOR_R_FUNCS=0
|
||||
dnl the list of all available toolkits
|
||||
dnl
|
||||
dnl update NUM_TOOLKITS calculation below when adding a new toolkit here!
|
||||
ALL_TOOLKITS="GTK OSX_CARBON OSX_COCOA OSX_IPHONE MICROWIN MOTIF MSW X11 DFB QT"
|
||||
ALL_TOOLKITS="GTK OSX_CARBON OSX_COCOA OSX_IPHONE MOTIF MSW X11 DFB QT"
|
||||
|
||||
dnl NB: these wxUSE_XXX constants have value of 0 or 1 unlike all the other ones
|
||||
dnl which are either yes or no
|
||||
@@ -107,7 +107,6 @@ DEFAULT_wxUSE_GTK=0
|
||||
DEFAULT_wxUSE_OSX_CARBON=0
|
||||
DEFAULT_wxUSE_OSX_COCOA=0
|
||||
DEFAULT_wxUSE_OSX_IPHONE=0
|
||||
DEFAULT_wxUSE_MICROWIN=0
|
||||
DEFAULT_wxUSE_MOTIF=0
|
||||
DEFAULT_wxUSE_MSW=0
|
||||
DEFAULT_wxUSE_X11=0
|
||||
@@ -121,7 +120,6 @@ DEFAULT_DEFAULT_wxUSE_GTK=0
|
||||
DEFAULT_DEFAULT_wxUSE_OSX_CARBON=0
|
||||
DEFAULT_DEFAULT_wxUSE_OSX_COCOA=0
|
||||
DEFAULT_DEFAULT_wxUSE_OSX_IPHONE=0
|
||||
DEFAULT_DEFAULT_wxUSE_MICROWIN=0
|
||||
DEFAULT_DEFAULT_wxUSE_MOTIF=0
|
||||
DEFAULT_DEFAULT_wxUSE_MSW=0
|
||||
DEFAULT_DEFAULT_wxUSE_X11=0
|
||||
@@ -433,7 +431,6 @@ AC_ARG_WITH(mac, [ --with-mac same as --with-osx], [wxUS
|
||||
AC_ARG_WITH(wine, [ --with-wine use Wine], [wxUSE_WINE="$withval" CACHE_WINE=1])
|
||||
AC_ARG_WITH(msw, [ --with-msw use MS-Windows], [wxUSE_MSW="$withval" CACHE_MSW=1 TOOLKIT_GIVEN=1])
|
||||
AC_ARG_WITH(directfb, [ --with-directfb use DirectFB], [wxUSE_DFB="$withval" wxUSE_UNIVERSAL="yes" CACHE_DFB=1 TOOLKIT_GIVEN=1])
|
||||
AC_ARG_WITH(microwin, [ --with-microwin use MicroWindows], [wxUSE_MICROWIN="$withval" CACHE_MICROWIN=1 TOOLKIT_GIVEN=1])
|
||||
AC_ARG_WITH(x11, [ --with-x11 use X11], [wxUSE_X11="$withval" wxUSE_UNIVERSAL="yes" CACHE_X11=1 TOOLKIT_GIVEN=1])
|
||||
AC_ARG_WITH(qt, [ --with-qt use Qt], [wxUSE_QT="$withval" CACHE_QT=1 TOOLKIT_GIVEN=1])
|
||||
WX_ARG_ENABLE(nanox, [ --enable-nanox use NanoX], wxUSE_NANOX)
|
||||
@@ -490,7 +487,7 @@ if test "$wxUSE_GUI" = "yes"; then
|
||||
dnl this? what about using ALL_TOOLKITS? TODO)
|
||||
NUM_TOOLKITS=`expr ${wxUSE_GTK:-0} + ${wxUSE_OSX_CARBON:-0} \
|
||||
+ ${wxUSE_OSX_COCOA:-0} + ${wxUSE_OSX_IPHONE:-0} + ${wxUSE_DFB:-0} \
|
||||
+ ${wxUSE_MICROWIN:-0} + ${wxUSE_MOTIF:-0} + ${wxUSE_MSW:-0} \
|
||||
+ ${wxUSE_MOTIF:-0} + ${wxUSE_MSW:-0} \
|
||||
+ ${wxUSE_X11:-0} + ${wxUSE_QT:-0}`
|
||||
|
||||
|
||||
@@ -2915,32 +2912,6 @@ libraries returned by 'pkg-config gtk+-2.0 --libs' or 'gtk-config
|
||||
)
|
||||
fi
|
||||
|
||||
if test "$wxUSE_MICROWIN" = 1; then
|
||||
AC_MSG_CHECKING(for MicroWindows)
|
||||
if test "x$MICROWINDOWS" = x ; then
|
||||
AC_MSG_RESULT(not found)
|
||||
AC_MSG_ERROR([Cannot find MicroWindows library. Make sure MICROWINDOWS is set.])
|
||||
else
|
||||
AC_MSG_RESULT($MICROWINDOWS)
|
||||
fi
|
||||
|
||||
if test -f $MICROWINDOWS/lib/libmwin.a; then
|
||||
AC_MSG_RESULT(MicroWindows' libraries found.)
|
||||
else
|
||||
AC_MSG_ERROR([Cannot find MicroWindows libraries, make sure they are compiled.])
|
||||
fi
|
||||
|
||||
TOOLKIT_INCLUDE="-I$MICROWINDOWS/include"
|
||||
GUI_TK_LIBRARY="-L$MICROWINDOWS/lib -lmwin -lmwengine -mwfonts -mwdrivers -mwinlib"
|
||||
|
||||
wxUSE_UNIVERSAL="yes"
|
||||
|
||||
TOOLKIT=MICROWIN
|
||||
GUIDIST=MICROWIN_DIST
|
||||
|
||||
TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__WXMSW__ -D__WIN95__ -D__WIN32__ -DMWIN -DMICROWIN_NOCONTROLS -DMICROWIN_TODO=1"
|
||||
fi
|
||||
|
||||
dnl common part of X11 and Motif port checks
|
||||
if test "$wxUSE_X11" = 1 -o "$wxUSE_MOTIF" = 1; then
|
||||
dnl use standard macros to check for X headers/libs, this brings
|
||||
|
@@ -1,86 +0,0 @@
|
||||
diff -rbu2 ../microwindows-0.89pre8.orig/src/config ./src/config
|
||||
--- ../microwindows-0.89pre8.orig/src/config Fri Dec 21 14:07:18 2001
|
||||
+++ ./src/config Fri Dec 21 14:14:37 2001
|
||||
@@ -47,7 +47,7 @@
|
||||
#
|
||||
####################################################################
|
||||
-OPTIMIZE = Y
|
||||
-DEBUG = N
|
||||
-VERBOSE = N
|
||||
+OPTIMIZE = N
|
||||
+DEBUG = Y
|
||||
+VERBOSE = Y
|
||||
|
||||
####################################################################
|
||||
@@ -191,5 +191,5 @@
|
||||
#
|
||||
####################################################################
|
||||
-ERASEMOVE = Y
|
||||
+ERASEMOVE = N
|
||||
UPDATEREGIONS = Y
|
||||
|
||||
@@ -216,5 +216,5 @@
|
||||
|
||||
# X Window screen, mouse and kbd drivers
|
||||
-X11 = N
|
||||
+X11 = Y
|
||||
|
||||
ifeq ($(X11), Y)
|
||||
diff -rbu2 ../microwindows-0.89pre8.orig/src/mwin/winevent.c ./src/mwin/winevent.c
|
||||
--- ../microwindows-0.89pre8.orig/src/mwin/winevent.c Fri Dec 21 14:07:21 2001
|
||||
+++ ./src/mwin/winevent.c Fri Dec 21 14:10:59 2001
|
||||
@@ -167,5 +167,5 @@
|
||||
|
||||
/* then possibly send user mouse message*/
|
||||
- if(hittest == HTCLIENT) {
|
||||
+ if(hittest == HTCLIENT || hwnd == GetCapture()) {
|
||||
pt.x = cursorx;
|
||||
pt.y = cursory;
|
||||
Only in ./src/mwin: winevent.c~
|
||||
diff -rbu2 ../microwindows-0.89pre8.orig/src/mwin/winuser.c ./src/mwin/winuser.c
|
||||
--- ../microwindows-0.89pre8.orig/src/mwin/winuser.c Fri Dec 21 14:07:21 2001
|
||||
+++ ./src/mwin/winuser.c Fri Dec 21 14:10:59 2001
|
||||
@@ -137,7 +137,11 @@
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * A helper function for sharing code between PeekMessage and GetMessage
|
||||
+ */
|
||||
+
|
||||
BOOL WINAPI
|
||||
-PeekMessage(LPMSG lpMsg, HWND hwnd, UINT uMsgFilterMin, UINT uMsgFilterMax,
|
||||
- UINT wRemoveMsg)
|
||||
+PeekMessageHelper(LPMSG lpMsg, HWND hwnd, UINT uMsgFilterMin, UINT uMsgFilterMax,
|
||||
+ UINT wRemoveMsg, BOOL returnIfEmptyQueue)
|
||||
{
|
||||
HWND wp;
|
||||
@@ -146,4 +150,8 @@
|
||||
/* check if no messages in queue*/
|
||||
if(mwMsgHead.head == NULL) {
|
||||
+ /* Added by JACS so it doesn't reach MwSelect */
|
||||
+ if (returnIfEmptyQueue)
|
||||
+ return FALSE;
|
||||
+
|
||||
#if PAINTONCE
|
||||
/* check all windows for pending paint messages*/
|
||||
@@ -177,4 +185,12 @@
|
||||
|
||||
BOOL WINAPI
|
||||
+PeekMessage(LPMSG lpMsg, HWND hwnd, UINT uMsgFilterMin, UINT uMsgFilterMax,
|
||||
+ UINT wRemoveMsg)
|
||||
+{
|
||||
+ /* Never wait in MwSelect: pass TRUE */
|
||||
+ return PeekMessageHelper(lpMsg, hwnd, uMsgFilterMin, uMsgFilterMax, wRemoveMsg, TRUE);
|
||||
+}
|
||||
+
|
||||
+BOOL WINAPI
|
||||
GetMessage(LPMSG lpMsg,HWND hwnd,UINT wMsgFilterMin,UINT wMsgFilterMax)
|
||||
{
|
||||
@@ -183,5 +199,6 @@
|
||||
* so this code will work
|
||||
*/
|
||||
- while(!PeekMessage(lpMsg, hwnd, wMsgFilterMin, wMsgFilterMax,PM_REMOVE))
|
||||
+ /* Always wait in MwSelect if there are messages: pass FALSE */
|
||||
+ while(!PeekMessageHelper(lpMsg, hwnd, wMsgFilterMin, wMsgFilterMax,PM_REMOVE, FALSE))
|
||||
continue;
|
||||
return lpMsg->message != WM_QUIT;
|
@@ -1,340 +0,0 @@
|
||||
wxMicroWindows port
|
||||
===================
|
||||
|
||||
Warning: As of 2007-07-17 this port probably doesn't build any more.
|
||||
Please don't expect it to work out of the box currently.
|
||||
|
||||
|
||||
Julian Smart 2001-12-08
|
||||
|
||||
This is a port of wxWidgets to MicroWindows, under Linux.
|
||||
Widgets are supplied by the wxUniversal project, while the
|
||||
underlying port uses the Windows ports with small modifications
|
||||
for the MicroWindows API.
|
||||
|
||||
=== NOTE: ===
|
||||
|
||||
Current efforts are being concentrated on a port to Nano-X,
|
||||
which potentially offers greater flexibility than the WIN32
|
||||
API of MicroWindows, such as the ability to run multiple
|
||||
Nano-X processes simultaneously. Please see
|
||||
../docs/x11/readme-nanox.txt for information.
|
||||
|
||||
There are many things missing from MicroWindows that will
|
||||
make the port quite limited for the time being.
|
||||
In particular, only one WIN32 app may be run at a time.
|
||||
|
||||
Note that you can gain confidence in the WIN32/wxUniversal
|
||||
combination by compiling wxUniversal under Windows using VC++,
|
||||
using src/wxUniv.dsp. You can compile the minimal
|
||||
and widgets samples in wxUniversal mode using the
|
||||
UnivDebug and UnivRelease targets. Most of the code is shared
|
||||
between this combination, and the wxMicroWindows port.
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
MicroWindows:
|
||||
|
||||
- unarchive MicroWindows 0.89pre8
|
||||
|
||||
- change 'config' to use X11 and any other options you feel fit.
|
||||
Suggestions for changes to the defaults:
|
||||
|
||||
ERASEMOVE=N (otherwise moving windows will look messy)
|
||||
X11=Y
|
||||
OPTIMIZE=N
|
||||
DEBUG=Y
|
||||
VERBOSE=Y
|
||||
|
||||
Note: these are already applied by the patch below.
|
||||
|
||||
- apply microwindows.patches (from wxWidgets:
|
||||
docs/microwin/microwindows.patches) to fix PeekMessage
|
||||
and other issues. If the patch doesn't apply automatically,
|
||||
you may need to apply it by hand, and the relevant changed
|
||||
functions are given at the end of this file for convenience.
|
||||
|
||||
Example patch command:
|
||||
|
||||
% cd microwindows-0.89pre8.orig
|
||||
% patch -p0 < ~/wx2/docs/microwin/microwindows.patches
|
||||
|
||||
- compile by typing 'make' from within the MicroWindows src directory
|
||||
|
||||
wxMicroWindows:
|
||||
|
||||
- Download wxMSW 2.3.4 or greater, or get it from CVS
|
||||
|
||||
- Many settings in include/wx/setup.h have to be disabled. As contents
|
||||
of this file keeps changing, it's impossible to say what exactly should be
|
||||
disabled but it probably makes sense to disable as much as possible
|
||||
initially, make sure that the build works and then add features as needed.
|
||||
|
||||
- EITHER:
|
||||
|
||||
o set the MICROWINDOWS environment variable, e.g.:
|
||||
|
||||
% export MICROWINDOWS=/home/julians/local/microwindows/microwindows-0.89pre8/src
|
||||
|
||||
OR:
|
||||
|
||||
o change the TOP variable at the top of src/msw/makefile.mic
|
||||
to reflect where MicroWindows is installed
|
||||
|
||||
- type 'make -f makefile.mic all' from src/msw. To clean, use
|
||||
cleanwx and NOT clean since that will clean MicroWindows itself
|
||||
|
||||
- to make the sample, cd into samples/minimal, edit the TOP variable
|
||||
(or set MICROWINDOWS) as before, and type 'make -f makefile.mic all'
|
||||
|
||||
Running 'minimal' runs the virtual MicroWindows desktop
|
||||
and the minimal sample, since in a MicroWindows WIN32 application
|
||||
they are one and the same binary.
|
||||
|
||||
Status
|
||||
======
|
||||
|
||||
The minimal sample is almost fully-functional, apart from some
|
||||
presentation issues (no menu borders and status bar in the wrong
|
||||
place.
|
||||
|
||||
The widgets sample is crashing in DeleteObject (see notes below).
|
||||
|
||||
|
||||
Implementation Notes
|
||||
====================
|
||||
|
||||
wxMicroWindows is essentially the wxMSW port + wxUniversal
|
||||
widgets. Lots of things in include/wx/univ/setup.h are switched
|
||||
off to allow the port to compile. There are also #ifdefs
|
||||
switching off further functionality, such as most wxBitmap
|
||||
functions, pending proper implementation.
|
||||
|
||||
There are some WIN32 API functions not implemented by MicroWindows
|
||||
that are instead stubbed out in include/wx/msw/microwin.c,
|
||||
and 'implemented' in src/msw/microwin.c. Some of these functions
|
||||
are important, some less so. They will need to be implemented
|
||||
in due course. But implementing missing functionality in this way
|
||||
is preferably to proliferating many #ifdefs in the
|
||||
wxMSW/wxMicroWindows port itself.
|
||||
|
||||
|
||||
Errors/warnings
|
||||
===============
|
||||
|
||||
In file ../../src/msw/window.cpp at line 1294: 'UpdateWindow' failed with error 0x00000000 (Success).
|
||||
|
||||
- caused because there are no paint messages pending. Presumed
|
||||
harmless.
|
||||
|
||||
In file ../../src/msw/dc.cpp at line 1838: 'BitBlt' failed with error 0x00000000 (Success).
|
||||
|
||||
- caused because the window isn't mapped, and MwPrepareDC in wingdi.c
|
||||
fails (hwnd->unmapcount is non-zero). Presumed harmless.
|
||||
|
||||
Recursive paint problem, e.g. when clicking the 'Press Me!'
|
||||
button in the widgets sample a few times, until the text control
|
||||
is full.
|
||||
|
||||
- possibly the scrollbar is causing the text control to be
|
||||
updated, which somehow effects the scrollbar, which causes
|
||||
a window update, etc.
|
||||
|
||||
Sluggish updates.
|
||||
|
||||
- probably because many image to bitmap conversions are being
|
||||
done on update, and bitmaps should probably be cached.
|
||||
|
||||
|
||||
Things missing from MicroWindows that need to be worked around
|
||||
==============================================================
|
||||
|
||||
wxImage/inline XPM/::CreateBitmap support
|
||||
-----------------------------------------
|
||||
|
||||
This is the main obstacle to getting a good range
|
||||
of widgets working, since wxUniversal uses inline XPMs
|
||||
to implement most of the widgets.
|
||||
|
||||
See src/engine/devimage.c for routines for loading JPEGs,
|
||||
XPMs etc. Unfortunately the XPM routines are also #ifdefed
|
||||
for FILE_IO, even though for inline XPMs we don't need file I/O.
|
||||
(Embedded systems tend not to have file I/O, anyway.)
|
||||
|
||||
Now, wxWidgets has its own XPM decoder, src/common/xpmdecod.cpp,
|
||||
so in theory we don't need to use MicroWindows' code there.
|
||||
wxImage can load an inline XPM, _but_ we need to convert to
|
||||
a wxBitmap since this is what the widgets need.
|
||||
|
||||
There is no ::CreateBitmap or BITMAPINFO. (BMPs can be converted
|
||||
to C using convbmp, then need to use Gr... functions.)
|
||||
|
||||
So how can we convert from wxImage to wxBitmap in MicroWindows?
|
||||
|
||||
Well, a simple-minded way would be to use CreateCompatibleBitmap
|
||||
which returns an HBITMAP, select it into an HDC, and draw
|
||||
the pixels from the wxImage to the HDC one by one with SetPixel.
|
||||
This is now implemented, but there are problems with masks.
|
||||
(a) masks have to be created at screen depth because BitBlt/GrDraw
|
||||
can't cope with differing depths, and (b) masked blitting
|
||||
is still not working (try enabling mask creation in
|
||||
wxBitmap::CreateFromImage by setting USE_MASKS to 1).
|
||||
|
||||
|
||||
Other missing features
|
||||
----------------------
|
||||
|
||||
No ::GetKeyState (see include/wx/msw/private.h). Should probably use
|
||||
GdOpenKeyboard/GdCloseKeyboard/GdReadKeyboard. Could perhaps emulate
|
||||
GetKeyState this way.
|
||||
|
||||
No ::DestroyIcon, ::DestroyCursor - use ::DestroyObject instead?
|
||||
Also no LoadCursor, LoadImage. So how do we make cursors? No ::SetCursor.
|
||||
|
||||
wxDC: no ::GetTextColor, ::GetBkColor, ::IntersectClipRect,
|
||||
::GetClipBox
|
||||
|
||||
No ::SetMenu, so no menus or menubars (now implemented by
|
||||
wxUniversal).
|
||||
|
||||
No ::GetObject so we can't get LOGFONT from an HFONT
|
||||
in wxSystemSettings (worked around by passing HFONT to
|
||||
the wxFont constructor).
|
||||
|
||||
|
||||
Applying patches by hand
|
||||
========================
|
||||
|
||||
The full altered functions are given below in case you have
|
||||
to apply them by hand.
|
||||
|
||||
src/mwin/winevent.c
|
||||
-------------------
|
||||
|
||||
A second test has been added to this line:
|
||||
|
||||
if(hittest == HTCLIENT || hwnd == GetCapture()) {
|
||||
|
||||
in MwTranslateMouseMessage below. This corrects a mouse message
|
||||
bug.
|
||||
|
||||
/*
|
||||
* Translate and deliver hardware mouse message to proper window.
|
||||
*/
|
||||
void
|
||||
MwTranslateMouseMessage(HWND hwnd,UINT msg,int hittest)
|
||||
{
|
||||
POINT pt;
|
||||
DWORD tick;
|
||||
static UINT lastmsg = 0;
|
||||
static HWND lasthwnd;
|
||||
static DWORD lasttick;
|
||||
static int lastx, lasty;
|
||||
|
||||
/* determine double click eligibility*/
|
||||
if(msg == WM_LBUTTONDOWN || msg == WM_RBUTTONDOWN) {
|
||||
tick = GetTickCount();
|
||||
if((hwnd->pClass->style & CS_DBLCLKS) &&
|
||||
msg == lastmsg && hwnd == lasthwnd &&
|
||||
tick - lasttick < DBLCLICKSPEED &&
|
||||
abs(cursorx-lastx) < mwSYSMETRICS_CXDOUBLECLK &&
|
||||
abs(cursory-lasty) < mwSYSMETRICS_CYDOUBLECLK)
|
||||
msg += (WM_LBUTTONDBLCLK - WM_LBUTTONDOWN);
|
||||
lastmsg = msg;
|
||||
lasthwnd = hwnd;
|
||||
lasttick = tick;
|
||||
lastx = cursorx;
|
||||
lasty = cursory;
|
||||
}
|
||||
|
||||
/*
|
||||
* We always send nc mouse message
|
||||
* unlike Windows, for HTCLIENT default processing
|
||||
*/
|
||||
PostMessage(hwnd, msg + (WM_NCMOUSEMOVE-WM_MOUSEMOVE), hittest,
|
||||
MAKELONG(cursorx, cursory));
|
||||
|
||||
/* then possibly send user mouse message*/
|
||||
if(hittest == HTCLIENT || hwnd == GetCapture()) {
|
||||
pt.x = cursorx;
|
||||
pt.y = cursory;
|
||||
ScreenToClient(hwnd, &pt);
|
||||
PostMessage(hwnd, msg, 0, MAKELONG(pt.x, pt.y));
|
||||
}
|
||||
}
|
||||
|
||||
winuser.c
|
||||
---------
|
||||
|
||||
Part of PeekMessage has been factored out into PeekMessageHelper,
|
||||
and used in PeekMessage and GetMessage. The three relevant functions
|
||||
are:
|
||||
|
||||
/*
|
||||
* A helper function for sharing code between PeekMessage and GetMessage
|
||||
*/
|
||||
|
||||
BOOL WINAPI
|
||||
PeekMessageHelper(LPMSG lpMsg, HWND hwnd, UINT uMsgFilterMin, UINT uMsgFilterMax,
|
||||
UINT wRemoveMsg, BOOL returnIfEmptyQueue)
|
||||
{
|
||||
HWND wp;
|
||||
PMSG pNxtMsg;
|
||||
|
||||
/* check if no messages in queue*/
|
||||
if(mwMsgHead.head == NULL) {
|
||||
/* Added by JACS so it doesn't reach MwSelect */
|
||||
if (returnIfEmptyQueue)
|
||||
return FALSE;
|
||||
|
||||
#if PAINTONCE
|
||||
/* check all windows for pending paint messages*/
|
||||
for(wp=listwp; wp; wp=wp->next) {
|
||||
if(!(wp->style & WS_CHILD)) {
|
||||
if(chkPaintMsg(wp, lpMsg))
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
for(wp=listwp; wp; wp=wp->next) {
|
||||
if(wp->style & WS_CHILD) {
|
||||
if(chkPaintMsg(wp, lpMsg))
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
MwSelect();
|
||||
}
|
||||
|
||||
if(mwMsgHead.head == NULL)
|
||||
return FALSE;
|
||||
|
||||
pNxtMsg = (PMSG)mwMsgHead.head;
|
||||
if(wRemoveMsg & PM_REMOVE)
|
||||
GdListRemove(&mwMsgHead, &pNxtMsg->link);
|
||||
*lpMsg = *pNxtMsg;
|
||||
if(wRemoveMsg & PM_REMOVE)
|
||||
GdItemFree(pNxtMsg);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL WINAPI
|
||||
PeekMessage(LPMSG lpMsg, HWND hwnd, UINT uMsgFilterMin, UINT uMsgFilterMax,
|
||||
UINT wRemoveMsg)
|
||||
{
|
||||
/* Never wait in MwSelect: pass TRUE */
|
||||
return PeekMessageHelper(lpMsg, hwnd, uMsgFilterMin, uMsgFilterMax, wRemoveMsg, TRUE);
|
||||
}
|
||||
|
||||
BOOL WINAPI
|
||||
GetMessage(LPMSG lpMsg,HWND hwnd,UINT wMsgFilterMin,UINT wMsgFilterMax)
|
||||
{
|
||||
/*
|
||||
* currently MwSelect() must poll for VT switch reasons,
|
||||
* so this code will work
|
||||
*/
|
||||
/* Always wait in MwSelect if there are messages: pass FALSE */
|
||||
while(!PeekMessageHelper(lpMsg, hwnd, wMsgFilterMin, wMsgFilterMax,PM_REMOVE, FALSE))
|
||||
continue;
|
||||
return lpMsg->message != WM_QUIT;
|
||||
}
|
@@ -530,7 +530,7 @@ typedef short int WXTYPE;
|
||||
|
||||
/* wxCALLBACK should be used for the functions which are called back by */
|
||||
/* Windows (such as compare function for wxListCtrl) */
|
||||
#if defined(__WIN32__) && !defined(__WXMICROWIN__)
|
||||
#if defined(__WIN32__)
|
||||
#define wxCALLBACK wxSTDCALL
|
||||
#else
|
||||
/* no stdcall under Unix nor Win16 */
|
||||
@@ -1140,7 +1140,6 @@ typedef wxUint32 wxDword;
|
||||
#elif (defined(SIZEOF_LONG_LONG) && SIZEOF_LONG_LONG >= 8) || \
|
||||
defined(__GNUC__) || \
|
||||
defined(__CYGWIN__) || \
|
||||
defined(__WXMICROWIN__) || \
|
||||
(defined(__DJGPP__) && __DJGPP__ >= 2)
|
||||
#define wxLongLong_t long long
|
||||
#define wxLongLongSuffix ll
|
||||
@@ -3224,7 +3223,7 @@ typedef wxW64 long WXLPARAM;
|
||||
typedef wxW64 long WXLRESULT;
|
||||
#endif
|
||||
|
||||
#if defined(__GNUWIN32__) || defined(__WXMICROWIN__)
|
||||
#if defined(__GNUWIN32__)
|
||||
typedef int (*WXFARPROC)();
|
||||
#else
|
||||
typedef int (__stdcall *WXFARPROC)();
|
||||
|
@@ -347,7 +347,7 @@ public:
|
||||
static int DoMustScroll(wxDialog* dialog, wxSize& windowSize, wxSize& displaySize);
|
||||
};
|
||||
|
||||
#if defined(__WXUNIVERSAL__) && !defined(__WXMICROWIN__)
|
||||
#if defined(__WXUNIVERSAL__)
|
||||
#include "wx/univ/dialog.h"
|
||||
#else
|
||||
#if defined(__WXMSW__)
|
||||
|
@@ -31,7 +31,7 @@
|
||||
#include <dirent.h>
|
||||
#endif
|
||||
|
||||
#if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
|
||||
#if defined(__WINDOWS__)
|
||||
#if !defined( __GNUWIN32__ ) && !defined(__WXWINCE__) && !defined(__CYGWIN__)
|
||||
#include <direct.h>
|
||||
#include <dos.h>
|
||||
|
@@ -251,7 +251,7 @@ protected:
|
||||
};
|
||||
|
||||
// include the real class declaration
|
||||
#if defined(__WXUNIVERSAL__) // && !defined(__WXMICROWIN__)
|
||||
#if defined(__WXUNIVERSAL__)
|
||||
#include "wx/univ/frame.h"
|
||||
#else // !__WXUNIVERSAL__
|
||||
#if defined(__WXMSW__)
|
||||
|
@@ -1,234 +0,0 @@
|
||||
/*
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/msw/microwin.h
|
||||
// Purpose: Extra implementation for MicroWindows
|
||||
// Author: Julian Smart
|
||||
// Created: 2001-05-31
|
||||
// Copyright: (c) Julian Smart
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
*/
|
||||
|
||||
#ifndef _WX_MICROWIN_H_
|
||||
#define _WX_MICROWIN_H_
|
||||
|
||||
/* Implemented by microwin.cpp */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
BOOL SetCursorPos(int x, int y);
|
||||
|
||||
HCURSOR SetCursor(HCURSOR hCursor);
|
||||
|
||||
/* Implemented with wrong number of args by MicroWindows */
|
||||
/* so we need to use a different name */
|
||||
int GetScrollPosWX (HWND hWnd, int iSBar);
|
||||
|
||||
BOOL ScrollWindow(HWND, int xAmount, int yAmount,
|
||||
CONST RECT* lpRect, CONST RECT* lpClipRect);
|
||||
|
||||
HWND WindowFromPoint(POINT pt);
|
||||
SHORT GetKeyState(int nVirtKey);
|
||||
HWND SetParent(HWND hWndChild, HWND hWndNewParent);
|
||||
VOID DragAcceptFiles(HWND, BOOL);
|
||||
BOOL IsDialogMessage(HWND hWnd, MSG* msg);
|
||||
DWORD GetMessagePos(VOID);
|
||||
BOOL IsIconic(HWND hWnd);
|
||||
int SetMapMode(HDC hDC, int mode);
|
||||
int GetMapMode(HDC hDC);
|
||||
HCURSOR LoadCursor(HINSTANCE hInst, int cursor);
|
||||
DWORD GetModuleFileName(HINSTANCE hInst, LPSTR name, DWORD sz);
|
||||
VOID DestroyIcon(HICON hIcon);
|
||||
COLORREF GetTextColor(HDC hdc);
|
||||
COLORREF GetBkColor(HDC hdc);
|
||||
HPALETTE SelectPalette(HDC hdc, HPALETTE hPalette, BOOL b);
|
||||
BOOL IntersectClipRect(HDC hdc, int x, int y,
|
||||
int w, int h);
|
||||
BOOL GetClipBox(HDC hdc, RECT* rect);
|
||||
BOOL DrawIconEx(HDC hdc, int x, int y, HICON hIcon, int w, int h, UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags);
|
||||
BOOL SetViewportExtEx(HDC hdc, int x, int y, LPSIZE lpSize);
|
||||
BOOL SetViewportOrgEx(HDC hdc, int x, int y, LPPOINT lpPoint);
|
||||
BOOL SetWindowExtEx(HDC hdc, int x, int y, LPSIZE lpSize);
|
||||
BOOL SetWindowOrgEx(HDC hdc, int x, int y, LPPOINT lpSize);
|
||||
BOOL ExtFloodFill(HDC hdc, int x, int y, COLORREF col, UINT flags);
|
||||
int SetPolyFillMode(HDC hdc, int mode);
|
||||
BOOL RoundRect(HDC hdc, int left, int top, int right, int bottom, int r1, int r2);
|
||||
BOOL MaskBlt(HDC hdc, int x, int y, int w, int h,
|
||||
HDC hDCSource, int xSrc, int ySrc, HBITMAP hBitmapMask, int xMask, int yMask, DWORD rop);
|
||||
UINT RealizePalette(HDC hDC);
|
||||
BOOL SetBrushOrgEx(HDC hdc, int xOrigin, int yOrigin, LPPOINT lpPoint);
|
||||
int GetObject(HGDIOBJ hObj, int sz, LPVOID logObj);
|
||||
|
||||
/* For some reason these aren't defined in the headers */
|
||||
BOOL EnableScrollBar (HWND hWnd, int iSBar, BOOL bEnable) ;
|
||||
BOOL GetScrollPos (HWND hWnd, int iSBar, int* pPos);
|
||||
BOOL GetScrollRange (HWND hWnd, int iSBar, int* pMinPos, int* pMaxPos);
|
||||
BOOL SetScrollPos (HWND hWnd, int iSBar, int iNewPos);
|
||||
BOOL SetScrollRange (HWND hWnd, int iSBar, int iMinPos, int iMaxPos);
|
||||
BOOL SetScrollInfo (HWND hWnd, int iSBar,
|
||||
LPCSCROLLINFO lpsi, BOOL fRedraw);
|
||||
BOOL GetScrollInfo(HWND hWnd, int iSBar, LPSCROLLINFO lpsi);
|
||||
BOOL ShowScrollBar (HWND hWnd, int iSBar, BOOL bShow);
|
||||
HBITMAP WINAPI
|
||||
CreateBitmap( int width, int height, int nPlanes, int bPP, LPCVOID lpData);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Key State Masks for Mouse Messages
|
||||
*/
|
||||
#ifndef MK_LBUTTON
|
||||
#define MK_LBUTTON 0x0001
|
||||
#define MK_RBUTTON 0x0002
|
||||
#define MK_SHIFT 0x0004
|
||||
#define MK_CONTROL 0x0008
|
||||
#define MK_MBUTTON 0x0010
|
||||
#endif
|
||||
|
||||
/*
|
||||
* DrawIcon flags
|
||||
*/
|
||||
|
||||
#ifndef DI_MASK
|
||||
#define DI_MASK 0x0001
|
||||
#define DI_IMAGE 0x0002
|
||||
#define DI_NORMAL 0x0003
|
||||
#define DI_COMPAT 0x0004
|
||||
#define DI_DEFAULTSIZE 0x0008
|
||||
#endif
|
||||
|
||||
/* TODO: May have to fake these message */
|
||||
#ifndef WM_INITDIALOG
|
||||
#define WM_INITDIALOG 0x0110
|
||||
#endif
|
||||
#ifndef WM_QUERYENDSESSION
|
||||
#define WM_QUERYENDSESSION 0x0011
|
||||
#endif
|
||||
#ifndef WM_ENDSESSION
|
||||
#define WM_ENDSESSION 0x0016
|
||||
#endif
|
||||
#ifndef WM_SETCURSOR
|
||||
#define WM_SETCURSOR 0x0020
|
||||
#endif
|
||||
#ifndef WM_GETMINMAXINFO
|
||||
#define WM_GETMINMAXINFO 0x0024
|
||||
typedef struct tagMINMAXINFO {
|
||||
POINT ptReserved;
|
||||
POINT ptMaxSize;
|
||||
POINT ptMaxPosition;
|
||||
POINT ptMinTrackSize;
|
||||
POINT ptMaxTrackSize;
|
||||
} MINMAXINFO, *PMINMAXINFO, *LPMINMAXINFO;
|
||||
|
||||
#endif
|
||||
#ifndef WM_SYSCOMMAND
|
||||
#define WM_SYSCOMMAND 0x0112
|
||||
#endif
|
||||
#ifndef WM_SYSCOLORCHANGE
|
||||
#define WM_SYSCOLORCHANGE 0x0015
|
||||
#endif
|
||||
#ifndef WM_QUERYNEWPALETTE
|
||||
#define WM_QUERYNEWPALETTE 0x030F
|
||||
#endif
|
||||
#ifndef WM_PALETTEISCHANGING
|
||||
#define WM_PALETTEISCHANGING 0x0310
|
||||
#endif
|
||||
#ifndef WM_PALETTECHANGED
|
||||
#define WM_PALETTECHANGED 0x0311
|
||||
#endif
|
||||
#ifndef WM_NOTIFY
|
||||
#define WM_NOTIFY 0x004E
|
||||
#endif
|
||||
#ifndef WM_DROPFILES
|
||||
#define WM_DROPFILES 0x0233
|
||||
#endif
|
||||
|
||||
#ifndef PALETTERGB
|
||||
#define PALETTERGB RGB
|
||||
#endif
|
||||
|
||||
#ifndef MM_TEXT
|
||||
#define MM_TEXT 1
|
||||
#define MM_LOMETRIC 2
|
||||
#define MM_HIMETRIC 3
|
||||
#define MM_LOENGLISH 4
|
||||
#define MM_HIENGLISH 5
|
||||
#define MM_TWIPS 6
|
||||
#define MM_ISOTROPIC 7
|
||||
#define MM_ANISOTROPIC 8
|
||||
#endif
|
||||
|
||||
#ifndef SC_MAXIMIZE
|
||||
#define SC_MINIMIZE 0xF020
|
||||
#define SC_MAXIMIZE 0xF030
|
||||
#endif
|
||||
|
||||
// TODO: all of them
|
||||
#ifndef IDC_ARROW
|
||||
#define IDC_ARROW 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Standard Cursor IDs
|
||||
*/
|
||||
#ifndef MAKEINTRESOURCE
|
||||
#define MAKEINTRESOURCE(r) r
|
||||
#endif
|
||||
|
||||
#ifndef IDC_ARROW
|
||||
#define IDC_ARROW MAKEINTRESOURCE(32512)
|
||||
#define IDC_IBEAM MAKEINTRESOURCE(32513)
|
||||
#define IDC_WAIT MAKEINTRESOURCE(32514)
|
||||
#define IDC_CROSS MAKEINTRESOURCE(32515)
|
||||
#define IDC_UPARROW MAKEINTRESOURCE(32516)
|
||||
#define IDC_SIZE MAKEINTRESOURCE(32640) /* OBSOLETE: use IDC_SIZEALL */
|
||||
#define IDC_ICON MAKEINTRESOURCE(32641) /* OBSOLETE: use IDC_ARROW */
|
||||
#define IDC_SIZENWSE MAKEINTRESOURCE(32642)
|
||||
#define IDC_SIZENESW MAKEINTRESOURCE(32643)
|
||||
#define IDC_SIZEWE MAKEINTRESOURCE(32644)
|
||||
#define IDC_SIZENS MAKEINTRESOURCE(32645)
|
||||
#define IDC_SIZEALL MAKEINTRESOURCE(32646)
|
||||
#define IDC_NO MAKEINTRESOURCE(32648) /* not in win3.1 */
|
||||
#if(WINVER >= 0x0500)
|
||||
#define IDC_HAND MAKEINTRESOURCE(32649)
|
||||
#endif /* WINVER >= 0x0500 */
|
||||
#define IDC_APPSTARTING MAKEINTRESOURCE(32650) /* not in win3.1 */
|
||||
#if(WINVER >= 0x0400)
|
||||
#define IDC_HELP MAKEINTRESOURCE(32651)
|
||||
#endif /* WINVER >= 0x0400 */
|
||||
#endif
|
||||
|
||||
/* ExtFloodFill style flags */
|
||||
#define FLOODFILLBORDER 0
|
||||
#define FLOODFILLSURFACE 1
|
||||
|
||||
/* PolyFill() Modes */
|
||||
#define ALTERNATE 1
|
||||
#define WINDING 2
|
||||
#define POLYFILL_LAST 2
|
||||
|
||||
/* Quaternary raster codes */
|
||||
#define MAKEROP4(fore,back) (DWORD)((((back) << 8) & 0xFF000000) | (fore))
|
||||
|
||||
/* Device Parameters for GetDeviceCaps() */
|
||||
#define DRIVERVERSION 0 /* Device driver version */
|
||||
#define TECHNOLOGY 2 /* Device classification */
|
||||
#define HORZSIZE 4 /* Horizontal size in millimeters */
|
||||
#define VERTSIZE 6 /* Vertical size in millimeters */
|
||||
|
||||
/* Ternary raster operations */
|
||||
/* Now defined by MicroWindows */
|
||||
#if 0
|
||||
#define DSTINVERT (DWORD)0x00550009 /* dest = (NOT dest) */
|
||||
#define WHITENESS (DWORD)0x00FF0062 /* dest = WHITE */
|
||||
#define SRCERASE (DWORD)0x00440328 /* dest = source AND (NOT dest ) */
|
||||
#define MERGEPAINT (DWORD)0x00BB0226 /* dest = (NOT source) OR dest */
|
||||
#define SRCPAINT (DWORD)0x00EE0086 /* dest = source OR dest */
|
||||
#define NOTSRCCOPY (DWORD)0x00330008 /* dest = (NOT source) */
|
||||
#endif
|
||||
|
||||
#endif /* _WX_MICROWIN_H_ */
|
@@ -15,11 +15,6 @@
|
||||
|
||||
#include "wx/msw/wrapwin.h"
|
||||
|
||||
#ifdef __WXMICROWIN__
|
||||
// Extra prototypes and symbols not defined by MicroWindows
|
||||
#include "wx/msw/microwin.h"
|
||||
#endif
|
||||
|
||||
#include "wx/log.h"
|
||||
|
||||
#if wxUSE_GUI
|
||||
@@ -144,11 +139,7 @@ extern LONG APIENTRY
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
// a wrapper macro for ZeroMemory()
|
||||
#if !defined(__WXMICROWIN__)
|
||||
#define wxZeroMemory(obj) ::ZeroMemory(&obj, sizeof(obj))
|
||||
#else
|
||||
#define wxZeroMemory(obj) memset((void*) & obj, 0, sizeof(obj))
|
||||
#endif
|
||||
|
||||
// This one is a macro so that it can be tested with #ifdef, it will be
|
||||
// undefined if it cannot be implemented for a given compiler.
|
||||
|
@@ -17,7 +17,7 @@
|
||||
#include "wx/msw/private.h"
|
||||
#include "wx/msw/missing.h"
|
||||
|
||||
#if wxUSE_COMMON_DIALOGS && !defined(__SMARTPHONE__) && !defined(__WXMICROWIN__)
|
||||
#if wxUSE_COMMON_DIALOGS && !defined(__SMARTPHONE__)
|
||||
#include <commdlg.h>
|
||||
#endif
|
||||
|
||||
|
@@ -95,7 +95,7 @@ def WriteTable(f, table):
|
||||
// This table is generated by misc/languages/genlang.py
|
||||
// When making changes, please put them into misc/languages/langtabl.txt
|
||||
|
||||
#if !defined(__WIN32__) || defined(__WXMICROWIN__)
|
||||
#if !defined(__WIN32__)
|
||||
|
||||
#define SETWINLANG(info,lang,sublang)
|
||||
|
||||
|
@@ -1,85 +0,0 @@
|
||||
##############################################################################
|
||||
# Microwindows template Makefile
|
||||
# Copyright (c) 2000 Martin Jolicoeur, Greg Haerr
|
||||
##############################################################################
|
||||
|
||||
TOP=$(MICROWINDOWS)
|
||||
ifeq "$(MICROWINDOWS)" ""
|
||||
TOP=/home/julians/local/microwindows/microwindows-0.89pre8/src
|
||||
endif
|
||||
|
||||
CONFIG = $(TOP)/config
|
||||
WXDIR = ../..
|
||||
OBJSUFF = o
|
||||
SRCSUFF = cpp
|
||||
WXLIB=$(WXDIR)/lib/libwx.a
|
||||
AROPTIONS = ruv
|
||||
RANLIB = ranlib
|
||||
RM = rm -f
|
||||
|
||||
ZLIBLIB = $(WXDIR)/lib/libzlib.a
|
||||
PNGLIB = $(WXDIR)/lib/libpng.a
|
||||
JPEGLIB = $(WXDIR)/lib/libjpeg.a
|
||||
TIFFLIB = $(WXDIR)/lib/libtiff.a
|
||||
|
||||
include $(CONFIG)
|
||||
|
||||
######################## Additional Flags section ############################
|
||||
|
||||
# Directories list for header files
|
||||
INCLUDEDIRS += -I$(WXDIR)/include
|
||||
# Defines for preprocessor
|
||||
DEFINES += -DMWIN -D__WXMSW__ -D__WXMICROWIN__ -D__WXUNIVERSAL__ -D__WIN32__ -D__WIN95__ -DHAVE_BOOL -DMICROWIN_TODO=1 -D__UNIX__ -DHAVE_NANOSLEEP -DMICROWIN_NOCONTROLS -D__WXDEBUG__ -DwxSIZE_T_IS_UINT
|
||||
|
||||
# Compilation flags for C files OTHER than include directories
|
||||
CFLAGS +=
|
||||
# Preprocessor flags OTHER than defines
|
||||
CPPFLAGS +=
|
||||
# Linking flags
|
||||
#LDFLAGS += -lwx -L$(WXDIR)/lib
|
||||
LDFLAGS += $(WXLIB)
|
||||
|
||||
############################# targets section ################################
|
||||
|
||||
# If you want to create a library with the objects files, define the name here
|
||||
LIBNAME =
|
||||
|
||||
# If we put it below OBJS=, Makefile.rules includes .depend
|
||||
# and it continually looks for .c files to satisfy .o.cpp
|
||||
# dependency. What's going on there?
|
||||
include $(TOP)/Makefile.rules
|
||||
|
||||
# List of objects to compile
|
||||
OBJS = minimal.o
|
||||
|
||||
all: minimal
|
||||
|
||||
######################### Makefile.rules section #############################
|
||||
|
||||
|
||||
|
||||
######################## Tools targets section ###############################
|
||||
|
||||
minimal: $(OBJS) $(MWINLIBS) $(WXLIB) $(TOP)/config
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) -o $@ $(WXLIB) $(MWINLIBS) -lm
|
||||
|
||||
#.SUFFIXES: .cpp .cxx .c
|
||||
|
||||
#.c.o:
|
||||
# $(CC) -c $(CFLAGS) $(CFLAGS) -o $@ $*.c
|
||||
|
||||
.cxx.o:
|
||||
$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $*.cxx
|
||||
|
||||
.cpp.o:
|
||||
$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $*.cpp
|
||||
|
||||
cleanwx:
|
||||
-$(RM) *.o
|
||||
-$(RM) minimal
|
||||
|
||||
wx:
|
||||
@pushd $(WXDIR)/src/msw; make -f makefile.mic all; popd
|
||||
|
||||
wxfull:
|
||||
@pushd $(WXDIR)/src/msw; make -f makefile.mic cleanwx all; popd
|
@@ -1,87 +0,0 @@
|
||||
##############################################################################
|
||||
# Microwindows template Makefile
|
||||
# Copyright (c) 2000 Martin Jolicoeur, Greg Haerr
|
||||
# Licence: wxWindows Licence
|
||||
##############################################################################
|
||||
|
||||
TOP=$(MICROWINDOWS)
|
||||
ifeq "$(MICROWINDOWS)" ""
|
||||
TOP=/home/julians/local/microwindows/microwindows-0.89pre8/src
|
||||
endif
|
||||
|
||||
CONFIG = $(TOP)/config
|
||||
WXDIR = ../..
|
||||
OBJSUFF = o
|
||||
SRCSUFF = cpp
|
||||
WXLIB=$(WXDIR)/lib/libwx.a
|
||||
AROPTIONS = ruv
|
||||
RANLIB = ranlib
|
||||
RM = rm -f
|
||||
|
||||
ZLIBLIB = $(WXDIR)/lib/libzlib.a
|
||||
PNGLIB = $(WXDIR)/lib/libpng.a
|
||||
JPEGLIB = $(WXDIR)/lib/libjpeg.a
|
||||
TIFFLIB = $(WXDIR)/lib/libtiff.a
|
||||
|
||||
include $(CONFIG)
|
||||
|
||||
######################## Additional Flags section ############################
|
||||
|
||||
# Directories list for header files
|
||||
INCLUDEDIRS += -I$(WXDIR)/include
|
||||
# Defines for preprocessor
|
||||
DEFINES += -DMWIN -D__WXMSW__ -D__WXMICROWIN__ -D__WXUNIVERSAL__ -D__WIN32__ -D__WIN95__ -DHAVE_BOOL -DMICROWIN_TODO=1 -D__UNIX__ -DHAVE_NANOSLEEP -DMICROWIN_NOCONTROLS -D__WXDEBUG__ -DwxSIZE_T_IS_UINT
|
||||
|
||||
# Compilation flags for C files OTHER than include directories
|
||||
CFLAGS +=
|
||||
# Preprocessor flags OTHER than defines
|
||||
CPPFLAGS +=
|
||||
# Linking flags
|
||||
#LDFLAGS += -lwx -L$(WXDIR)/lib
|
||||
LDFLAGS += $(WXLIB)
|
||||
|
||||
############################# targets section ################################
|
||||
|
||||
# If you want to create a library with the objects files, define the name here
|
||||
LIBNAME =
|
||||
|
||||
# If we put it below OBJS=, Makefile.rules includes .depend
|
||||
# and it continually looks for .c files to satisfy .o.cpp
|
||||
# dependency. What's going on there?
|
||||
include $(TOP)/Makefile.rules
|
||||
|
||||
# List of objects to compile
|
||||
OBJS = widgets.o button.o combobox.o gauge.o listbox.o notebook.o radiobox.o slider.o spinbtn.o \
|
||||
static.o textctrl.o
|
||||
|
||||
all: widgets
|
||||
|
||||
######################### Makefile.rules section #############################
|
||||
|
||||
|
||||
|
||||
######################## Tools targets section ###############################
|
||||
|
||||
widgets: $(OBJS) $(MWINLIBS) $(WXLIB) $(TOP)/config
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) -o $@ $(WXLIB) $(MWINLIBS) -lm
|
||||
|
||||
#.SUFFIXES: .cpp .cxx .c
|
||||
|
||||
#.c.o:
|
||||
# $(CC) -c $(CFLAGS) $(CFLAGS) -o $@ $*.c
|
||||
|
||||
.cxx.o:
|
||||
$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $*.cxx
|
||||
|
||||
.cpp.o:
|
||||
$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $*.cpp
|
||||
|
||||
cleanwx:
|
||||
-$(RM) *.o
|
||||
-$(RM) widgets
|
||||
|
||||
wx:
|
||||
@pushd $(WXDIR)/src/msw; make -f makefile.mic all; popd
|
||||
|
||||
wxfull:
|
||||
@pushd $(WXDIR)/src/msw; make -f makefile.mic cleanwx all; popd
|
@@ -88,7 +88,7 @@
|
||||
#endif
|
||||
#endif // wxUSE_EXCEPTIONS
|
||||
|
||||
#if !defined(__WINDOWS__) || defined(__WXMICROWIN__)
|
||||
#if !defined(__WINDOWS__)
|
||||
#include <signal.h> // for SIGTRAP used by wxTrap()
|
||||
#endif //Win/Unix
|
||||
|
||||
@@ -1128,7 +1128,7 @@ void wxAbort()
|
||||
|
||||
void wxTrap()
|
||||
{
|
||||
#if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
|
||||
#if defined(__WINDOWS__)
|
||||
DebugBreak();
|
||||
#elif defined(_MSL_USING_MW_C_HEADERS) && _MSL_USING_MW_C_HEADERS
|
||||
Debugger();
|
||||
@@ -1296,7 +1296,7 @@ static
|
||||
bool DoShowAssertDialog(const wxString& msg)
|
||||
{
|
||||
// under Windows we can show the dialog even in the console mode
|
||||
#if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
|
||||
#if defined(__WINDOWS__)
|
||||
wxString msgDlg(msg);
|
||||
|
||||
// this message is intentionally not translated -- it is for developers
|
||||
|
@@ -23,7 +23,7 @@
|
||||
#if wxUSE_FILE
|
||||
|
||||
// standard
|
||||
#if defined(__WINDOWS__) && !defined(__GNUWIN32__) && !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if defined(__WINDOWS__) && !defined(__GNUWIN32__) && !defined(__WXWINCE__)
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#define NOSERVICE
|
||||
|
@@ -1013,7 +1013,7 @@ wxDoCopyFile(wxFile& fileIn,
|
||||
bool
|
||||
wxCopyFile (const wxString& file1, const wxString& file2, bool overwrite)
|
||||
{
|
||||
#if defined(__WIN32__) && !defined(__WXMICROWIN__)
|
||||
#if defined(__WIN32__)
|
||||
// CopyFile() copies file attributes and modification time too, so use it
|
||||
// instead of our code if available
|
||||
//
|
||||
@@ -1173,7 +1173,7 @@ bool wxMkdir(const wxString& dir, int perm)
|
||||
// for the GNU compiler
|
||||
#elif (!(defined(__WINDOWS__) || defined(__DOS__))) || \
|
||||
(defined(__GNUWIN32__) && !defined(__MINGW32__)) || \
|
||||
defined(__WINE__) || defined(__WXMICROWIN__)
|
||||
defined(__WINE__)
|
||||
const wxChar *dirname = dir.c_str();
|
||||
#if defined(MSVCRT)
|
||||
wxUnusedVar(perm);
|
||||
@@ -1478,7 +1478,7 @@ wxString wxGetOSDirectory()
|
||||
{
|
||||
#ifdef __WXWINCE__
|
||||
return wxString(wxT("\\Windows"));
|
||||
#elif defined(__WINDOWS__) && !defined(__WXMICROWIN__)
|
||||
#elif defined(__WINDOWS__)
|
||||
wxChar buf[MAX_PATH];
|
||||
if ( !GetWindowsDirectory(buf, MAX_PATH) )
|
||||
{
|
||||
|
@@ -142,7 +142,7 @@ namespace
|
||||
|
||||
// small helper class which opens and closes the file - we use it just to get
|
||||
// a file handle for the given file name to pass it to some Win32 API function
|
||||
#if defined(__WIN32__) && !defined(__WXMICROWIN__)
|
||||
#if defined(__WIN32__)
|
||||
|
||||
class wxFileHandle
|
||||
{
|
||||
@@ -214,7 +214,7 @@ private:
|
||||
// private functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#if wxUSE_DATETIME && defined(__WIN32__) && !defined(__WXMICROWIN__)
|
||||
#if wxUSE_DATETIME && defined(__WIN32__)
|
||||
|
||||
// Convert between wxDateTime and FILETIME which is a 64-bit value representing
|
||||
// the number of 100-nanosecond intervals since January 1, 1601 UTC.
|
||||
@@ -616,7 +616,7 @@ wxFileName wxFileName::DirName(const wxString& dir, wxPathFormat format)
|
||||
namespace
|
||||
{
|
||||
|
||||
#if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
|
||||
#if defined(__WINDOWS__)
|
||||
|
||||
void RemoveTrailingSeparatorsFromPath(wxString& strPath)
|
||||
{
|
||||
@@ -651,7 +651,7 @@ wxFileSystemObjectExists(const wxString& path, int flags)
|
||||
|
||||
wxString strPath(path);
|
||||
|
||||
#if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
|
||||
#if defined(__WINDOWS__)
|
||||
if ( acceptDir )
|
||||
{
|
||||
// Ensure that the path doesn't have any trailing separators when
|
||||
@@ -930,7 +930,7 @@ static wxString wxCreateTempImpl(
|
||||
i ++;
|
||||
}
|
||||
|
||||
#elif defined(__WINDOWS__) && !defined(__WXMICROWIN__)
|
||||
#elif defined(__WINDOWS__)
|
||||
if (!::GetTempFileName(dir.t_str(), name.t_str(), 0,
|
||||
wxStringBuffer(path, MAX_PATH + 1)))
|
||||
{
|
||||
@@ -1240,7 +1240,7 @@ wxString wxFileName::GetTempDir()
|
||||
{
|
||||
#if defined(__WXWINCE__)
|
||||
dir = CheckIfDirExists(wxT("\\temp"));
|
||||
#elif defined(__WINDOWS__) && !defined(__WXMICROWIN__)
|
||||
#elif defined(__WINDOWS__)
|
||||
if ( !::GetTempPath(MAX_PATH, wxStringBuffer(dir, MAX_PATH + 1)) )
|
||||
{
|
||||
wxLogLastError(wxT("GetTempPath"));
|
||||
@@ -2162,7 +2162,7 @@ wxString wxFileName::GetShortPath() const
|
||||
{
|
||||
wxString path(GetFullPath());
|
||||
|
||||
#if defined(__WINDOWS__) && defined(__WIN32__) && !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if defined(__WINDOWS__) && defined(__WIN32__) && !defined(__WXWINCE__)
|
||||
DWORD sz = ::GetShortPathName(path.t_str(), NULL, 0);
|
||||
if ( sz != 0 )
|
||||
{
|
||||
@@ -2188,7 +2188,7 @@ wxString wxFileName::GetLongPath() const
|
||||
wxString pathOut,
|
||||
path = GetFullPath();
|
||||
|
||||
#if defined(__WIN32__) && !defined(__WXWINCE__) && !defined(__WXMICROWIN__)
|
||||
#if defined(__WIN32__) && !defined(__WXWINCE__)
|
||||
|
||||
#if wxUSE_DYNLIB_CLASS
|
||||
typedef DWORD (WINAPI *GET_LONG_PATH_NAME)(const wxChar *, wxChar *, DWORD);
|
||||
|
@@ -792,7 +792,7 @@ wxString wxLocale::GetSystemEncodingName()
|
||||
{
|
||||
wxString encname;
|
||||
|
||||
#if defined(__WIN32__) && !defined(__WXMICROWIN__)
|
||||
#if defined(__WIN32__)
|
||||
// FIXME: what is the error return value for GetACP()?
|
||||
UINT codepage = ::GetACP();
|
||||
encname.Printf(wxS("windows-%u"), codepage);
|
||||
@@ -849,7 +849,7 @@ wxString wxLocale::GetSystemEncodingName()
|
||||
/* static */
|
||||
wxFontEncoding wxLocale::GetSystemEncoding()
|
||||
{
|
||||
#if defined(__WIN32__) && !defined(__WXMICROWIN__)
|
||||
#if defined(__WIN32__)
|
||||
UINT codepage = ::GetACP();
|
||||
|
||||
// wxWidgets only knows about CP1250-1257, 874, 932, 936, 949, 950
|
||||
|
@@ -40,7 +40,7 @@
|
||||
// This table is generated by misc/languages/genlang.py
|
||||
// When making changes, please put them into misc/languages/langtabl.txt
|
||||
|
||||
#if !defined(__WIN32__) || defined(__WXMICROWIN__)
|
||||
#if !defined(__WIN32__)
|
||||
|
||||
#define SETWINLANG(info,lang,sublang)
|
||||
|
||||
|
@@ -1054,7 +1054,7 @@ static void wxLogWrap(FILE *f, const char *pszPrefix, const char *psz)
|
||||
// get error code from syste
|
||||
unsigned long wxSysErrorCode()
|
||||
{
|
||||
#if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
|
||||
#if defined(__WINDOWS__)
|
||||
return ::GetLastError();
|
||||
#else //Unix
|
||||
return errno;
|
||||
@@ -1067,7 +1067,7 @@ const wxChar *wxSysErrorMsg(unsigned long nErrCode)
|
||||
if ( nErrCode == 0 )
|
||||
nErrCode = wxSysErrorCode();
|
||||
|
||||
#if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
|
||||
#if defined(__WINDOWS__)
|
||||
static wxChar s_szBuf[1024];
|
||||
|
||||
// get error message from system
|
||||
|
@@ -164,7 +164,7 @@ void wxMessageOutputStderr::Output(const wxString& str)
|
||||
|
||||
void wxMessageOutputDebug::Output(const wxString& str)
|
||||
{
|
||||
#if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
|
||||
#if defined(__WINDOWS__)
|
||||
wxString out(AppendLineFeedIfNeeded(str));
|
||||
out.Replace(wxT("\t"), wxT(" "));
|
||||
out.Replace(wxT("\n"), wxT("\r\n"));
|
||||
|
@@ -77,7 +77,7 @@ typedef struct {
|
||||
JSAMPLE *sample_range_limit, *srl_orig;
|
||||
} j_decompress;
|
||||
|
||||
#if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
|
||||
#if defined(__WINDOWS__)
|
||||
#define JMETHOD(type,methodname,arglist) type (__cdecl methodname) arglist
|
||||
#else
|
||||
#define JMETHOD(type,methodname,arglist) type (methodname) arglist
|
||||
|
@@ -35,7 +35,7 @@
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#if defined(__WIN32__) && !defined(__WXMICROWIN__)
|
||||
#if defined(__WIN32__)
|
||||
#include "wx/msw/private.h"
|
||||
#include "wx/msw/missing.h"
|
||||
#define wxHAVE_WIN32_MB2WC
|
||||
|
@@ -104,7 +104,7 @@
|
||||
// global variables
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if !defined(__WXWINCE__)
|
||||
extern void wxSetKeyboardHook(bool doIt);
|
||||
#endif
|
||||
|
||||
@@ -613,9 +613,7 @@ bool wxApp::Initialize(int& argc_, wxChar **argv_)
|
||||
// ensure that base cleanup is done if we return too early
|
||||
wxCallBaseCleanup callBaseCleanup(this);
|
||||
|
||||
#if !defined(__WXMICROWIN__)
|
||||
InitCommonControls();
|
||||
#endif // !defined(__WXMICROWIN__)
|
||||
|
||||
#if defined(__SMARTPHONE__) || defined(__POCKETPC__)
|
||||
SHInitExtraControls();
|
||||
@@ -623,7 +621,7 @@ bool wxApp::Initialize(int& argc_, wxChar **argv_)
|
||||
|
||||
wxOleInitialize();
|
||||
|
||||
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if !defined(__WXWINCE__)
|
||||
wxSetKeyboardHook(true);
|
||||
#endif
|
||||
|
||||
@@ -730,7 +728,7 @@ void wxApp::CleanUp()
|
||||
// class method first and only then do our clean up
|
||||
wxAppBase::CleanUp();
|
||||
|
||||
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if !defined(__WXWINCE__)
|
||||
wxSetKeyboardHook(false);
|
||||
#endif
|
||||
|
||||
|
@@ -484,7 +484,7 @@ static HBITMAP CreatePremultipliedDIBIfNeeded(HBITMAP hbmp)
|
||||
bool wxBitmap::CopyFromIconOrCursor(const wxGDIImage& icon,
|
||||
wxBitmapTransparency transp)
|
||||
{
|
||||
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if !defined(__WXWINCE__)
|
||||
// it may be either HICON or HCURSOR
|
||||
HICON hicon = (HICON)icon.GetHandle();
|
||||
|
||||
@@ -587,7 +587,7 @@ bool wxBitmap::CopyFromIconOrCursor(const wxGDIImage& icon,
|
||||
}
|
||||
|
||||
return true;
|
||||
#else // __WXMICROWIN__ || __WXWINCE__
|
||||
#else // __WXWINCE__
|
||||
wxUnusedVar(icon);
|
||||
wxUnusedVar(transp);
|
||||
|
||||
@@ -657,7 +657,6 @@ wxBitmap::~wxBitmap()
|
||||
|
||||
wxBitmap::wxBitmap(const char bits[], int width, int height, int depth)
|
||||
{
|
||||
#ifndef __WXMICROWIN__
|
||||
wxBitmapRefData *refData = new wxBitmapRefData;
|
||||
m_refData = refData;
|
||||
|
||||
@@ -716,7 +715,6 @@ wxBitmap::wxBitmap(const char bits[], int width, int height, int depth)
|
||||
}
|
||||
|
||||
SetHBITMAP((WXHBITMAP)hbmp);
|
||||
#endif
|
||||
}
|
||||
|
||||
wxBitmap::wxBitmap(int w, int h, const wxDC& dc)
|
||||
@@ -787,7 +785,6 @@ bool wxBitmap::DoCreate(int w, int h, int d, WXHDC hdc)
|
||||
#endif // NEVER_USE_DIB
|
||||
{
|
||||
#ifndef ALWAYS_USE_DIB
|
||||
#ifndef __WXMICROWIN__
|
||||
if ( d > 0 )
|
||||
{
|
||||
hbmp = ::CreateBitmap(w, h, 1, d, NULL);
|
||||
@@ -799,7 +796,6 @@ bool wxBitmap::DoCreate(int w, int h, int d, WXHDC hdc)
|
||||
GetBitmapData()->m_depth = d;
|
||||
}
|
||||
else // d == 0, create bitmap compatible with the screen
|
||||
#endif // !__WXMICROWIN__
|
||||
{
|
||||
ScreenHDC dc;
|
||||
hbmp = ::CreateCompatibleBitmap(dc, w, h);
|
||||
@@ -820,193 +816,6 @@ bool wxBitmap::DoCreate(int w, int h, int d, WXHDC hdc)
|
||||
|
||||
#if wxUSE_IMAGE
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxImage to/from conversions for Microwin
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Microwin versions are so different from normal ones that it really doesn't
|
||||
// make sense to use #ifdefs inside the function bodies
|
||||
#ifdef __WXMICROWIN__
|
||||
|
||||
bool wxBitmap::CreateFromImage(const wxImage& image, int depth, const wxDC& dc)
|
||||
{
|
||||
// Set this to 1 to experiment with mask code,
|
||||
// which currently doesn't work
|
||||
#define USE_MASKS 0
|
||||
|
||||
m_refData = new wxBitmapRefData();
|
||||
|
||||
// Initial attempt at a simple-minded implementation.
|
||||
// The bitmap will always be created at the screen depth,
|
||||
// so the 'depth' argument is ignored.
|
||||
|
||||
HDC hScreenDC = ::GetDC(NULL);
|
||||
int screenDepth = ::GetDeviceCaps(hScreenDC, BITSPIXEL);
|
||||
|
||||
HBITMAP hBitmap = ::CreateCompatibleBitmap(hScreenDC, image.GetWidth(), image.GetHeight());
|
||||
HBITMAP hMaskBitmap = NULL;
|
||||
HBITMAP hOldMaskBitmap = NULL;
|
||||
HDC hMaskDC = NULL;
|
||||
unsigned char maskR = 0;
|
||||
unsigned char maskG = 0;
|
||||
unsigned char maskB = 0;
|
||||
|
||||
// printf("Created bitmap %d\n", (int) hBitmap);
|
||||
if (hBitmap == NULL)
|
||||
{
|
||||
::ReleaseDC(NULL, hScreenDC);
|
||||
return false;
|
||||
}
|
||||
HDC hMemDC = ::CreateCompatibleDC(hScreenDC);
|
||||
|
||||
HBITMAP hOldBitmap = ::SelectObject(hMemDC, hBitmap);
|
||||
::ReleaseDC(NULL, hScreenDC);
|
||||
|
||||
// created an mono-bitmap for the possible mask
|
||||
bool hasMask = image.HasMask();
|
||||
|
||||
if ( hasMask )
|
||||
{
|
||||
#if USE_MASKS
|
||||
// FIXME: we should be able to pass bpp = 1, but
|
||||
// GdBlit can't handle a different depth
|
||||
#if 0
|
||||
hMaskBitmap = ::CreateBitmap( (WORD)image.GetWidth(), (WORD)image.GetHeight(), 1, 1, NULL );
|
||||
#else
|
||||
hMaskBitmap = ::CreateCompatibleBitmap( hMemDC, (WORD)image.GetWidth(), (WORD)image.GetHeight());
|
||||
#endif
|
||||
maskR = image.GetMaskRed();
|
||||
maskG = image.GetMaskGreen();
|
||||
maskB = image.GetMaskBlue();
|
||||
|
||||
if (!hMaskBitmap)
|
||||
{
|
||||
hasMask = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
hScreenDC = ::GetDC(NULL);
|
||||
hMaskDC = ::CreateCompatibleDC(hScreenDC);
|
||||
::ReleaseDC(NULL, hScreenDC);
|
||||
|
||||
hOldMaskBitmap = ::SelectObject( hMaskDC, hMaskBitmap);
|
||||
}
|
||||
#else
|
||||
hasMask = false;
|
||||
#endif
|
||||
}
|
||||
|
||||
int i, j;
|
||||
for (i = 0; i < image.GetWidth(); i++)
|
||||
{
|
||||
for (j = 0; j < image.GetHeight(); j++)
|
||||
{
|
||||
unsigned char red = image.GetRed(i, j);
|
||||
unsigned char green = image.GetGreen(i, j);
|
||||
unsigned char blue = image.GetBlue(i, j);
|
||||
|
||||
::SetPixel(hMemDC, i, j, PALETTERGB(red, green, blue));
|
||||
|
||||
if (hasMask)
|
||||
{
|
||||
// scan the bitmap for the transparent colour and set the corresponding
|
||||
// pixels in the mask to BLACK and the rest to WHITE
|
||||
if (maskR == red && maskG == green && maskB == blue)
|
||||
::SetPixel(hMaskDC, i, j, PALETTERGB(0, 0, 0));
|
||||
else
|
||||
::SetPixel(hMaskDC, i, j, PALETTERGB(255, 255, 255));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
::SelectObject(hMemDC, hOldBitmap);
|
||||
::DeleteDC(hMemDC);
|
||||
if (hasMask)
|
||||
{
|
||||
::SelectObject(hMaskDC, hOldMaskBitmap);
|
||||
::DeleteDC(hMaskDC);
|
||||
|
||||
((wxBitmapRefData*)m_refData)->SetMask(hMaskBitmap);
|
||||
}
|
||||
|
||||
SetWidth(image.GetWidth());
|
||||
SetHeight(image.GetHeight());
|
||||
SetDepth(screenDepth);
|
||||
SetHBITMAP( (WXHBITMAP) hBitmap );
|
||||
|
||||
#if wxUSE_PALETTE
|
||||
// Copy the palette from the source image
|
||||
SetPalette(image.GetPalette());
|
||||
#endif // wxUSE_PALETTE
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
wxImage wxBitmap::ConvertToImage() const
|
||||
{
|
||||
// Initial attempt at a simple-minded implementation.
|
||||
// The bitmap will always be created at the screen depth,
|
||||
// so the 'depth' argument is ignored.
|
||||
// TODO: transparency (create a mask image)
|
||||
|
||||
if (!IsOk())
|
||||
{
|
||||
wxFAIL_MSG( wxT("bitmap is invalid") );
|
||||
return wxNullImage;
|
||||
}
|
||||
|
||||
wxImage image;
|
||||
|
||||
wxCHECK_MSG( IsOk(), wxNullImage, wxT("invalid bitmap") );
|
||||
|
||||
// create an wxImage object
|
||||
int width = GetWidth();
|
||||
int height = GetHeight();
|
||||
image.Create( width, height );
|
||||
unsigned char *data = image.GetData();
|
||||
if( !data )
|
||||
{
|
||||
wxFAIL_MSG( wxT("could not allocate data for image") );
|
||||
return wxNullImage;
|
||||
}
|
||||
|
||||
HDC hScreenDC = ::GetDC(NULL);
|
||||
|
||||
HDC hMemDC = ::CreateCompatibleDC(hScreenDC);
|
||||
::ReleaseDC(NULL, hScreenDC);
|
||||
|
||||
HBITMAP hBitmap = (HBITMAP) GetHBITMAP();
|
||||
|
||||
HBITMAP hOldBitmap = ::SelectObject(hMemDC, hBitmap);
|
||||
|
||||
int i, j;
|
||||
for (i = 0; i < GetWidth(); i++)
|
||||
{
|
||||
for (j = 0; j < GetHeight(); j++)
|
||||
{
|
||||
COLORREF color = ::GetPixel(hMemDC, i, j);
|
||||
unsigned char red = GetRValue(color);
|
||||
unsigned char green = GetGValue(color);
|
||||
unsigned char blue = GetBValue(color);
|
||||
|
||||
image.SetRGB(i, j, red, green, blue);
|
||||
}
|
||||
}
|
||||
|
||||
::SelectObject(hMemDC, hOldBitmap);
|
||||
::DeleteDC(hMemDC);
|
||||
|
||||
#if wxUSE_PALETTE
|
||||
// Copy the palette from the source image
|
||||
if (GetPalette())
|
||||
image.SetPalette(* GetPalette());
|
||||
#endif // wxUSE_PALETTE
|
||||
|
||||
return image;
|
||||
}
|
||||
|
||||
#endif // __WXMICROWIN__
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxImage to/from conversions
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -1337,7 +1146,6 @@ wxBitmap wxBitmap::GetSubBitmapOfHDC( const wxRect& rect, WXHDC hdc ) const
|
||||
wxBitmap ret( rect.width, rect.height, GetDepth() );
|
||||
wxASSERT_MSG( ret.IsOk(), wxT("GetSubBitmap error") );
|
||||
|
||||
#ifndef __WXMICROWIN__
|
||||
// handle alpha channel, if any
|
||||
if (HasAlpha())
|
||||
ret.UseAlpha();
|
||||
@@ -1378,7 +1186,6 @@ wxBitmap wxBitmap::GetSubBitmapOfHDC( const wxRect& rect, WXHDC hdc ) const
|
||||
wxMask *mask = new wxMask((WXHBITMAP) hbmpMask);
|
||||
ret.SetMask(mask);
|
||||
}
|
||||
#endif // !__WXMICROWIN__
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -1650,7 +1457,6 @@ wxMask::~wxMask()
|
||||
// Create a mask from a mono bitmap (copies the bitmap).
|
||||
bool wxMask::Create(const wxBitmap& bitmap)
|
||||
{
|
||||
#ifndef __WXMICROWIN__
|
||||
wxCHECK_MSG( bitmap.IsOk() && bitmap.GetDepth() == 1, false,
|
||||
wxT("can't create mask from invalid or not monochrome bitmap") );
|
||||
|
||||
@@ -1675,10 +1481,6 @@ bool wxMask::Create(const wxBitmap& bitmap)
|
||||
SelectObject(destDC, 0);
|
||||
DeleteDC(destDC);
|
||||
return true;
|
||||
#else
|
||||
wxUnusedVar(bitmap);
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
// Create a mask from a bitmap and a palette index indicating
|
||||
@@ -1710,7 +1512,6 @@ bool wxMask::Create(const wxBitmap& bitmap, int paletteIndex)
|
||||
// the transparent area
|
||||
bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
|
||||
{
|
||||
#ifndef __WXMICROWIN__
|
||||
wxCHECK_MSG( bitmap.IsOk(), false, wxT("invalid bitmap in wxMask::Create") );
|
||||
|
||||
if ( m_maskBitmap )
|
||||
@@ -1771,11 +1572,6 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
|
||||
::DeleteDC(destDC);
|
||||
|
||||
return ok;
|
||||
#else // __WXMICROWIN__
|
||||
wxUnusedVar(bitmap);
|
||||
wxUnusedVar(colour);
|
||||
return false;
|
||||
#endif // __WXMICROWIN__/!__WXMICROWIN__
|
||||
}
|
||||
|
||||
wxBitmap wxMask::GetBitmap() const
|
||||
@@ -1959,7 +1755,6 @@ HCURSOR wxBitmapToHCURSOR(const wxBitmap& bmp, int hotSpotX, int hotSpotY)
|
||||
|
||||
HBITMAP wxInvertMask(HBITMAP hbmpMask, int w, int h)
|
||||
{
|
||||
#ifndef __WXMICROWIN__
|
||||
wxCHECK_MSG( hbmpMask, 0, wxT("invalid bitmap in wxInvertMask") );
|
||||
|
||||
// get width/height from the bitmap if not given
|
||||
@@ -2001,7 +1796,4 @@ HBITMAP wxInvertMask(HBITMAP hbmpMask, int w, int h)
|
||||
::DeleteDC(hdcDst);
|
||||
|
||||
return hbmpInvMask;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
@@ -148,7 +148,7 @@ void wxBrushRefData::Free()
|
||||
}
|
||||
}
|
||||
|
||||
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if !defined(__WXWINCE__)
|
||||
|
||||
static int TranslateHatchStyle(int style)
|
||||
{
|
||||
@@ -164,16 +164,16 @@ static int TranslateHatchStyle(int style)
|
||||
}
|
||||
}
|
||||
|
||||
#endif // !__WXMICROWIN__ && !__WXWINCE__
|
||||
#endif // !__WXWINCE__
|
||||
|
||||
HBRUSH wxBrushRefData::GetHBRUSH()
|
||||
{
|
||||
if ( !m_hBrush )
|
||||
{
|
||||
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if !defined(__WXWINCE__)
|
||||
int hatchStyle = TranslateHatchStyle(m_style);
|
||||
if ( hatchStyle == -1 )
|
||||
#endif // !__WXMICROWIN__ && !__WXWINCE__
|
||||
#endif // !__WXWINCE__
|
||||
{
|
||||
switch ( m_style )
|
||||
{
|
||||
|
@@ -39,12 +39,6 @@
|
||||
#include "wx/msw/private.h"
|
||||
#include "wx/msw/missing.h" // IDC_HAND
|
||||
|
||||
// define functions missing in MicroWin
|
||||
#ifdef __WXMICROWIN__
|
||||
static inline void DestroyCursor(HCURSOR) { }
|
||||
static inline void SetCursor(HCURSOR) { }
|
||||
#endif // __WXMICROWIN__
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// private classes
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -217,15 +211,6 @@ wxCursor::wxCursor(const wxImage& image)
|
||||
}
|
||||
#endif // wxUSE_IMAGE
|
||||
|
||||
// MicroWin doesn't have support needed for the other ctors
|
||||
#ifdef __WXMICROWIN__
|
||||
|
||||
wxCursor::InitFromStock(wxStockCursor WXUNUSED(cursor_type))
|
||||
{
|
||||
}
|
||||
|
||||
#else // !__WXMICROWIN__
|
||||
|
||||
wxCursor::wxCursor(const wxString& filename,
|
||||
wxBitmapType kind,
|
||||
int hotSpotX,
|
||||
@@ -411,8 +396,6 @@ void wxCursor::InitFromStock(wxStockCursor idCursor)
|
||||
}
|
||||
}
|
||||
|
||||
#endif // __WXMICROWIN__/!__WXMICROWIN__
|
||||
|
||||
wxCursor::~wxCursor()
|
||||
{
|
||||
}
|
||||
|
116
src/msw/dc.cpp
116
src/msw/dc.cpp
@@ -92,16 +92,6 @@ using namespace wxMSWImpl;
|
||||
#define MAKEROP4(fore,back) (DWORD)((((back) << 8) & 0xFF000000) | (fore))
|
||||
#endif
|
||||
|
||||
// apparently with MicroWindows it is possible that HDC is 0 so we have to
|
||||
// check for this ourselves
|
||||
#ifdef __WXMICROWIN__
|
||||
#define WXMICROWIN_CHECK_HDC if ( !GetHDC() ) return;
|
||||
#define WXMICROWIN_CHECK_HDC_RET(x) if ( !GetHDC() ) return x;
|
||||
#else
|
||||
#define WXMICROWIN_CHECK_HDC
|
||||
#define WXMICROWIN_CHECK_HDC_RET(x)
|
||||
#endif
|
||||
|
||||
wxIMPLEMENT_ABSTRACT_CLASS(wxMSWDCImpl, wxDCImpl);
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -565,8 +555,6 @@ void wxMSWDCImpl::SelectOldObjects(WXHDC dc)
|
||||
|
||||
void wxMSWDCImpl::UpdateClipBox()
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
RECT rect;
|
||||
::GetClipBox(GetHdc(), &rect);
|
||||
|
||||
@@ -599,8 +587,6 @@ void wxMSWDCImpl::SetClippingHrgn(WXHRGN hrgn)
|
||||
{
|
||||
wxCHECK_RET( hrgn, wxT("invalid clipping region") );
|
||||
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
// note that we combine the new clipping region with the existing one: this
|
||||
// is compatible with what the other ports do and is the documented
|
||||
// behaviour now (starting with 2.3.3)
|
||||
@@ -669,8 +655,6 @@ void wxMSWDCImpl::DoSetDeviceClippingRegion(const wxRegion& region)
|
||||
|
||||
void wxMSWDCImpl::DestroyClippingRegion()
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
if (m_clipping && m_hDC)
|
||||
{
|
||||
#if 1
|
||||
@@ -705,21 +689,14 @@ bool wxMSWDCImpl::CanDrawBitmap() const
|
||||
|
||||
bool wxMSWDCImpl::CanGetTextExtent() const
|
||||
{
|
||||
#ifdef __WXMICROWIN__
|
||||
// TODO Extend MicroWindows' GetDeviceCaps function
|
||||
return true;
|
||||
#else
|
||||
// What sort of display is it?
|
||||
int technology = ::GetDeviceCaps(GetHdc(), TECHNOLOGY);
|
||||
|
||||
return (technology == DT_RASDISPLAY) || (technology == DT_RASPRINTER);
|
||||
#endif
|
||||
}
|
||||
|
||||
int wxMSWDCImpl::GetDepth() const
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC_RET(16)
|
||||
|
||||
return (int)::GetDeviceCaps(GetHdc(), BITSPIXEL);
|
||||
}
|
||||
|
||||
@@ -729,8 +706,6 @@ int wxMSWDCImpl::GetDepth() const
|
||||
|
||||
void wxMSWDCImpl::Clear()
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
RECT rect;
|
||||
if (m_window)
|
||||
{
|
||||
@@ -771,8 +746,6 @@ bool wxMSWDCImpl::DoFloodFill(wxCoord WXUNUSED_IN_WINCE(x),
|
||||
#ifdef __WXWINCE__
|
||||
return false;
|
||||
#else
|
||||
WXMICROWIN_CHECK_HDC_RET(false)
|
||||
|
||||
bool success = (0 != ::ExtFloodFill(GetHdc(), XLOG2DEV(x), YLOG2DEV(y),
|
||||
col.GetPixel(),
|
||||
style == wxFLOOD_SURFACE ? FLOODFILLSURFACE
|
||||
@@ -802,8 +775,6 @@ bool wxMSWDCImpl::DoFloodFill(wxCoord WXUNUSED_IN_WINCE(x),
|
||||
|
||||
bool wxMSWDCImpl::DoGetPixel(wxCoord x, wxCoord y, wxColour *col) const
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC_RET(false)
|
||||
|
||||
wxCHECK_MSG( col, false, wxT("NULL colour parameter in wxMSWDCImpl::GetPixel") );
|
||||
|
||||
// get the color of the pixel
|
||||
@@ -816,8 +787,6 @@ bool wxMSWDCImpl::DoGetPixel(wxCoord x, wxCoord y, wxColour *col) const
|
||||
|
||||
void wxMSWDCImpl::DoCrossHair(wxCoord x, wxCoord y)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
wxCoord x1 = x-VIEWPORT_EXTENT;
|
||||
wxCoord y1 = y-VIEWPORT_EXTENT;
|
||||
wxCoord x2 = x+VIEWPORT_EXTENT;
|
||||
@@ -832,8 +801,6 @@ void wxMSWDCImpl::DoCrossHair(wxCoord x, wxCoord y)
|
||||
|
||||
void wxMSWDCImpl::DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
wxDrawLine(GetHdc(), XLOG2DEV(x1), YLOG2DEV(y1), XLOG2DEV(x2), YLOG2DEV(y2));
|
||||
|
||||
CalcBoundingBox(x1, y1);
|
||||
@@ -860,8 +827,6 @@ void wxMSWDCImpl::DoDrawArc(wxCoord x1, wxCoord y1,
|
||||
DoDrawEllipticArcRot( xc-r, yc-r, 2*r, 2*r, sa, ea );
|
||||
#else
|
||||
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
wxBrushAttrsSetter cc(*this); // needed for wxSTIPPLE_MASK_OPAQUE handling
|
||||
|
||||
// treat the special case of full circle separately
|
||||
@@ -909,7 +874,7 @@ void wxMSWDCImpl::DoDrawCheckMark(wxCoord x1, wxCoord y1,
|
||||
wxCoord width, wxCoord height)
|
||||
{
|
||||
// cases when we don't have DrawFrameControl()
|
||||
#if defined(__SYMANTEC__) || defined(__WXMICROWIN__)
|
||||
#if defined(__SYMANTEC__)
|
||||
return wxDCBase::DoDrawCheckMark(x1, y1, width, height);
|
||||
#else // normal case
|
||||
wxCoord x2 = x1 + width,
|
||||
@@ -929,13 +894,11 @@ void wxMSWDCImpl::DoDrawCheckMark(wxCoord x1, wxCoord y1,
|
||||
|
||||
CalcBoundingBox(x1, y1);
|
||||
CalcBoundingBox(x2, y2);
|
||||
#endif // Microwin/Normal
|
||||
#endif // Normal
|
||||
}
|
||||
|
||||
void wxMSWDCImpl::DoDrawPoint(wxCoord x, wxCoord y)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
COLORREF color = 0x00ffffff;
|
||||
if (m_pen.IsOk())
|
||||
{
|
||||
@@ -953,8 +916,6 @@ void wxMSWDCImpl::DoDrawPolygon(int n,
|
||||
wxCoord yoffset,
|
||||
wxPolygonFillMode WXUNUSED_IN_WINCE(fillStyle))
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
wxBrushAttrsSetter cc(*this); // needed for wxSTIPPLE_MASK_OPAQUE handling
|
||||
|
||||
// Do things less efficiently if we have offsets
|
||||
@@ -1005,8 +966,6 @@ wxMSWDCImpl::DoDrawPolyPolygon(int n,
|
||||
#ifdef __WXWINCE__
|
||||
wxDCImpl::DoDrawPolyPolygon(n, count, points, xoffset, yoffset, fillStyle);
|
||||
#else
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
wxBrushAttrsSetter cc(*this); // needed for wxSTIPPLE_MASK_OPAQUE handling
|
||||
int i, cnt;
|
||||
for (i = cnt = 0; i < n; i++)
|
||||
@@ -1051,8 +1010,6 @@ wxMSWDCImpl::DoDrawPolyPolygon(int n,
|
||||
|
||||
void wxMSWDCImpl::DoDrawLines(int n, const wxPoint points[], wxCoord xoffset, wxCoord yoffset)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
// Do things less efficiently if we have offsets
|
||||
if (xoffset != 0 || yoffset != 0)
|
||||
{
|
||||
@@ -1080,8 +1037,6 @@ void wxMSWDCImpl::DoDrawLines(int n, const wxPoint points[], wxCoord xoffset, wx
|
||||
|
||||
void wxMSWDCImpl::DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
wxBrushAttrsSetter cc(*this); // needed for wxSTIPPLE_MASK_OPAQUE handling
|
||||
|
||||
wxCoord x2 = x + width;
|
||||
@@ -1117,8 +1072,6 @@ void wxMSWDCImpl::DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord h
|
||||
|
||||
void wxMSWDCImpl::DoDrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height, double radius)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
wxBrushAttrsSetter cc(*this); // needed for wxSTIPPLE_MASK_OPAQUE handling
|
||||
|
||||
// Now, a negative radius value is interpreted to mean
|
||||
@@ -1151,8 +1104,6 @@ void wxMSWDCImpl::DoDrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord width, wx
|
||||
|
||||
void wxMSWDCImpl::DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
wxBrushAttrsSetter cc(*this); // needed for wxSTIPPLE_MASK_OPAQUE handling
|
||||
|
||||
// +1 below makes the ellipse more similar to other platforms.
|
||||
@@ -1186,8 +1137,6 @@ void wxMSWDCImpl::DoDrawSpline(const wxPointList *points)
|
||||
// B2 = (2*P1 + P2)/3
|
||||
// B3 = P2
|
||||
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
wxASSERT_MSG( points, wxT("NULL pointer to spline points?") );
|
||||
|
||||
const size_t n_points = points->GetCount();
|
||||
@@ -1270,8 +1219,6 @@ void wxMSWDCImpl::DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoord h,doub
|
||||
DoDrawEllipticArcRot( x, y, w, h, sa, ea );
|
||||
#else
|
||||
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
wxBrushAttrsSetter cc(*this); // needed for wxSTIPPLE_MASK_OPAQUE handling
|
||||
|
||||
wxCoord x2 = x + w;
|
||||
@@ -1316,8 +1263,6 @@ void wxMSWDCImpl::DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoord h,doub
|
||||
|
||||
void wxMSWDCImpl::DoDrawIcon(const wxIcon& icon, wxCoord x, wxCoord y)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
wxCHECK_RET( icon.IsOk(), wxT("invalid icon in DrawIcon") );
|
||||
|
||||
// Check if we are printing: notice that it's not enough to just check for
|
||||
@@ -1343,8 +1288,6 @@ void wxMSWDCImpl::DoDrawIcon(const wxIcon& icon, wxCoord x, wxCoord y)
|
||||
|
||||
void wxMSWDCImpl::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask )
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
wxCHECK_RET( bmp.IsOk(), wxT("invalid bitmap in wxMSWDCImpl::DrawBitmap") );
|
||||
|
||||
int width = bmp.GetWidth(),
|
||||
@@ -1490,8 +1433,6 @@ void wxMSWDCImpl::DoDrawText(const wxString& text, wxCoord x, wxCoord y)
|
||||
return;
|
||||
}
|
||||
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
// prepare for drawing the text
|
||||
wxTextColoursChanger textCol(GetHdc(), *this);
|
||||
|
||||
@@ -1520,8 +1461,6 @@ void wxMSWDCImpl::DoDrawRotatedText(const wxString& text,
|
||||
wxCoord x, wxCoord y,
|
||||
double angle)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
// we test that we have some font because otherwise we should still use the
|
||||
// "else" part below to avoid that DrawRotatedText(angle = 180) and
|
||||
// DrawRotatedText(angle = 0) use different fonts (we can't use the default
|
||||
@@ -1534,7 +1473,6 @@ void wxMSWDCImpl::DoDrawRotatedText(const wxString& text,
|
||||
return;
|
||||
}
|
||||
|
||||
#ifndef __WXMICROWIN__
|
||||
// NB: don't take DEFAULT_GUI_FONT (a.k.a. wxSYS_DEFAULT_GUI_FONT)
|
||||
// because it's not TrueType and so can't have non zero
|
||||
// orientation/escapement under Win9x
|
||||
@@ -1597,7 +1535,6 @@ void wxMSWDCImpl::DoDrawRotatedText(const wxString& text,
|
||||
y += (wxCoord)(h*cos(rad));
|
||||
CalcBoundingBox(x, y);
|
||||
CalcBoundingBox(x + wxCoord(w*cos(rad)), y - wxCoord(w*sin(rad)));
|
||||
#endif
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -1608,8 +1545,6 @@ void wxMSWDCImpl::DoDrawRotatedText(const wxString& text,
|
||||
|
||||
void wxMSWDCImpl::DoSelectPalette(bool realize)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
// Set the old object temporarily, in case the assignment deletes an object
|
||||
// that's not yet selected out.
|
||||
if (m_oldPalette)
|
||||
@@ -1663,8 +1598,6 @@ void wxMSWDCImpl::InitializePalette()
|
||||
|
||||
void wxMSWDCImpl::SetFont(const wxFont& font)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
if ( font == m_font )
|
||||
return;
|
||||
|
||||
@@ -1701,8 +1634,6 @@ void wxMSWDCImpl::SetFont(const wxFont& font)
|
||||
|
||||
void wxMSWDCImpl::SetPen(const wxPen& pen)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
if ( pen == m_pen )
|
||||
return;
|
||||
|
||||
@@ -1739,8 +1670,6 @@ void wxMSWDCImpl::SetPen(const wxPen& pen)
|
||||
|
||||
void wxMSWDCImpl::SetBrush(const wxBrush& brush)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
if ( brush == m_brush )
|
||||
return;
|
||||
|
||||
@@ -1801,8 +1730,6 @@ void wxMSWDCImpl::SetBrush(const wxBrush& brush)
|
||||
|
||||
void wxMSWDCImpl::SetBackground(const wxBrush& brush)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
m_backgroundBrush = brush;
|
||||
|
||||
if ( m_backgroundBrush.IsOk() )
|
||||
@@ -1813,8 +1740,6 @@ void wxMSWDCImpl::SetBackground(const wxBrush& brush)
|
||||
|
||||
void wxMSWDCImpl::SetBackgroundMode(int mode)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
m_backgroundMode = mode;
|
||||
|
||||
// SetBackgroundColour now only refers to text background
|
||||
@@ -1823,8 +1748,6 @@ void wxMSWDCImpl::SetBackgroundMode(int mode)
|
||||
|
||||
void wxMSWDCImpl::SetLogicalFunction(wxRasterOperationMode function)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
m_logicalFunction = function;
|
||||
|
||||
SetRop(m_hDC);
|
||||
@@ -1887,8 +1810,6 @@ void wxMSWDCImpl::EndPage()
|
||||
|
||||
wxCoord wxMSWDCImpl::GetCharHeight() const
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC_RET(0)
|
||||
|
||||
TEXTMETRIC lpTextMetric;
|
||||
|
||||
GetTextMetrics(GetHdc(), &lpTextMetric);
|
||||
@@ -1898,8 +1819,6 @@ wxCoord wxMSWDCImpl::GetCharHeight() const
|
||||
|
||||
wxCoord wxMSWDCImpl::GetCharWidth() const
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC_RET(0)
|
||||
|
||||
TEXTMETRIC lpTextMetric;
|
||||
|
||||
GetTextMetrics(GetHdc(), &lpTextMetric);
|
||||
@@ -1936,17 +1855,6 @@ void wxMSWDCImpl::DoGetTextExtent(const wxString& string, wxCoord *x, wxCoord *y
|
||||
wxCoord *descent, wxCoord *externalLeading,
|
||||
const wxFont *font) const
|
||||
{
|
||||
#ifdef __WXMICROWIN__
|
||||
if (!GetHDC())
|
||||
{
|
||||
if (x) *x = 0;
|
||||
if (y) *y = 0;
|
||||
if (descent) *descent = 0;
|
||||
if (externalLeading) *externalLeading = 0;
|
||||
return;
|
||||
}
|
||||
#endif // __WXMICROWIN__
|
||||
|
||||
wxASSERT_MSG( !font || font->IsOk(), wxT("invalid font in wxMSWDCImpl::GetTextExtent") );
|
||||
|
||||
wxTextMeasure txm(GetOwner(), font);
|
||||
@@ -2023,8 +1931,6 @@ void wxMSWDCImpl::RealizeScaleAndOrigin()
|
||||
|
||||
void wxMSWDCImpl::SetMapMode(wxMappingMode mode)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
m_mappingMode = mode;
|
||||
|
||||
if ( mode == wxMM_TEXT )
|
||||
@@ -2082,8 +1988,6 @@ void wxMSWDCImpl::SetMapMode(wxMappingMode mode)
|
||||
|
||||
void wxMSWDCImpl::SetUserScale(double x, double y)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
if ( x == m_userScaleX && y == m_userScaleY )
|
||||
return;
|
||||
|
||||
@@ -2095,8 +1999,6 @@ void wxMSWDCImpl::SetUserScale(double x, double y)
|
||||
void wxMSWDCImpl::SetAxisOrientation(bool xLeftRight,
|
||||
bool yBottomUp)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
int signX = xLeftRight ? 1 : -1,
|
||||
signY = yBottomUp ? -1 : 1;
|
||||
|
||||
@@ -2110,8 +2012,6 @@ void wxMSWDCImpl::SetAxisOrientation(bool xLeftRight,
|
||||
|
||||
void wxMSWDCImpl::SetLogicalOrigin(wxCoord x, wxCoord y)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
if ( x == m_logicalOriginX && y == m_logicalOriginY )
|
||||
return;
|
||||
|
||||
@@ -2123,8 +2023,6 @@ void wxMSWDCImpl::SetLogicalOrigin(wxCoord x, wxCoord y)
|
||||
// For use by wxWidgets only, unless custom units are required.
|
||||
void wxMSWDCImpl::SetLogicalScale(double x, double y)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
wxDCImpl::SetLogicalScale(x,y);
|
||||
|
||||
RealizeScaleAndOrigin();
|
||||
@@ -2132,8 +2030,6 @@ void wxMSWDCImpl::SetLogicalScale(double x, double y)
|
||||
|
||||
void wxMSWDCImpl::SetDeviceOrigin(wxCoord x, wxCoord y)
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
if ( x == m_deviceOriginX && y == m_deviceOriginY )
|
||||
return;
|
||||
|
||||
@@ -2238,8 +2134,6 @@ bool wxMSWDCImpl::DoStretchBlit(wxCoord xdest, wxCoord ydest,
|
||||
{
|
||||
wxCHECK_MSG( source, false, wxT("wxMSWDCImpl::Blit(): NULL wxDC pointer") );
|
||||
|
||||
WXMICROWIN_CHECK_HDC_RET(false)
|
||||
|
||||
wxMSWDCImpl *implSrc = wxDynamicCast( source->GetImpl(), wxMSWDCImpl );
|
||||
if ( !implSrc )
|
||||
{
|
||||
@@ -2547,8 +2441,6 @@ bool wxMSWDCImpl::DoStretchBlit(wxCoord xdest, wxCoord ydest,
|
||||
|
||||
void wxMSWDCImpl::GetDeviceSize(int *width, int *height) const
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
if ( width )
|
||||
*width = ::GetDeviceCaps(GetHdc(), HORZRES);
|
||||
if ( height )
|
||||
@@ -2557,8 +2449,6 @@ void wxMSWDCImpl::GetDeviceSize(int *width, int *height) const
|
||||
|
||||
void wxMSWDCImpl::DoGetSizeMM(int *w, int *h) const
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC
|
||||
|
||||
// if we implement it in terms of DoGetSize() instead of directly using the
|
||||
// results returned by GetDeviceCaps(HORZ/VERTSIZE) as was done before, it
|
||||
// will also work for wxWindowDC and wxClientDC even though their size is
|
||||
@@ -2587,8 +2477,6 @@ void wxMSWDCImpl::DoGetSizeMM(int *w, int *h) const
|
||||
|
||||
wxSize wxMSWDCImpl::GetPPI() const
|
||||
{
|
||||
WXMICROWIN_CHECK_HDC_RET(wxSize(0,0))
|
||||
|
||||
int x = ::GetDeviceCaps(GetHdc(), LOGPIXELSX);
|
||||
int y = ::GetDeviceCaps(GetHdc(), LOGPIXELSY);
|
||||
|
||||
|
@@ -623,10 +623,6 @@ int wxDisplayFactoryMSW::GetFromWindow(const wxWindow *window)
|
||||
|
||||
void wxClientDisplayRect(int *x, int *y, int *width, int *height)
|
||||
{
|
||||
#if defined(__WXMICROWIN__)
|
||||
*x = 0; *y = 0;
|
||||
wxDisplaySize(width, height);
|
||||
#else
|
||||
// Determine the desktop dimensions minus the taskbar and any other
|
||||
// special decorations...
|
||||
RECT r;
|
||||
@@ -636,5 +632,4 @@ void wxClientDisplayRect(int *x, int *y, int *width, int *height)
|
||||
if (y) *y = r.top;
|
||||
if (width) *width = r.right - r.left;
|
||||
if (height) *height = r.bottom - r.top;
|
||||
#endif
|
||||
}
|
||||
|
@@ -93,10 +93,8 @@ private:
|
||||
// private functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#ifndef __WXMICROWIN__
|
||||
int CALLBACK wxFontEnumeratorProc(LPLOGFONT lplf, LPTEXTMETRIC lptm,
|
||||
DWORD dwStyle, LPARAM lParam);
|
||||
#endif
|
||||
|
||||
// ============================================================================
|
||||
// implementation
|
||||
@@ -145,7 +143,6 @@ bool wxFontEnumeratorHelper::SetEncoding(wxFontEncoding encoding)
|
||||
|
||||
void wxFontEnumeratorHelper::DoEnumerate()
|
||||
{
|
||||
#ifndef __WXMICROWIN__
|
||||
HDC hDC = ::GetDC(NULL);
|
||||
|
||||
#ifdef __WXWINCE__
|
||||
@@ -163,7 +160,6 @@ void wxFontEnumeratorHelper::DoEnumerate()
|
||||
#endif // WinCE/!WinCE
|
||||
|
||||
::ReleaseDC(NULL, hDC);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool wxFontEnumeratorHelper::OnFont(const LPLOGFONT lf,
|
||||
@@ -266,7 +262,6 @@ bool wxFontEnumerator::EnumerateEncodings(const wxString& facename)
|
||||
// Windows callbacks
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#ifndef __WXMICROWIN__
|
||||
int CALLBACK wxFontEnumeratorProc(LPLOGFONT lplf, LPTEXTMETRIC lptm,
|
||||
DWORD WXUNUSED(dwStyle), LPARAM lParam)
|
||||
{
|
||||
@@ -286,6 +281,5 @@ int CALLBACK wxFontEnumeratorProc(LPLOGFONT lplf, LPTEXTMETRIC lptm,
|
||||
|
||||
return fontEnum->OnFont(lplf, lptm);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // wxUSE_FONTENUM
|
||||
|
@@ -201,7 +201,6 @@ wxFontEncoding wxGetFontEncFromCharSet(int cs)
|
||||
fontEncoding = wxFONTENCODING_MAX;
|
||||
break;
|
||||
|
||||
#if !defined(__WXMICROWIN__)
|
||||
case EASTEUROPE_CHARSET:
|
||||
fontEncoding = wxFONTENCODING_CP1250;
|
||||
break;
|
||||
@@ -262,8 +261,6 @@ wxFontEncoding wxGetFontEncFromCharSet(int cs)
|
||||
fontEncoding = wxFONTENCODING_MACROMAN;
|
||||
break;
|
||||
|
||||
#endif // Win32
|
||||
|
||||
case OEM_CHARSET:
|
||||
fontEncoding = wxFONTENCODING_CP437;
|
||||
break;
|
||||
|
@@ -462,7 +462,7 @@ void wxFrame::AttachMenuBar(wxMenuBar *menubar)
|
||||
|
||||
void wxFrame::InternalSetMenuBar()
|
||||
{
|
||||
#if defined(__WXMICROWIN__) || defined(__WXWINCE__)
|
||||
#if defined(__WXWINCE__)
|
||||
// Nothing
|
||||
#else
|
||||
if ( !::SetMenu(GetHwnd(), (HMENU)m_hMenu) )
|
||||
@@ -564,7 +564,7 @@ void wxFrame::OnSysColourChanged(wxSysColourChangedEvent& event)
|
||||
bool wxFrame::ShowFullScreen(bool show, long style)
|
||||
{
|
||||
// TODO-CE: add support for CE
|
||||
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if !defined(__WXWINCE__)
|
||||
if ( IsFullScreen() == show )
|
||||
return false;
|
||||
|
||||
@@ -637,7 +637,7 @@ bool wxFrame::ShowFullScreen(bool show, long style)
|
||||
}
|
||||
#endif // wxUSE_STATUSBAR
|
||||
}
|
||||
#endif // !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#endif // !defined(__WXWINCE__)
|
||||
|
||||
return wxFrameBase::ShowFullScreen(show, style);
|
||||
}
|
||||
@@ -848,7 +848,7 @@ bool wxFrame::MSWDoTranslateMessage(wxFrame *frame, WXMSG *pMsg)
|
||||
|
||||
bool wxFrame::HandleSize(int WXUNUSED(x), int WXUNUSED(y), WXUINT id)
|
||||
{
|
||||
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if !defined(__WXWINCE__)
|
||||
switch ( id )
|
||||
{
|
||||
case SIZE_RESTORED:
|
||||
@@ -1001,7 +1001,7 @@ WXLRESULT wxFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lPara
|
||||
}
|
||||
break;
|
||||
|
||||
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if !defined(__WXWINCE__)
|
||||
case WM_QUERYDRAGICON:
|
||||
{
|
||||
const wxIcon& icon = GetIcon();
|
||||
@@ -1011,7 +1011,7 @@ WXLRESULT wxFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lPara
|
||||
processed = rc != 0;
|
||||
}
|
||||
break;
|
||||
#endif // !__WXMICROWIN__
|
||||
#endif // !__WXWINCE__
|
||||
}
|
||||
#if wxUSE_TASKBARBUTTON
|
||||
if ( message == wxMsgTaskbarButtonCreated )
|
||||
|
@@ -64,8 +64,6 @@ WX_DEFINE_LIST(wxGDIImageHandlerList)
|
||||
// private classes
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#ifndef __WXMICROWIN__
|
||||
|
||||
// all image handlers are declared/defined in this file because the outside
|
||||
// world doesn't have to know about them (but only about wxBITMAP_TYPE_XXX ids)
|
||||
|
||||
@@ -221,8 +219,6 @@ wxIMPLEMENT_DYNAMIC_CLASS(wxPNGResourceHandler, wxBitmapHandler);
|
||||
// private functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#endif
|
||||
// __MICROWIN__
|
||||
|
||||
// ============================================================================
|
||||
// implementation
|
||||
@@ -338,7 +334,6 @@ void wxGDIImage::CleanUpHandlers()
|
||||
|
||||
void wxGDIImage::InitStandardHandlers()
|
||||
{
|
||||
#ifndef __WXMICROWIN__
|
||||
AddHandler(new wxBMPResourceHandler);
|
||||
AddHandler(new wxBMPFileHandler);
|
||||
AddHandler(new wxICOFileHandler);
|
||||
@@ -346,11 +341,8 @@ void wxGDIImage::InitStandardHandlers()
|
||||
#if wxUSE_PNG_RESOURCE_HANDLER
|
||||
AddHandler(new wxPNGResourceHandler);
|
||||
#endif // wxUSE_PNG_RESOURCE_HANDLER
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef __WXMICROWIN__
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxBitmap handlers
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -688,5 +680,3 @@ wxSize wxGetHiconSize(HICON WXUNUSED_IN_WINCE(hicon))
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
#endif // __WXMICROWIN__
|
||||
|
@@ -49,7 +49,7 @@
|
||||
|
||||
#include "wx/msw/private.h" // needs to be before #include <commdlg.h>
|
||||
|
||||
#if wxUSE_COMMON_DIALOGS && !defined(__WXMICROWIN__)
|
||||
#if wxUSE_COMMON_DIALOGS
|
||||
#include <commdlg.h>
|
||||
#endif
|
||||
|
||||
|
@@ -52,9 +52,7 @@ void wxIconRefData::Free()
|
||||
{
|
||||
if ( m_hIcon )
|
||||
{
|
||||
#ifndef __WXMICROWIN__
|
||||
::DestroyIcon((HICON) m_hIcon);
|
||||
#endif
|
||||
|
||||
m_hIcon = 0;
|
||||
}
|
||||
@@ -113,7 +111,6 @@ wxObjectRefData *wxIcon::CloneRefData(const wxObjectRefData *dataOrig) const
|
||||
|
||||
void wxIcon::CopyFromBitmap(const wxBitmap& bmp)
|
||||
{
|
||||
#ifndef __WXMICROWIN__
|
||||
HICON hicon = wxBitmapToHICON(bmp);
|
||||
if ( !hicon )
|
||||
{
|
||||
@@ -124,7 +121,6 @@ void wxIcon::CopyFromBitmap(const wxBitmap& bmp)
|
||||
SetHICON((WXHICON)hicon);
|
||||
SetSize(bmp.GetWidth(), bmp.GetHeight());
|
||||
}
|
||||
#endif // __WXMICROWIN__
|
||||
}
|
||||
|
||||
void wxIcon::CreateIconFromXpm(const char* const* data)
|
||||
|
@@ -54,10 +54,6 @@
|
||||
#define DllMain DllEntryPoint
|
||||
#endif // __BORLANDC__
|
||||
|
||||
#if defined(__WXMICROWIN__)
|
||||
#define HINSTANCE HANDLE
|
||||
#endif
|
||||
|
||||
// defined in common/init.cpp
|
||||
extern int wxEntryReal(int& argc, wxChar **argv);
|
||||
extern int wxEntryCleanupReal(int& argc, wxChar **argv);
|
||||
|
@@ -1,364 +0,0 @@
|
||||
/*
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: src/msw/microwin.cpp
|
||||
// Purpose: Extra implementation for MicroWindows
|
||||
// Author: Julian Smart
|
||||
// Created: 2001-05-31
|
||||
// Copyright: (c) Julian Smart
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
*/
|
||||
|
||||
#include "mwtypes.h"
|
||||
#include "windows.h"
|
||||
#include "wintern.h"
|
||||
#include "device.h"
|
||||
#include "wx/msw/microwin.h"
|
||||
|
||||
void GdMoveCursor(MWCOORD x, MWCOORD y);
|
||||
void MwSetCursor(HWND wp, PMWCURSOR pcursor);
|
||||
|
||||
BOOL SetCursorPos(int x, int y)
|
||||
{
|
||||
GdMoveCursor(x, y);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
HCURSOR SetCursor(HCURSOR hCursor)
|
||||
{
|
||||
/* TODO */
|
||||
return 0;
|
||||
}
|
||||
|
||||
int GetScrollPosWX (HWND hWnd, int iSBar)
|
||||
{
|
||||
int pos = 0;
|
||||
if (GetScrollPos(hWnd, iSBar, & pos))
|
||||
return pos;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL ScrollWindow(HWND hWnd, int xAmount, int yAmount,
|
||||
CONST RECT* lpRect, CONST RECT* lpClipRect)
|
||||
{
|
||||
/* TODO */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
HWND WindowFromPoint(POINT pt)
|
||||
{
|
||||
/* TODO */
|
||||
return 0;
|
||||
}
|
||||
|
||||
SHORT GetKeyState(int nVirtKey)
|
||||
{
|
||||
/* TODO */
|
||||
return 0;
|
||||
}
|
||||
|
||||
HWND SetParent(HWND hWndChild, HWND hWndNewParent)
|
||||
{
|
||||
/* TODO */
|
||||
return 0;
|
||||
}
|
||||
|
||||
VOID DragAcceptFiles(HWND hWnd, BOOL b)
|
||||
{
|
||||
/* TODO */
|
||||
}
|
||||
|
||||
BOOL IsDialogMessage(HWND hWnd, MSG* msg)
|
||||
{
|
||||
/* TODO */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
DWORD GetMessagePos(VOID)
|
||||
{
|
||||
/* TODO */
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL IsIconic(HWND hWnd)
|
||||
{
|
||||
/* TODO */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int SetMapMode(HDC hDC, wxMappingMode mode)
|
||||
{
|
||||
return MM_TEXT;
|
||||
}
|
||||
|
||||
wxMappingMode GetMapMode(HDC hDC)
|
||||
{
|
||||
return MM_TEXT;
|
||||
}
|
||||
|
||||
HCURSOR LoadCursor(HINSTANCE hInst, int cursor)
|
||||
{
|
||||
/* TODO */
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD GetModuleFileName(HINSTANCE hInst, LPSTR name, DWORD sz)
|
||||
{
|
||||
/* TODO */
|
||||
name[0] = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
VOID DestroyIcon(HICON hIcon)
|
||||
{
|
||||
/* TODO */
|
||||
}
|
||||
|
||||
COLORREF GetTextColor(HDC hdc)
|
||||
{
|
||||
if (!hdc)
|
||||
return CLR_INVALID;
|
||||
return hdc->textcolor ;
|
||||
}
|
||||
|
||||
COLORREF GetBkColor(HDC hdc)
|
||||
{
|
||||
if (!hdc)
|
||||
return CLR_INVALID;
|
||||
return hdc->bkcolor ;
|
||||
}
|
||||
|
||||
HPALETTE SelectPalette(HDC hdc, HPALETTE hPalette, BOOL b)
|
||||
{
|
||||
/* TODO */
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL IntersectClipRect(HDC hdc, int x, int y,
|
||||
int right, int bottom)
|
||||
{
|
||||
/* TODO */
|
||||
HRGN rgn = CreateRectRgn(x, y, right, bottom);
|
||||
|
||||
BOOL ret = (ExtSelectClipRgn(hdc, rgn, RGN_AND) != ERROR);
|
||||
DeleteObject(rgn);
|
||||
return ret;
|
||||
}
|
||||
|
||||
BOOL GetClipBox(HDC hdc, RECT* rect)
|
||||
{
|
||||
MWCLIPREGION* r;
|
||||
MWRECT mwrect;
|
||||
|
||||
if (!hdc->region)
|
||||
return FALSE;
|
||||
|
||||
r = ((MWRGNOBJ*) hdc->region)->rgn;
|
||||
GdGetRegionBox(r, & mwrect);
|
||||
rect->left = mwrect.left;
|
||||
rect->top = mwrect.top;
|
||||
rect->right = mwrect.right;
|
||||
rect->bottom = mwrect.bottom;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL DrawIconEx(HDC hdc, int x, int y, HICON hIcon, int w, int h, UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags)
|
||||
{
|
||||
/* TODO */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL SetViewportExtEx(HDC hdc, int x, int y, LPSIZE lpSize)
|
||||
{
|
||||
/* TODO */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL SetViewportOrgEx(HDC hdc, int x, int y, LPPOINT lpPoint)
|
||||
{
|
||||
/* TODO */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL SetWindowExtEx(HDC hdc, int x, int y, LPSIZE lpSize)
|
||||
{
|
||||
/* TODO */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL SetWindowOrgEx(HDC hdc, int x, int y, LPPOINT lpSize)
|
||||
{
|
||||
/* TODO */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL ExtFloodFill(HDC hdc, int x, int y, COLORREF col, UINT flags)
|
||||
{
|
||||
/* TODO */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int SetPolyFillMode(HDC hdc, int mode)
|
||||
{
|
||||
/* TODO */
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL RoundRect(HDC hdc, int left, int top, int right, int bottom, int r1, int r2)
|
||||
{
|
||||
/* TODO */
|
||||
return Rectangle(hdc, left, top, right, bottom);
|
||||
}
|
||||
|
||||
BOOL MaskBlt(HDC hdc, int x, int y, int w, int h,
|
||||
HDC hDCSource, int xSrc, int ySrc, HBITMAP hBitmapMask, int xMask, int yMask, DWORD rop)
|
||||
{
|
||||
/* TODO */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
UINT RealizePalette(HDC hDC)
|
||||
{
|
||||
/* TODO */
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL SetBrushOrgEx(HDC hdc, int xOrigin, int yOrigin, LPPOINT lpPoint)
|
||||
{
|
||||
/* TODO */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int GetObject(HGDIOBJ hObj, int sz, LPVOID logObj)
|
||||
{
|
||||
if (sz == sizeof(LOGFONT))
|
||||
{
|
||||
LOGFONT* logFont = (LOGFONT*) logObj;
|
||||
MWFONTINFO fi;
|
||||
HFONT hFont = (HFONT) hObj;
|
||||
|
||||
GdGetFontInfo(((MWFONTOBJ*) hFont)->pfont, &fi);
|
||||
|
||||
/* FIXME many items are guessed for the time being*/
|
||||
logFont->lfHeight = fi.height;
|
||||
|
||||
/* reversed for kaffe port
|
||||
logFont->tmAscent = fi.height - fi.baseline;
|
||||
logFont->tmDescent= fi.baseline;
|
||||
*/
|
||||
|
||||
logFont->lfWidth = fi.widths['x'];
|
||||
logFont->lfWeight = FW_NORMAL;
|
||||
logFont->lfEscapement = 0;
|
||||
logFont->lfOrientation = 0;
|
||||
logFont->lfOutPrecision = OUT_OUTLINE_PRECIS;
|
||||
logFont->lfClipPrecision = CLIP_DEFAULT_PRECIS;
|
||||
logFont->lfQuality = DEFAULT_QUALITY;
|
||||
logFont->lfItalic = 0;
|
||||
logFont->lfUnderline = 0;
|
||||
logFont->lfStrikeOut = 0;
|
||||
/* note that win32 has the TMPF_FIXED_PITCH flags REVERSED...*/
|
||||
logFont->lfPitchAndFamily = fi.fixed?
|
||||
FF_DONTCARE: (FF_DONTCARE | TMPF_FIXED_PITCH);
|
||||
logFont->lfCharSet = OEM_CHARSET;
|
||||
/* TODO I don't know how to get the font name. May
|
||||
* test for different font classes.
|
||||
*/
|
||||
logFont->lfFaceName[0] = 0;
|
||||
#if 0
|
||||
strncpy(logFont->lfFaceName, ??, sizeof(logFont->lfFaceName));
|
||||
#endif
|
||||
return sz;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Not in wingdi.c in earlier versions of MicroWindows */
|
||||
#if 0
|
||||
HBITMAP WINAPI
|
||||
CreateCompatibleBitmap(HDC hdc, int nWidth, int nHeight)
|
||||
{
|
||||
MWBITMAPOBJ *hbitmap;
|
||||
int size;
|
||||
int linelen;
|
||||
|
||||
if(!hdc)
|
||||
return NULL;
|
||||
|
||||
nWidth = MWMAX(nWidth, 1);
|
||||
nHeight = MWMAX(nHeight, 1);
|
||||
|
||||
/* calc memory allocation size and linelen from width and height*/
|
||||
if(!GdCalcMemGCAlloc(hdc->psd, nWidth, nHeight, 0, 0, &size, &linelen))
|
||||
return NULL;
|
||||
|
||||
/* allocate gdi object*/
|
||||
hbitmap = (MWBITMAPOBJ *)GdItemAlloc(sizeof(MWBITMAPOBJ)-1+size);
|
||||
if(!hbitmap)
|
||||
return NULL;
|
||||
hbitmap->hdr.type = OBJ_BITMAP;
|
||||
hbitmap->hdr.stockobj = FALSE;
|
||||
hbitmap->width = nWidth;
|
||||
hbitmap->height = nHeight;
|
||||
|
||||
/* create compatible with hdc*/
|
||||
hbitmap->planes = hdc->psd->planes;
|
||||
hbitmap->bpp = hdc->psd->bpp;
|
||||
hbitmap->linelen = linelen;
|
||||
hbitmap->size = size;
|
||||
|
||||
return (HBRUSH)hbitmap;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Attempt by JACS to create arbitrary bitmap
|
||||
* TODO: make use of lpData
|
||||
*/
|
||||
|
||||
HBITMAP WINAPI
|
||||
CreateBitmap( int nWidth, int nHeight, int nPlanes, int bPP, LPCVOID lpData)
|
||||
{
|
||||
MWBITMAPOBJ *hbitmap;
|
||||
int size;
|
||||
int linelen;
|
||||
|
||||
HDC hScreenDC;
|
||||
|
||||
hScreenDC = GetDC(NULL);
|
||||
|
||||
nWidth = MWMAX(nWidth, 1);
|
||||
nHeight = MWMAX(nHeight, 1);
|
||||
|
||||
/* calc memory allocation size and linelen from width and height*/
|
||||
if(!GdCalcMemGCAlloc(hScreenDC->psd, nWidth, nHeight, nPlanes, bPP, &size, &linelen))
|
||||
{
|
||||
ReleaseDC(NULL, hScreenDC);
|
||||
return NULL;
|
||||
}
|
||||
ReleaseDC(NULL, hScreenDC);
|
||||
|
||||
/* allocate gdi object*/
|
||||
hbitmap = (MWBITMAPOBJ *)GdItemAlloc(sizeof(MWBITMAPOBJ)-1+size);
|
||||
if(!hbitmap)
|
||||
return NULL;
|
||||
hbitmap->hdr.type = OBJ_BITMAP;
|
||||
hbitmap->hdr.stockobj = FALSE;
|
||||
hbitmap->width = nWidth;
|
||||
hbitmap->height = nHeight;
|
||||
|
||||
/* create with specified parameters */
|
||||
hbitmap->planes = nPlanes;
|
||||
hbitmap->bpp = bPP;
|
||||
hbitmap->linelen = linelen;
|
||||
hbitmap->size = size;
|
||||
|
||||
/* TODO: copy data */
|
||||
|
||||
return (HBRUSH)hbitmap;
|
||||
}
|
@@ -35,7 +35,7 @@
|
||||
#define M_PENDATA ((wxPenRefData*)m_refData)
|
||||
|
||||
// Win32 has ExtCreatePen() but WinCE doesn't
|
||||
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if !defined(__WXWINCE__)
|
||||
#define wxHAVE_EXT_CREATE_PEN
|
||||
#endif
|
||||
|
||||
|
@@ -48,7 +48,7 @@ public:
|
||||
|
||||
wxRegionRefData(const wxRegionRefData& data) : wxGDIRefData()
|
||||
{
|
||||
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if !defined(__WXWINCE__)
|
||||
DWORD noBytes = ::GetRegionData(data.m_region, 0, NULL);
|
||||
RGNDATA *rgnData = (RGNDATA*) new char[noBytes];
|
||||
::GetRegionData(data.m_region, noBytes, rgnData);
|
||||
@@ -120,7 +120,7 @@ wxRegion::wxRegion(const wxRect& rect)
|
||||
|
||||
wxRegion::wxRegion(size_t n, const wxPoint *points, wxPolygonFillMode fillStyle)
|
||||
{
|
||||
#if defined(__WXMICROWIN__) || defined(__WXWINCE__)
|
||||
#if defined(__WXWINCE__)
|
||||
wxUnusedVar(n);
|
||||
wxUnusedVar(points);
|
||||
wxUnusedVar(fillStyle);
|
||||
|
@@ -159,14 +159,7 @@ wxFont wxCreateFontFromStockObject(int index)
|
||||
{
|
||||
wxNativeFontInfo info;
|
||||
info.lf = lf;
|
||||
// Under MicroWindows we pass the HFONT as well
|
||||
// because it's hard to convert HFONT -> LOGFONT -> HFONT
|
||||
// It's OK to delete stock objects, the delete will be ignored.
|
||||
#ifdef __WXMICROWIN__
|
||||
font.Create(info, (WXHFONT) hFont);
|
||||
#else
|
||||
font.Create(info);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -335,10 +328,6 @@ static const int gs_metricsMap[] =
|
||||
// Get a system metric, e.g. scrollbar size
|
||||
int wxSystemSettingsNative::GetMetric(wxSystemMetric index, wxWindow* WXUNUSED(win))
|
||||
{
|
||||
#ifdef __WXMICROWIN__
|
||||
// TODO: probably use wxUniv themes functionality
|
||||
return 0;
|
||||
#else // !__WXMICROWIN__
|
||||
wxCHECK_MSG( index > 0 && (size_t)index < WXSIZEOF(gs_metricsMap), 0,
|
||||
wxT("invalid metric") );
|
||||
|
||||
@@ -363,7 +352,6 @@ int wxSystemSettingsNative::GetMetric(wxSystemMetric index, wxWindow* WXUNUSED(w
|
||||
}
|
||||
|
||||
return rc;
|
||||
#endif // __WXMICROWIN__/!__WXMICROWIN__
|
||||
}
|
||||
|
||||
bool wxSystemSettingsNative::HasFeature(wxSystemFeature index)
|
||||
|
@@ -63,17 +63,6 @@
|
||||
#define ICON_SMALL 0
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// stubs for missing functions under MicroWindows
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#ifdef __WXMICROWIN__
|
||||
|
||||
// static inline bool IsIconic(HWND WXUNUSED(hwnd)) { return false; }
|
||||
static inline bool IsZoomed(HWND WXUNUSED(hwnd)) { return false; }
|
||||
|
||||
#endif // __WXMICROWIN__
|
||||
|
||||
// NB: wxDlgProc must be defined here and not in dialog.cpp because the latter
|
||||
// is not included by wxUniv build which does need wxDlgProc
|
||||
LONG APIENTRY
|
||||
@@ -426,10 +415,6 @@ bool wxTopLevelWindowMSW::CreateDialog(const void *dlgTemplate,
|
||||
const wxPoint& pos,
|
||||
const wxSize& size)
|
||||
{
|
||||
#ifdef __WXMICROWIN__
|
||||
// no dialogs support under MicroWin yet
|
||||
return CreateFrame(title, pos, size);
|
||||
#else // !__WXMICROWIN__
|
||||
// static cast is valid as we're only ever called for dialogs
|
||||
wxWindow * const
|
||||
parent = static_cast<wxDialog *>(this)->GetParentForModalDialog();
|
||||
@@ -504,7 +489,6 @@ bool wxTopLevelWindowMSW::CreateDialog(const void *dlgTemplate,
|
||||
#endif
|
||||
|
||||
return true;
|
||||
#endif // __WXMICROWIN__/!__WXMICROWIN__
|
||||
}
|
||||
|
||||
bool wxTopLevelWindowMSW::CreateFrame(const wxString& title,
|
||||
@@ -1180,7 +1164,6 @@ void wxTopLevelWindowMSW::SetIcons(const wxIconBundle& icons)
|
||||
|
||||
bool wxTopLevelWindowMSW::EnableCloseButton(bool enable)
|
||||
{
|
||||
#if !defined(__WXMICROWIN__)
|
||||
// get system (a.k.a. window) menu
|
||||
HMENU hmenu = GetSystemMenu(GetHwnd(), FALSE /* get it */);
|
||||
if ( !hmenu )
|
||||
@@ -1207,7 +1190,6 @@ bool wxTopLevelWindowMSW::EnableCloseButton(bool enable)
|
||||
wxLogLastError(wxT("DrawMenuBar"));
|
||||
}
|
||||
#endif
|
||||
#endif // !__WXMICROWIN__
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@@ -56,7 +56,7 @@
|
||||
#include <winsock.h>
|
||||
#endif
|
||||
|
||||
#if !defined(__GNUWIN32__) && !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if !defined(__GNUWIN32__) && !defined(__WXWINCE__)
|
||||
#include <direct.h>
|
||||
|
||||
#include <dos.h>
|
||||
@@ -86,7 +86,7 @@
|
||||
#include <lm.h>
|
||||
#endif // USE_NET_API
|
||||
|
||||
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if !defined(__WXWINCE__)
|
||||
#ifndef __UNIX__
|
||||
#include <io.h>
|
||||
#endif
|
||||
@@ -106,7 +106,7 @@
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// In the WIN.INI file
|
||||
#if (!defined(USE_NET_API) && !defined(__WXWINCE__)) || defined(__WXMICROWIN__)
|
||||
#if (!defined(USE_NET_API) && !defined(__WXWINCE__))
|
||||
static const wxChar WX_SECTION[] = wxT("wxWindows");
|
||||
#endif
|
||||
|
||||
@@ -153,7 +153,7 @@ bool wxGetHostName(wxChar *buf, int maxSize)
|
||||
// get full hostname (with domain name if possible)
|
||||
bool wxGetFullHostName(wxChar *buf, int maxSize)
|
||||
{
|
||||
#if !defined( __WXMICROWIN__) && wxUSE_DYNLIB_CLASS && wxUSE_SOCKETS
|
||||
#if wxUSE_DYNLIB_CLASS && wxUSE_SOCKETS
|
||||
// TODO should use GetComputerNameEx() when available
|
||||
|
||||
// we don't want to always link with Winsock DLL as we might not use it at
|
||||
@@ -229,7 +229,7 @@ bool wxGetFullHostName(wxChar *buf, int maxSize)
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // !__WXMICROWIN__
|
||||
#endif // wxUSE_DYNLIB_CLASS && wxUSE_SOCKETS
|
||||
|
||||
return wxGetHostName(buf, maxSize);
|
||||
}
|
||||
@@ -1300,8 +1300,6 @@ wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin)
|
||||
|
||||
#if defined(__WXWINCE__)
|
||||
s_version.os = wxOS_WINDOWS_CE;
|
||||
#elif defined(__WXMICROWIN__)
|
||||
s_version.os = wxOS_WINDOWS_MICRO;
|
||||
#else // "normal" desktop Windows system, use run-time detection
|
||||
switch ( info.dwPlatformId )
|
||||
{
|
||||
@@ -1454,7 +1452,6 @@ extern WXDLLIMPEXP_BASE long wxEncodingToCharset(wxFontEncoding encoding)
|
||||
case wxFONTENCODING_CP1252:
|
||||
return ANSI_CHARSET;
|
||||
|
||||
#if !defined(__WXMICROWIN__)
|
||||
// The following four fonts are multi-byte charsets
|
||||
case wxFONTENCODING_CP932:
|
||||
return SHIFTJIS_CHARSET;
|
||||
@@ -1494,7 +1491,6 @@ extern WXDLLIMPEXP_BASE long wxEncodingToCharset(wxFontEncoding encoding)
|
||||
|
||||
case wxFONTENCODING_CP874:
|
||||
return THAI_CHARSET;
|
||||
#endif // !__WXMICROWIN__
|
||||
|
||||
case wxFONTENCODING_CP437:
|
||||
return OEM_CHARSET;
|
||||
|
@@ -45,7 +45,7 @@
|
||||
|
||||
#include <ctype.h>
|
||||
|
||||
#if !defined(__GNUWIN32__) && !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if !defined(__GNUWIN32__) && !defined(__WXWINCE__)
|
||||
#include <direct.h>
|
||||
#include <dos.h>
|
||||
#endif
|
||||
@@ -54,7 +54,7 @@
|
||||
#include <sys/stat.h>
|
||||
#endif
|
||||
|
||||
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if !defined(__WXWINCE__)
|
||||
#ifndef __UNIX__
|
||||
#include <io.h>
|
||||
#endif
|
||||
|
@@ -62,9 +62,7 @@ void wxBeginBusyCursor(const wxCursor *cursor)
|
||||
if ( gs_wxBusyCursorCount++ == 0 )
|
||||
{
|
||||
gs_wxBusyCursor = (HCURSOR)cursor->GetHCURSOR();
|
||||
#ifndef __WXMICROWIN__
|
||||
gs_wxBusyCursorOld = ::SetCursor(gs_wxBusyCursor);
|
||||
#endif
|
||||
}
|
||||
//else: nothing to do, already set
|
||||
}
|
||||
@@ -77,9 +75,7 @@ void wxEndBusyCursor()
|
||||
|
||||
if ( --gs_wxBusyCursorCount == 0 )
|
||||
{
|
||||
#ifndef __WXMICROWIN__
|
||||
::SetCursor(gs_wxBusyCursorOld);
|
||||
#endif
|
||||
gs_wxBusyCursorOld = 0;
|
||||
}
|
||||
}
|
||||
@@ -123,10 +119,6 @@ void wxGetMousePosition( int* x, int* y )
|
||||
// Return true if we have a colour display
|
||||
bool wxColourDisplay()
|
||||
{
|
||||
#ifdef __WXMICROWIN__
|
||||
// MICROWIN_TODO
|
||||
return true;
|
||||
#else
|
||||
// this function is called from wxDC ctor so it is called a *lot* of times
|
||||
// hence we optimize it a bit but doing the check only once
|
||||
//
|
||||
@@ -143,7 +135,6 @@ bool wxColourDisplay()
|
||||
}
|
||||
|
||||
return s_isColour != 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
// Returns depth of screen
|
||||
@@ -156,41 +147,22 @@ int wxDisplayDepth()
|
||||
// Get size of display
|
||||
void wxDisplaySize(int *width, int *height)
|
||||
{
|
||||
#ifdef __WXMICROWIN__
|
||||
RECT rect;
|
||||
HWND hWnd = GetDesktopWindow();
|
||||
::GetWindowRect(hWnd, & rect);
|
||||
|
||||
if ( width )
|
||||
*width = rect.right - rect.left;
|
||||
if ( height )
|
||||
*height = rect.bottom - rect.top;
|
||||
#else // !__WXMICROWIN__
|
||||
ScreenHDC dc;
|
||||
|
||||
if ( width )
|
||||
*width = ::GetDeviceCaps(dc, HORZRES);
|
||||
if ( height )
|
||||
*height = ::GetDeviceCaps(dc, VERTRES);
|
||||
#endif // __WXMICROWIN__/!__WXMICROWIN__
|
||||
}
|
||||
|
||||
void wxDisplaySizeMM(int *width, int *height)
|
||||
{
|
||||
#ifdef __WXMICROWIN__
|
||||
// MICROWIN_TODO
|
||||
if ( width )
|
||||
*width = 0;
|
||||
if ( height )
|
||||
*height = 0;
|
||||
#else
|
||||
ScreenHDC dc;
|
||||
|
||||
if ( width )
|
||||
*width = ::GetDeviceCaps(dc, HORZSIZE);
|
||||
if ( height )
|
||||
*height = ::GetDeviceCaps(dc, VERTSIZE);
|
||||
#endif
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -214,8 +186,6 @@ wxString WXDLLEXPORT wxGetWindowClass(WXHWND hWnd)
|
||||
{
|
||||
wxString str;
|
||||
|
||||
// MICROWIN_TODO
|
||||
#ifndef __WXMICROWIN__
|
||||
if ( hWnd )
|
||||
{
|
||||
int len = 256; // some starting value
|
||||
@@ -236,7 +206,6 @@ wxString WXDLLEXPORT wxGetWindowClass(WXHWND hWnd)
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // !__WXMICROWIN__
|
||||
|
||||
return str;
|
||||
}
|
||||
|
@@ -107,10 +107,8 @@
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#if !defined(__WXMICROWIN__)
|
||||
#include <shellapi.h>
|
||||
#include <mmsystem.h>
|
||||
#endif
|
||||
#include <shellapi.h>
|
||||
#include <mmsystem.h>
|
||||
|
||||
#include <windowsx.h>
|
||||
|
||||
@@ -273,14 +271,6 @@ static wxWindowMSW *FindWindowForMouseEvent(wxWindowMSW *win, int *x, int *y);
|
||||
// wrapper around BringWindowToTop() API
|
||||
static inline void wxBringWindowToTop(HWND hwnd)
|
||||
{
|
||||
#ifdef __WXMICROWIN__
|
||||
// It seems that MicroWindows brings the _parent_ of the window to the top,
|
||||
// which can be the wrong one.
|
||||
|
||||
// activate (set focus to) specified window
|
||||
::SetFocus(hwnd);
|
||||
#endif
|
||||
|
||||
// raise top level parent to top of z order
|
||||
if (!::SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE))
|
||||
{
|
||||
@@ -931,17 +921,12 @@ namespace
|
||||
|
||||
inline int GetScrollPosition(HWND hWnd, int wOrient)
|
||||
{
|
||||
#ifdef __WXMICROWIN__
|
||||
return ::GetScrollPosWX(hWnd, wOrient);
|
||||
#else
|
||||
WinStruct<SCROLLINFO> scrollInfo;
|
||||
scrollInfo.cbSize = sizeof(SCROLLINFO);
|
||||
scrollInfo.fMask = SIF_POS;
|
||||
::GetScrollInfo(hWnd, wOrient, &scrollInfo );
|
||||
|
||||
return scrollInfo.nPos;
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
inline UINT WXOrientToSB(int orient)
|
||||
@@ -1555,9 +1540,7 @@ bool wxWindowMSW::Reparent(wxWindowBase *parent)
|
||||
|
||||
static inline void SendSetRedraw(HWND hwnd, bool on)
|
||||
{
|
||||
#ifndef __WXMICROWIN__
|
||||
::SendMessage(hwnd, WM_SETREDRAW, (WPARAM)on, 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
void wxWindowMSW::DoFreeze()
|
||||
@@ -1617,7 +1600,7 @@ void wxWindowMSW::Update()
|
||||
wxLogLastError(wxT("UpdateWindow"));
|
||||
}
|
||||
|
||||
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if !defined(__WXWINCE__)
|
||||
// just calling UpdateWindow() is not enough, what we did in our WM_PAINT
|
||||
// handler needs to be really drawn right now
|
||||
(void)::GdiFlush();
|
||||
@@ -2864,7 +2847,7 @@ wxWindowMSW::MSWHandleMessage(WXLRESULT *result,
|
||||
break;
|
||||
#endif // !__WXWINCE__
|
||||
|
||||
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if !defined(__WXWINCE__)
|
||||
case WM_ACTIVATEAPP:
|
||||
// This implicitly sends a wxEVT_ACTIVATE_APP event
|
||||
wxTheApp->SetActive(wParam != 0, FindFocus());
|
||||
@@ -2970,28 +2953,6 @@ wxWindowMSW::MSWHandleMessage(WXLRESULT *result,
|
||||
case WM_XBUTTONDBLCLK:
|
||||
#endif // wxHAS_XBUTTON
|
||||
{
|
||||
#ifdef __WXMICROWIN__
|
||||
// MicroWindows seems to ignore the fact that a window is
|
||||
// disabled. So catch mouse events and throw them away if
|
||||
// necessary.
|
||||
wxWindowMSW* win = this;
|
||||
for ( ;; )
|
||||
{
|
||||
if (!win->IsEnabled())
|
||||
{
|
||||
processed = true;
|
||||
break;
|
||||
}
|
||||
|
||||
win = win->GetParent();
|
||||
if ( !win || win->IsTopLevel() )
|
||||
break;
|
||||
}
|
||||
|
||||
if ( processed )
|
||||
break;
|
||||
|
||||
#endif // __WXMICROWIN__
|
||||
int x = GET_X_LPARAM(lParam),
|
||||
y = GET_Y_LPARAM(lParam);
|
||||
|
||||
@@ -3080,7 +3041,7 @@ wxWindowMSW::MSWHandleMessage(WXLRESULT *result,
|
||||
HIWORD(lParam),
|
||||
wParam);
|
||||
break;
|
||||
#endif // __WXMICROWIN__
|
||||
#endif // MM_JOY1MOVE
|
||||
|
||||
case WM_COMMAND:
|
||||
{
|
||||
@@ -3306,7 +3267,6 @@ wxWindowMSW::MSWHandleMessage(WXLRESULT *result,
|
||||
|
||||
// CTLCOLOR messages are sent by children to query the parent for their
|
||||
// colors
|
||||
#ifndef __WXMICROWIN__
|
||||
case WM_CTLCOLORMSGBOX:
|
||||
case WM_CTLCOLOREDIT:
|
||||
case WM_CTLCOLORLISTBOX:
|
||||
@@ -3322,7 +3282,6 @@ wxWindowMSW::MSWHandleMessage(WXLRESULT *result,
|
||||
processed = HandleCtlColor(&rc.hBrush, (WXHDC)hdc, (WXHWND)hwnd);
|
||||
}
|
||||
break;
|
||||
#endif // !__WXMICROWIN__
|
||||
|
||||
case WM_SYSCOLORCHANGE:
|
||||
// the return value for this message is ignored
|
||||
@@ -3522,7 +3481,7 @@ wxWindowMSW::MSWHandleMessage(WXLRESULT *result,
|
||||
}
|
||||
break;
|
||||
|
||||
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if !defined(__WXWINCE__)
|
||||
case WM_INITMENUPOPUP:
|
||||
processed = HandleMenuPopup(wxEVT_MENU_OPEN, (WXHMENU)wParam);
|
||||
break;
|
||||
@@ -3540,7 +3499,7 @@ wxWindowMSW::MSWHandleMessage(WXLRESULT *result,
|
||||
case WM_UNINITMENUPOPUP:
|
||||
processed = HandleMenuPopup(wxEVT_MENU_CLOSE, (WXHMENU)wParam);
|
||||
break;
|
||||
#endif // !__WXMICROWIN__
|
||||
#endif // !__WXWINCE__
|
||||
#endif // wxUSE_MENUS && !defined(__WXUNIVERSAL__)
|
||||
|
||||
#ifndef __WXWINCE__
|
||||
@@ -3855,7 +3814,6 @@ bool wxWindowMSW::MSWCreate(const wxChar *wclass,
|
||||
|
||||
bool wxWindowMSW::HandleNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
|
||||
{
|
||||
#ifndef __WXMICROWIN__
|
||||
LPNMHDR hdr = (LPNMHDR)lParam;
|
||||
HWND hWnd = hdr->hwndFrom;
|
||||
wxWindow *win = wxFindWinFromHandle(hWnd);
|
||||
@@ -3889,9 +3847,6 @@ bool wxWindowMSW::HandleNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
|
||||
|
||||
// by default, handle it ourselves
|
||||
return MSWOnNotify(idCtrl, lParam, result);
|
||||
#else // __WXMICROWIN__
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if wxUSE_TOOLTIPS
|
||||
@@ -4196,10 +4151,10 @@ bool wxWindowMSW::HandleInitDialog(WXHWND WXUNUSED(hWndFocus))
|
||||
|
||||
bool wxWindowMSW::HandleDropFiles(WXWPARAM wParam)
|
||||
{
|
||||
#if defined (__WXMICROWIN__) || defined(__WXWINCE__)
|
||||
#if defined(__WXWINCE__)
|
||||
wxUnusedVar(wParam);
|
||||
return false;
|
||||
#else // __WXMICROWIN__
|
||||
#else // __WXWINCE__
|
||||
HDROP hFilesInfo = (HDROP) wParam;
|
||||
|
||||
// Get the total number of files dropped
|
||||
@@ -4241,7 +4196,6 @@ bool wxWindowMSW::HandleSetCursor(WXHWND WXUNUSED(hWnd),
|
||||
short nHitTest,
|
||||
int WXUNUSED(mouseMsg))
|
||||
{
|
||||
#ifndef __WXMICROWIN__
|
||||
// the logic is as follows:
|
||||
// 0. if we're busy, set the busy cursor (even for non client elements)
|
||||
// 1. don't set custom cursor for non client area of enabled windows
|
||||
@@ -4319,7 +4273,6 @@ bool wxWindowMSW::HandleSetCursor(WXHWND WXUNUSED(hWnd),
|
||||
// cursor set, stop here
|
||||
return true;
|
||||
}
|
||||
#endif // __WXMICROWIN__
|
||||
|
||||
// pass up the window chain
|
||||
return false;
|
||||
@@ -4560,8 +4513,6 @@ bool wxWindowMSW::HandleDisplayChange()
|
||||
return HandleWindowEvent(event);
|
||||
}
|
||||
|
||||
#ifndef __WXMICROWIN__
|
||||
|
||||
bool wxWindowMSW::HandleCtlColor(WXHBRUSH *brush, WXHDC hDC, WXHWND hWnd)
|
||||
{
|
||||
#if !wxUSE_CONTROLS || defined(__WXUNIVERSAL__)
|
||||
@@ -4579,8 +4530,6 @@ bool wxWindowMSW::HandleCtlColor(WXHBRUSH *brush, WXHDC hDC, WXHWND hWnd)
|
||||
return *brush != NULL;
|
||||
}
|
||||
|
||||
#endif // __WXMICROWIN__
|
||||
|
||||
bool wxWindowMSW::HandlePaletteChanged(WXHWND hWndPalChange)
|
||||
{
|
||||
#if wxUSE_PALETTE
|
||||
@@ -6708,13 +6657,11 @@ extern wxWindow *wxGetWindowFromHWND(WXHWND hWnd)
|
||||
// FIXME: this is clearly not the best way to do it but I think we'll
|
||||
// need to change HWND <-> wxWindow code more heavily than I can
|
||||
// do it now to fix it
|
||||
#ifndef __WXMICROWIN__
|
||||
if ( ::GetWindow(hwnd, GW_OWNER) )
|
||||
{
|
||||
// it's a dialog box, don't go upwards
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
hwnd = ::GetParent(hwnd);
|
||||
win = wxFindWinFromHandle(hwnd);
|
||||
@@ -6723,7 +6670,7 @@ extern wxWindow *wxGetWindowFromHWND(WXHWND hWnd)
|
||||
return win;
|
||||
}
|
||||
|
||||
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
|
||||
#if !defined(__WXWINCE__)
|
||||
|
||||
// Windows keyboard hook. Allows interception of e.g. F1, ESCAPE
|
||||
// in active frames and dialogs, regardless of where the focus is.
|
||||
@@ -6813,7 +6760,7 @@ void wxSetKeyboardHook(bool doIt)
|
||||
}
|
||||
}
|
||||
|
||||
#endif // !__WXMICROWIN__
|
||||
#endif // !__WXWINCE__
|
||||
|
||||
#if wxDEBUG_LEVEL >= 2
|
||||
const wxChar *wxGetMessageName(int message)
|
||||
|
@@ -301,9 +301,5 @@ bool wxFrame::Enable(bool enable)
|
||||
{
|
||||
if (!wxFrameBase::Enable(enable))
|
||||
return false;
|
||||
#ifdef __WXMICROWIN__
|
||||
if (m_frameMenuBar)
|
||||
m_frameMenuBar->Enable(enable);
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
@@ -43,7 +43,7 @@
|
||||
#define WXDEBUG_SCROLLBAR
|
||||
#endif
|
||||
|
||||
#if defined(WXDEBUG_SCROLLBAR) && defined(__WXMSW__) && !defined(__WXMICROWIN__)
|
||||
#if defined(WXDEBUG_SCROLLBAR) && defined(__WXMSW__)
|
||||
#include "wx/msw/private.h"
|
||||
#endif
|
||||
|
||||
@@ -627,7 +627,7 @@ void wxScrollBar::UpdateThumb()
|
||||
dc.DrawRectangle(rect);
|
||||
|
||||
// under Unix we use "--sync" X option for this
|
||||
#if defined(__WXMSW__) && !defined(__WXMICROWIN__)
|
||||
#if defined(__WXMSW__)
|
||||
::GdiFlush();
|
||||
::Sleep(200);
|
||||
#endif // __WXMSW__
|
||||
|
@@ -51,7 +51,7 @@
|
||||
#define WXDEBUG_REFRESH
|
||||
#endif
|
||||
|
||||
#if defined(WXDEBUG_REFRESH) && defined(__WXMSW__) && !defined(__WXMICROWIN__)
|
||||
#if defined(WXDEBUG_REFRESH) && defined(__WXMSW__)
|
||||
#include "wx/msw/private.h"
|
||||
#endif
|
||||
|
||||
@@ -477,7 +477,7 @@ void wxWindow::Refresh(bool eraseBackground, const wxRect *rect)
|
||||
dc.DrawRectangle(rectWin);
|
||||
|
||||
// under Unix we use "--sync" X option for this
|
||||
#if defined(__WXMSW__) && !defined(__WXMICROWIN__)
|
||||
#if defined(__WXMSW__)
|
||||
::GdiFlush();
|
||||
::Sleep(200);
|
||||
#endif // __WXMSW__
|
||||
|
Reference in New Issue
Block a user