]> git.saurik.com Git - wxWidgets.git/commitdiff
Got generic wxListCtrl, wxTreeCtrl working under Windows, wxNotebook almost;
authorJulian Smart <julian@anthemion.co.uk>
Wed, 23 Dec 1998 09:58:02 +0000 (09:58 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Wed, 23 Dec 1998 09:58:02 +0000 (09:58 +0000)
some doc corrections; Win16 dialog crash cured

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1255 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

24 files changed:
docs/latex/wx/evthand.tex
docs/latex/wx/icon.tex
docs/latex/wx/paintdc.tex
docs/latex/wx/tdnd.tex
docs/msw/changes.txt
docs/msw/install.txt
docs/msw/issues.txt
include/wx/generic/listctrl.h
samples/notebook/test.cpp
samples/treectrl/bitmaps/file1.bmp [new file with mode: 0644]
samples/treectrl/bitmaps/folder1.bmp [new file with mode: 0644]
samples/treectrl/treetest.cpp
samples/treectrl/treetest.rc
src/common/utilscmn.cpp
src/generic/imaglist.cpp
src/generic/listctrl.cpp
src/generic/notebook.cpp
src/generic/treectrl.cpp
src/motif/metafile.cpp
src/motif/utilsexc.cpp
src/msw/dc.cpp
src/msw/icon.cpp
src/msw/makefile.nt
src/msw/window.cpp

index 16e10a1bcbb37420b1f2b45550d85df8fe3bfb06..eff1e2aeeb0dbc1223074e4fef036a525e479464 100644 (file)
@@ -28,6 +28,39 @@ Destructor. If the handler is part of a chain, the destructor will
 unlink itself and restore the previous and next handlers so that they point to
 each other.
 
+\membersection{wxEvtHandler::Connect}\label{wxevthandlerconnect}
+
+\func{void}{Connect}{\param{int}{ id},
+ \param{wxEventType }{eventType}, \param{wxObjectEventFunction}{ function},
+ \param{wxObject*}{ userData = NULL}}
+
+\func{void}{Connect}{\param{int}{ id}, \param{int}{ lastId},
+ \param{wxEventType }{eventType}, \param{wxObjectEventFunction}{ function},
+ \param{wxObject*}{ userData = NULL}}
+
+Connects the given function dynamically with the event handler, id and event type. This
+is an alternative to the use of static event tables. See the 'dynamic' sample for usage.
+
+\wxheading{Parameters}
+
+\docparam{id}{The identifier (or first of the identifier range) to be associated with the event handler function.}
+
+\docparam{lastId}{The second part of the identifier range to be associated with the event handler function.}
+
+\docparam{eventType}{The event type to be associated with this event handler.}
+
+\docparam{function}{The event handler function.}
+
+\docparam{userData}{Data to be associated with the event table entry.}
+
+\wxheading{Example}
+
+\begin{verbatim}
+  frame->Connect( wxID_EXIT,
+    wxEVT_COMMAND_MENU_SELECTED,
+    (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) MyFrame::OnQuit );
+\end{verbatim}
+
 \membersection{wxEvtHandler::Default}\label{wxevthandlerdefault}
 
 \func{virtual long}{Default}{\void}
index 87193b04c6c867e124cbea8f0acf3e3b3f4c3e78..fdc9efd9af8f59655617d7b82d976c1edecf881a 100644 (file)
@@ -76,7 +76,8 @@ Creates a new icon.
 
 Creates an icon from XPM data.
 
-\func{}{wxIcon}{\param{const wxString\& }{name}, \param{long}{ type}}
+\func{}{wxIcon}{\param{const wxString\& }{name}, \param{long}{ type},
+  \param{int}{ desiredWidth = -1}, \param{int}{ desiredHeight = -1}}
 
 Loads an icon from a file or resource.
 
@@ -88,6 +89,14 @@ Loads an icon from a file or resource.
 
 \docparam{height}{Specifies the height of the icon.}
 
+\docparam{desiredWidth}{Specifies the desired width of the icon. This
+parameter only has an effect in Windows (32-bit) where icon resources can contain
+several icons of different sizes.}
+
+\docparam{desiredWidth}{Specifies the desired height of the icon. This
+parameter only has an effect in Windows (32-bit) where icon resources can contain
+several icons of different sizes.}
+
 \docparam{depth}{Specifies the depth of the icon. If this is omitted, the display depth of the
 screen is used.}
 
index 5589b42648dc6bb661c1b7ee351cdfc3e12a5e1a..05842fb646b9f4d5167ca6194963c9a047a20040 100644 (file)
@@ -3,7 +3,8 @@
 A wxPaintDC must be constructed if an application wishes to paint on the
 client area of a window from within an {\bf OnPaint} event.
 This should normally be constructed as a temporary stack object; don't store
-a wxPaintDC object.
+a wxPaintDC object. If you have an OnPaint handler, you {\it must} create a wxPaintDC
+object within it even if you don't actually use it.
 
 Using wxPaintDC within OnPaint is important because it automatically
 sets the clipping area to the damaged area of the window. Attempts to draw
index 3955a865389c692f1fe2a68493f105c9bc1e2f11..cbd0d8ea5aba5c6f3bb0bc7153b95b98fbbbc8f7 100644 (file)
@@ -15,37 +15,36 @@ Headers: <wx/dataobj.h>, <wx/dropsrc.h and <wx/droptgt.h>>
 
 This overview describes wxWindows support for drag and drop and clipboard
 operations. Both of these topics are discussed here because, in fact, they're
-quite related. Drag and drop and clipboard are just too ways of passing the
+quite related. Drag and drop and clipboard are just two ways of passing the
 data around and so the code required to implement both types of the operations
 is almost the same.
 
-Both operations involve passing some data from one program to another
-(although the data may be received in the same program as well). In the case
-of clipboard transfer, the data is first places on the clipboard and then
-pasted into the destination program while for a drag-and-drop operation the
+Both operations involve passing some data from one program to another,
+although the data can be received in the same program as the source. In the case
+of clipboard transfer, the data is first placed on the clipboard and then
+pasted into the destination program, while for a drag-and-drop operation the
 data object is not stored anywhere but is created when the user starts
-dragging and is destroyed as soon as he ends it (whether the operation was
-ended successfully or cancelled).
+dragging and is destroyed as soon as he ends itwhether the operation was
+ended successfully or cancelled.
 
 To be a {\it drag source}, i.e. to provide the data which may be dragged by
-user elsewhere you should implement the following steps:
+user elsewhere, you should implement the following steps:
 
 \begin{itemize}\itemsep=0pt
 \item {\bf Preparation:} First of all, the data object must be created and
-initilized with the data you wish to drag. For example:
+initialized with the data you wish to drag. For example:
 
 \begin{verbatim}
        wxTextDataObject data("This string will be dragged.");
 \end{verbatim}
 
 Of course, the data object may contain arbitrary data of any type, but for
-this you should derive your own class from 
-\helpref{wxDataObject}{wxdataobject} overriding all of its pure virtual
+this you should derive your own class from \helpref{wxDataObject}{wxdataobject} overriding all of its pure virtual
 functions.
 
 \item{\bf Drag start:} To start dragging process (typically in response to a
-mouse click) you must call \helpref{DoDragDrop}{wxdropsourcedodragdrop}
-function of wxDropSource object which should be constructed like this:
+mouse click) you must call \helpref{DoDragDrop}{wxdropsourcedodragdrop} function
+of wxDropSource object which should be constructed like this:
 
 \begin{verbatim}
        wxDropSource dragSource(data, this);
