Got generic wxListCtrl, wxTreeCtrl working under Windows, wxNotebook almost;

some doc corrections; Win16 dialog crash cured


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1255 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
1998-12-23 09:58:02 +00:00
parent c238949553
commit f60d0f944a
24 changed files with 178 additions and 61 deletions

View File

@@ -824,4 +824,4 @@ int isascii( int c )
{
return ( c >= 0 && c < 128 ) ;
}
#endif
#endif

View 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;
}

View 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() );

View 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;

View File

@@ -29,12 +29,12 @@
#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);

View File

@@ -52,7 +52,7 @@ bool wxMetaFile::SetClipboard(int width, int height)
bool wxMetaFile::Play(wxDC *dc)
{
// TODO
return false;
return FALSE;
}
/*

View 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);

View 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());
}

View 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;
}

View 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

View 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)