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:
@@ -824,4 +824,4 @@ int isascii( int c )
|
||||
{
|
||||
return ( c >= 0 && c < 128 ) ;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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() );
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
|
@@ -52,7 +52,7 @@ bool wxMetaFile::SetClipboard(int width, int height)
|
||||
bool wxMetaFile::Play(wxDC *dc)
|
||||
{
|
||||
// TODO
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -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);
|
||||
|
@@ -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());
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user