@@ -63,8 +62,8 @@ same drag-and-drop protocol (any program under Windows or any program supporting
 under X Windows), the corresponding \helpref{wxDropTarget}{wxdroptarget} methods
 are called - see below.
 
-\item {\bf Processing the result:} DoDragDrop() returns an {\it effect code}
-which is one of the values of \helpref{wxDragResult}{wxdragresult} enum. Codes
+\item {\bf Processing the result:} DoDragDrop() returns an {\it effect code} which
+is one of the values of \helpref{wxDragResult}{wxdragresult} enum. Codes
 of wxDragError, wxDragNone and wxDragCancel have the obvious meaning and mean
 that there is nothing to do on the sending end (except of possibly logging the
 error in the first case). wxDragCopy means that the data has been successfully
@@ -72,10 +71,8 @@ copied and doesn't require any specific actions neither. But wxDragMove is
 special because it means that the data must be deleted from where it was
 copied. If it doesn't make sense (dragging selected text from a read-only
 file) you should pass FALSE as parameter to DoDragDrop() in the previous step.
-
 \end{itemize}
 
-
 To be a {\it drop target}, i.e. to receive the data dropped by user you should
 follow the instructions below:
 
@@ -91,8 +88,8 @@ or OnDropFiles() method.
 
 \item {\bf Drop:} When the user releases the mouse over a window, wxWindows
 queries the associated wxDropTarget object if it accepts the data. For
-this, \helpref{GetFormatCount}{wxdroptargetgetformatcount} and
-\helpref{GetFormat}{wxdroptargetgetformat} are used and if the format is
+this, \helpref{GetFormatCount}{wxdroptargetgetformatcount} and \helpref{GetFormat}{wxdroptargetgetformat} are
+used and if the format is
 supported (i.e. is one of returned by GetFormat()), 
 then \helpref{OnDrop}{wxdroptargetondrop} is called. 
 Otherwise, \helpref{wxDragNone}{stdformat} is returned by DoDragDrop() and
@@ -102,6 +99,5 @@ nothing happens.
 wxDragCopy or wxDragMove depending on the state of the keys (<Ctrl>, <Shift>
 and <Alt>) at the moment of drop. There is currently no way for the drop
 target to change this return code.
-
 \end{itemize}
 
index f2ad9cdb14fdbdeb87e2bd3a3bdfd01f3a597299..25d5b3893538468045b9838391add2491dabd902 100644 (file)
@@ -2,6 +2,16 @@
 wxWindows 2.0 for Windows Change Log
 ------------------------------------
 
+Alpha 18, December 23nd 1998
+----------------------------
+
+- Win16 support working again (VC++ 1.5)
+- Win16 now uses generic wxNotebook, wxListCtrl,
+  wxTreeCtrl -- more or less working now, although
+  a little work on wxNotebook is still needed.
+  Under 16-bit Windows, get assertion when you click
+  on a tab.
+
 Alpha 17, November 22nd 1998
 ----------------------------
 
index 09562235ec59a2a9da0a83a03c42f8d963310235..4a7872625a64406575dc2e5005a3b748a38a49f5 100644 (file)
@@ -56,11 +56,8 @@ Visual C++ 1.5 compilation
 
 1. Change directory to wx\src\msw. Type 'nmake -f makefile.dos' to
    make the wxWindows core library.
-2. Change directory to wx\samples and type 'nmake -f makefile.dos'
-   to make all the samples. You can also make them individually.
-
-NOTE: 16-bit compilation is not recommended (see issues.txt):
-many things are broken, including dialog boxes.
+2. Change directory to a sample, such as wx\samples\minimal, and
+   type 'nmake -f makefile.dos'.
 
 Borland C++ 4.5/5.0 compilation
 -------------------------------
index 900bfa8600c8a0048245b3cdb89eabb1e6997762..d77a710a942831294edfe43d580c1a2848d4d1c6 100644 (file)
@@ -8,7 +8,3 @@ This conflicts with wxUSE_IOSTREAMSH = 0 using MS VC++ 5.0
 (crashes the template code). It should be switched off if you
 wish to use wxUSE_IOSTREAMSH = 0.
 
-Many things seem to be broken for 16-bit Windows, including
-dialogs (crash in wxFindWinFromHandle). The generic tree, list
-and notebook controls don't work. The generic wxImageList drawing
-function doesn't work (wxDC::SelectObject problem).
index ff5bc55e13463f293e7fbc86ac79df7cda122ad4..810d91f9a6c335fc15121dcb47d8b5654f8bfec3 100644 (file)
@@ -17,7 +17,7 @@
 
 #include "wx/defs.h"
 #include "wx/object.h"
-#include "wx/imaglist.h"
+#include "wx/generic/imaglist.h"
 #include "wx/control.h"
 #include "wx/timer.h"
 #include "wx/textctrl.h"
index feffe3ee587d32444ff461fee61541e5d50a0b84..7ee1dfb3e86db99c27bb2d3cddd76c4916534462 100644 (file)
@@ -20,7 +20,6 @@
 #include "wx/wx.h"
 #endif
 
-#include "wx/tab.h"
 #include "test.h"
 
 // If 1, use a dialog. Otherwise use a frame.
@@ -44,10 +43,9 @@ bool MyApp::OnInit(void)
 #else
   frame = new MyFrame((wxFrame*) NULL, -1, (char *) "Notebook", wxPoint(-1, -1), wxSize(365, 390), wxDEFAULT_FRAME_STYLE);
 
-  // Problem with Motif whereby it doesn't size properly unless
-  // you set the size again (to a different size than before,
-  // since SetSize is optimized)
-#ifdef __WXMOTIF__
+  // Problem with generic wxNotebook implementation whereby it doesn't size properly unless
+  // you set the size again (to a different size than before, since SetSize is optimized)
+#if defined(__WXMOTIF__) || defined(__WIN16__)
   frame->SetSize(-1, -1, 370, 390);
 #endif
 
diff --git a/samples/treectrl/bitmaps/file1.bmp b/samples/treectrl/bitmaps/file1.bmp
new file mode 100644 (file)
index 0000000..9a0544b
Binary files /dev/null and b/samples/treectrl/bitmaps/file1.bmp differ
diff --git a/samples/treectrl/bitmaps/folder1.bmp b/samples/treectrl/bitmaps/folder1.bmp
new file mode 100644 (file)
index 0000000..dada286
Binary files /dev/null and b/samples/treectrl/bitmaps/folder1.bmp differ
index 8ae99c17cc92cedaed2222aa4c73145555ac041b..59bfba85acf66f3b2815f8a8c42abb5568fac55d 100644 (file)
@@ -83,7 +83,6 @@ END_EVENT_TABLE()
 
 IMPLEMENT_APP(MyApp)
 
-// `Main program' equivalent, creating windows and returning main app frame
 bool MyApp::OnInit()
 {
   // Create the main frame window
@@ -278,8 +277,15 @@ MyTreeCtrl::MyTreeCtrl(wxWindow *parent, const wxWindowID id,
   m_imageListNormal = new wxImageList(16, 16, TRUE);
 
   // should correspond to TreeCtrlIcon_xxx enum
+#if defined(__WXMSW__) && defined(__WIN16__)
+  // This is required in 16-bit Windows mode only because we can't load a specific (16x16)
+  // icon image, so it comes out blank (using the empty 32x32 icon).
+  m_imageListNormal->Add(wxBitmap("bitmap1", wxBITMAP_TYPE_BMP_RESOURCE));
+  m_imageListNormal->Add(wxBitmap("bitmap2", wxBITMAP_TYPE_BMP_RESOURCE));
+#else
   m_imageListNormal->Add(wxICON(icon1));
   m_imageListNormal->Add(wxICON(icon2));
+#endif
 
   SetImageList(m_imageListNormal);
 
index c1a90c77247267bb88a2583dee4da899042129d0..550dc2f13558c55d0083d5706a98371c0235b62f 100644 (file)
@@ -5,3 +5,6 @@ aaaa     ICON "mondrian.ico"
 icon1   ICON "bitmaps\\file1.ico"
 icon2   ICON "bitmaps\\folder1.ico"
 
+bitmap1   BITMAP "bitmaps\\file1.bmp"
+bitmap2   BITMAP "bitmaps\\folder1.bmp"
+
index a5f03d0543d11d034da7037548f4483a2fa0f972..c5e8204954558a1c5cc87e7a2649beb1e9cb7e31 100644 (file)
@@ -824,4 +824,4 @@ int isascii( int c )
 {
        return ( c >= 0 && c < 128 ) ;
 }
-#endif
\ No newline at end of file
+#endif
index 95614a8281fabb07dbd7f687dcaa5eed0df1f24c..b0dc6594c747ca113abeca02dc0c707654b4aba8 100644 (file)
@@ -18,7 +18,7 @@
 #pragma hdrstop
 #endif
 
-#include "wx/imaglist.h"
+#include "wx/generic/imaglist.h"
 
 //-----------------------------------------------------------------------------
 //  wxImageList
@@ -50,7 +50,10 @@ bool wxImageList::Create()
 
 int wxImageList::Add( const wxBitmap &bitmap )
 {
-    m_images.Append( new wxBitmap(bitmap) );
+    if (bitmap.IsKindOf(CLASSINFO(wxIcon)))
+        m_images.Append( new wxIcon( (const wxIcon&) bitmap ) );
+    else
+        m_images.Append( new wxBitmap(bitmap) );
     return m_images.Number();
 }
 
@@ -68,17 +71,23 @@ bool wxImageList::Replace( int index, const wxBitmap &bitmap )
     wxNode *node = m_images.Nth( index );
     
     wxCHECK_MSG( node, FALSE, "wrong index in image list" );
-  
+
+    wxBitmap* newBitmap = NULL;
+    if (bitmap.IsKindOf(CLASSINFO(wxIcon)))
+        newBitmap = new wxIcon( (const wxIcon&) bitmap );
+    else
+        newBitmap = new wxBitmap(bitmap) ;
+
     if (index == m_images.Number()-1)
     {
         m_images.DeleteNode( node );
-        m_images.Append( new wxBitmap(bitmap) );
+        m_images.Append( newBitmap );
     }
     else
     {
         wxNode *next = node->Next();
         m_images.DeleteNode( node );
-        m_images.Insert( next, new wxBitmap(bitmap) );
+        m_images.Insert( next, newBitmap );
     }
   
     return TRUE;
@@ -126,8 +135,11 @@ bool wxImageList::Draw( int index, wxDC &dc, int x, int y,
     wxCHECK_MSG( node, FALSE, "wrong index in image list" );
     
     wxBitmap *bm = (wxBitmap*)node->Data();
-  
-    dc.DrawBitmap( *bm, x, y, (flags & wxIMAGELIST_DRAW_TRANSPARENT) > 0 );
+
+    if (bm->IsKindOf(CLASSINFO(wxIcon)))
+        dc.DrawIcon( * ((wxIcon*) bm), x, y);
+    else
+        dc.DrawBitmap( *bm, x, y, (flags & wxIMAGELIST_DRAW_TRANSPARENT) > 0 );
 
     return TRUE;
 }
index 4e5824aabba235b58d5a171880a78022f91aae2a..8927a2d98193f46a2429f75617ce55a67bdab493 100644 (file)
@@ -20,7 +20,8 @@
 
 #include "wx/dcscreen.h"
 #include "wx/app.h"
-#include "wx/listctrl.h"
+#include "wx/generic/listctrl.h"
+#include "wx/generic/imaglist.h"
 
 //-----------------------------------------------------------------------------
 //  wxListItemData
@@ -551,6 +552,7 @@ void wxListLineData::DoDraw( wxDC *dc, bool hilight, bool paintBG )
                            m_bound_hilight.width, m_bound_hilight.height );
     }
     
+    dc->SetBackgroundMode(wxTRANSPARENT);
     if (m_mode == wxLC_REPORT)
     {
         wxString s;
@@ -741,6 +743,7 @@ void wxListHeaderWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
     int y = 0;
     GetClientSize( &w, &h );
 
+    dc.SetBackgroundMode(wxTRANSPARENT);
     dc.SetTextForeground( *wxBLACK );
     if (m_foregroundColour.Ok()) dc.SetTextForeground( m_foregroundColour );
 
@@ -1037,13 +1040,15 @@ void wxListMainWindow::RefreshLine( wxListLineData *line )
 
 void wxListMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
 {
+    // Note: a wxPaintDC must be constructed even if no drawing is
+    // done (a Windows requirement).
+    wxPaintDC dc( this );
+    PrepareDC( dc );
+
     if (m_dirty) return;
     
     if (m_lines.GetCount() == 0) return;
 
-    wxPaintDC dc( this );
-    PrepareDC( dc );
-
     dc.BeginDrawing();
 
     dc.SetFont( GetFont() );
index cced371845ef035489a48a284af27651eab531f9..dca667945642c328344569540d31558e591e292d 100644 (file)
@@ -52,7 +52,7 @@ BEGIN_EVENT_TABLE(wxNotebook, wxControl)
     EVT_MOUSE_EVENTS(wxNotebook::OnMouseEvent)
     EVT_SET_FOCUS(wxNotebook::OnSetFocus)
     EVT_NAVIGATION_KEY(wxNotebook::OnNavigationKey)
-    EVT_IDLE(wxNotebook::OnIdle)
+//    EVT_IDLE(wxNotebook::OnIdle)
 END_EVENT_TABLE()
 
 IMPLEMENT_DYNAMIC_CLASS(wxNotebook, wxControl)
@@ -108,9 +108,11 @@ bool wxNotebook::Create(wxWindow *parent,
     m_windowId = id == -1 ? NewControlId() : id;
 
     // It's like a normal window...
-    if (!wxWindow::Create(parent, id, pos, size, style, name))
+    if (!wxWindow::Create(parent, id, pos, size, style|wxNO_BORDER, name))
         return FALSE;
 
+    SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE));
+
     SetTabView(new wxNotebookTabView(this));
 
     return TRUE;
index 3a2dea9902848b9a511732dd9dfe4378b02dda73..a9827f7b60aeed80892677249c2a697b208a7e46 100644 (file)
 #endif
 
 #include "wx/generic/treectrl.h"
+#include "wx/generic/imaglist.h"
 #include "wx/settings.h"
 #include "wx/log.h"
 #include "wx/intl.h"
 #include "wx/dynarray.h"
 #include "wx/dcclient.h"
-#include "wx/imaglist.h"
 #include "wx/msgdlg.h"
 
 // -----------------------------------------------------------------------------
@@ -1089,6 +1089,7 @@ void wxTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc)
     dc.DestroyClippingRegion();
   }
 
+  dc.SetBackgroundMode(wxTRANSPARENT);
   dc.DrawText( item->GetText(), image_w + item->GetX(), item->GetY() );
 
   // restore normal font for bold items
@@ -1197,7 +1198,8 @@ void wxTreeCtrl::OnPaint( wxPaintEvent &WXUNUSED(event) )
     wxPaintDC dc(this);
     PrepareDC( dc );
 
-    dc.SetFont( wxSystemSettings::GetSystemFont( wxSYS_SYSTEM_FONT ) );
+//    dc.SetFont( wxSystemSettings::GetSystemFont( wxSYS_SYSTEM_FONT ) );
+    dc.SetFont( wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT ) );
 
     dc.SetPen( m_dottedPen );
     m_lineHeight = (int)(dc.GetCharHeight() + 4);
@@ -1446,7 +1448,8 @@ void wxTreeCtrl::CalculatePositions()
   wxClientDC dc(this);
   PrepareDC( dc );
 
-  dc.SetFont( wxSystemSettings::GetSystemFont( wxSYS_SYSTEM_FONT ) );
+//    dc.SetFont( wxSystemSettings::GetSystemFont( wxSYS_SYSTEM_FONT ) );
+    dc.SetFont( wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT ) );
 
   dc.SetPen( m_dottedPen );
   m_lineHeight = (int)(dc.GetCharHeight() + 4);
index 348440fd7916c2001d08b63b7b310c3155662032..7380a03402e554f4d69f940eec72da50ee43b3bf 100644 (file)
@@ -52,7 +52,7 @@ bool wxMetaFile::SetClipboard(int width, int height)
 bool wxMetaFile::Play(wxDC *dc)
 {
     // TODO
-    return false;
+    return FALSE;
 }
 
 /*
index 05e0fb5ef7b76ecdec2cbce02e5021ed8a917a58..c7c928a2de8addb77a0741c2aad979b976dffbf8 100644 (file)
@@ -97,7 +97,7 @@ void xt_notify_end_process(XtPointer client, int *fid,
   /* wait4 is not part of any standard, use at own risk
    * not sure what wait4 does, but wait3 seems to be closest, whats a digit ;-)
    * --- offer@sgi.com */
-#if !defined(__sgi) && !defined(__ALPHA__)
+#if !defined(__sgi) && !defined(__SGI__) && !defined(__ALPHA__) && !defined(__SUNCC__)
   wait4(process_data->pid, NULL, 0, NULL);
 #else
   wait3((int *) NULL, 0, (rusage *) NULL);
index 25997d4c27ba59f81a8736e9239ae0a82aaa3db3..d14d10afb18db420af5bb0adde421203c2214bc9 100644 (file)
@@ -603,7 +603,13 @@ void wxDC::DrawEllipticArc(long x,long y,long w,long h,double sa,double ea)
 
 void wxDC::DrawIcon(const wxIcon& icon, long x, long y)
 {
+#if defined(__WIN32__)
+  ::DrawIconEx((HDC) m_hDC, XLOG2DEV(x), YLOG2DEV(y), (HICON) icon.GetHICON(),
+      icon.GetWidth(), icon.GetHeight(), 0, 0, DI_NORMAL);
+#else
   ::DrawIcon((HDC) m_hDC, XLOG2DEV(x), YLOG2DEV(y), (HICON) icon.GetHICON());
+#endif
+
   CalcBoundingBox(x, y);
   CalcBoundingBox(x+icon.GetWidth(), y+icon.GetHeight());
 }
index bd69394f9a21e85d5b88ecbce64dce13e4d0fa56..08c91789d009356fcc28d9a80b255b19df08fd6d 100644 (file)
@@ -178,6 +178,13 @@ bool wxICOResourceHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long
       M_ICONHANDLERDATA->m_width = 32;
       M_ICONHANDLERDATA->m_height = 32;
 #endif
+      // Override the found values with desired values
+      if (desiredWidth > -1 && desiredHeight > -1)
+      {
+          M_ICONHANDLERDATA->m_width = desiredWidth;
+          M_ICONHANDLERDATA->m_height = desiredHeight;
+      }
+
       M_ICONHANDLERDATA->m_ok = (M_ICONHANDLERDATA->m_hIcon != 0);
       return M_ICONHANDLERDATA->m_ok;
   }
index 76945a8ebe2031faa1f3509cce0f7a7f3cc2bc3f..63acc309b4c54b905e493b691535d4fdd3a9fcd1 100644 (file)
@@ -60,6 +60,11 @@ GENERICOBJS= \
   $(GENDIR)\tabg.obj \
   $(GENDIR)\textdlgg.obj
 
+#  $(GENDIR)\imaglist.obj \
+#  $(GENDIR)\treectrl.obj \
+#  $(GENDIR)\listctrl.obj \
+#  $(GENDIR)\notebook.obj \
+
 # These are generic things that don't need to be compiled on MSW,
 # but sometimes it's useful to do so for testing purposes.
 NONESSENTIALOBJS= \
@@ -169,11 +174,9 @@ MSWOBJS = \
   $(MSWDIR)\gdiobj.obj \
   $(MSWDIR)\helpwin.obj \
   $(MSWDIR)\icon.obj \
-  $(MSWDIR)\imaglist.obj \
   $(MSWDIR)\iniconf.obj \
   $(MSWDIR)\joystick.obj \
   $(MSWDIR)\listbox.obj \
-  $(MSWDIR)\listctrl.obj \
   $(MSWDIR)\main.obj \
   $(MSWDIR)\mdi.obj \
   $(MSWDIR)\menu.obj \
@@ -182,7 +185,6 @@ MSWOBJS = \
   $(MSWDIR)\minifram.obj \
   $(MSWDIR)\msgdlg.obj \
   $(MSWDIR)\nativdlg.obj \
-  $(MSWDIR)\notebook.obj \
   $(MSWDIR)\ownerdrw.obj \
   $(MSWDIR)\palette.obj \
   $(MSWDIR)\pen.obj \
@@ -211,11 +213,14 @@ MSWOBJS = \
   $(MSWDIR)\textctrl.obj \
   $(MSWDIR)\thread.obj \
   $(MSWDIR)\timer.obj \
-  $(MSWDIR)\treectrl.obj \
   $(MSWDIR)\utils.obj \
   $(MSWDIR)\utilsexc.obj \
   $(MSWDIR)\wave.obj \
   $(MSWDIR)\window.obj \
+  $(MSWDIR)\notebook.obj \
+  $(MSWDIR)\listctrl.obj \
+  $(MSWDIR)\imaglist.obj \
+  $(MSWDIR)\treectrl.obj \
   $(OLEDIR)\droptgt.obj \
   $(OLEDIR)\dropsrc.obj \
   $(OLEDIR)\dataobj.obj \
@@ -1150,6 +1155,26 @@ $(GENDIR)/textdlgg.obj:     $*.$(SRCSUFF)
 $(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@
 <<
 
+$(GENDIR)/treectrl.obj:     $*.$(SRCSUFF)
+        cl @<<
+$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@
+<<
+
+$(GENDIR)/imaglist.obj:     $*.$(SRCSUFF)
+        cl @<<
+$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@
+<<
+
+$(GENDIR)/listctrl.obj:     $*.$(SRCSUFF)
+        cl @<<
+$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@
+<<
+
+$(GENDIR)/notebook.obj:     $*.$(SRCSUFF)
+        cl @<<
+$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@
+<<
+
 $(OBJECTS):    $(WXDIR)/include/wx/setup.h
 
 $(XPMDIR)\crbuffri.obj: $(XPMDIR)\crbuffri.c
index 6a20945ba862b475f5996fc2d84022c9c925d31a..2d1f1ae135c6b02938a858606244cbd24f0106db 100644 (file)
@@ -1468,10 +1468,18 @@ void wxWindow::MSWCreate(int id, wxWindow *parent, const char *wclass, wxWindow
         m_hWnd = (WXHWND) ::CreateDialog(wxGetInstance(), dialog_template, hParent,
             (DLGPROC)wxDlgProc);
 #else
+        // N.B.: if we _don't_ use this form,
+        // then with VC++ 1.5, it crashes horribly.
+#if 1
+       m_hWnd = (WXHWND) ::CreateDialog(wxGetInstance(), dialog_template, hParent,
+                            (DLGPROC)wxDlgProc);
+#else
+        // Crashes when we use this.
         DLGPROC dlgproc = (DLGPROC)MakeProcInstance((DLGPROC)wxWndProc, wxGetInstance());
 
         m_hWnd = (WXHWND) ::CreateDialog(wxGetInstance(), dialog_template, hParent,
             (DLGPROC)dlgproc);
+#endif
 #endif
 
         if (m_hWnd == 0)