Toolbar fixes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4225 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Webster
1999-10-27 22:47:04 +00:00
parent afc31813f6
commit 29435d814d
4 changed files with 201 additions and 167 deletions

View File

@@ -3,17 +3,16 @@
// Purpose: wxFrame class // Purpose: wxFrame class
// Author: David Webster // Author: David Webster
// Modified by: // Modified by:
// Created: 10/06/99 // Created: 10/27/99
// RCS-ID: $Id$ // RCS-ID: $Id$
// Copyright: (c) David Webster // Copyright: (c) David Webster
// Licence: wxWindows licence // Licence: wxWindows license
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#ifndef _WX_FRAME_H_ #ifndef _WX_FRAME_H_
#define _WX_FRAME_H_ #define _WX_FRAME_H_
#include "wx/window.h" #include "wx/window.h"
#include "wx/toolbar.h"
#include "wx/os2/accel.h" #include "wx/os2/accel.h"
#include "wx/icon.h" #include "wx/icon.h"
@@ -23,35 +22,34 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxStatusLineNameStr;
class WXDLLEXPORT wxMenuBar; class WXDLLEXPORT wxMenuBar;
class WXDLLEXPORT wxStatusBar; class WXDLLEXPORT wxStatusBar;
class WXDLLEXPORT wxToolBar;
class WXDLLEXPORT wxFrame: public wxWindow class WXDLLEXPORT wxFrame : public wxWindow
{ {
DECLARE_DYNAMIC_CLASS(wxFrame) DECLARE_DYNAMIC_CLASS(wxFrame)
public: public:
wxFrame(); wxFrame();
inline wxFrame( wxWindow* parent wxFrame(wxWindow *parent,
,wxWindowID id wxWindowID id,
,const wxString& title const wxString& title,
,const wxPoint& pos = wxDefaultPosition const wxPoint& pos = wxDefaultPosition,
,const wxSize& size = wxDefaultSize const wxSize& size = wxDefaultSize,
,long style = wxDEFAULT_FRAME_STYLE long style = wxDEFAULT_FRAME_STYLE,
,const wxString& name = wxFrameNameStr const wxString& name = wxFrameNameStr)
)
{ {
Create(parent, id, title, pos, size, style, name); Create(parent, id, title, pos, size, style, name);
} }
~wxFrame(); ~wxFrame();
bool Create( wxWindow* parent bool Create(wxWindow *parent,
,wxWindowID id wxWindowID id,
,const wxString& title const wxString& title,
,const wxPoint& pos = wxDefaultPosition const wxPoint& pos = wxDefaultPosition,
,const wxSize& size = wxDefaultSize const wxSize& size = wxDefaultSize,
,long style = wxDEFAULT_FRAME_STYLE long style = wxDEFAULT_FRAME_STYLE,
,const wxString& name = wxFrameNameStr const wxString& name = wxFrameNameStr);
);
virtual bool Destroy(); virtual bool Destroy();
@@ -66,10 +64,10 @@ public:
void DetachMenuBar(); void DetachMenuBar();
// Set menu bar // Set menu bar
void SetMenuBar(wxMenuBar *menu_bar); void SetMenuBar(wxMenuBar *menu_bar);
virtual wxMenuBar *GetMenuBar() const ; virtual wxMenuBar *GetMenuBar() const;
// Call this to simulate a menu command // Call this to simulate a menu command
inline bool Command(int id) { return ProcessCommand(id); } bool Command(int id) { return ProcessCommand(id); }
// process menu command: returns TRUE if processed // process menu command: returns TRUE if processed
bool ProcessCommand(int id); bool ProcessCommand(int id);
@@ -202,7 +200,7 @@ protected:
#endif // wxUSE_STATUSBAR #endif // wxUSE_STATUSBAR
#if wxUSE_TOOLBAR #if wxUSE_TOOLBAR
wxToolBar * m_frameToolBar; wxToolBar* m_frameToolBar;
#endif // wxUSE_TOOLBAR #endif // wxUSE_TOOLBAR
private: private:

View File

@@ -3,7 +3,7 @@
// Purpose: wxFrame // Purpose: wxFrame
// Author: David Webster // Author: David Webster
// Modified by: // Modified by:
// Created: 08/12/99 // Created: 10/27/99
// RCS-ID: $Id$ // RCS-ID: $Id$
// Copyright: (c) David Webster // Copyright: (c) David Webster
// Licence: wxWindows licence // Licence: wxWindows licence
@@ -12,6 +12,10 @@
// For compilers that support precompilation, includes "wx.h". // For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h" #include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP #ifndef WX_PRECOMP
#include "wx/setup.h" #include "wx/setup.h"
#include "wx/frame.h" #include "wx/frame.h"
@@ -51,23 +55,20 @@ bool wxFrame::m_useNativeStatusBar = FALSE;
wxFrame::wxFrame() wxFrame::wxFrame()
{ {
#if wxUSE_TOOLBAR
m_frameToolBar = NULL ; m_frameToolBar = NULL ;
#endif
m_frameMenuBar = NULL; m_frameMenuBar = NULL;
m_frameStatusBar = NULL; m_frameStatusBar = NULL;
m_iconized = FALSE; m_iconized = FALSE;
} }
bool wxFrame::Create( wxWindow *parent bool wxFrame::Create(wxWindow *parent,
,wxWindowID id wxWindowID id,
,const wxString& title const wxString& title,
,const wxPoint& pos const wxPoint& pos,
,const wxSize& size const wxSize& size,
,long style long style,
,const wxString& name const wxString& name)
)
{ {
#if wxUSE_TOOLTIPS #if wxUSE_TOOLTIPS
m_hwndToolTip = 0; m_hwndToolTip = 0;
@@ -76,9 +77,7 @@ bool wxFrame::Create( wxWindow *parent
SetName(name); SetName(name);
m_windowStyle = style; m_windowStyle = style;
m_frameMenuBar = NULL; m_frameMenuBar = NULL;
#if wxUSE_TOOLBAR
m_frameToolBar = NULL ; m_frameToolBar = NULL ;
#endif
m_frameStatusBar = NULL; m_frameStatusBar = NULL;
SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE));
@@ -98,6 +97,10 @@ bool wxFrame::Create( wxWindow *parent
m_iconized = FALSE; m_iconized = FALSE;
// we pass NULL as parent to MSWCreate because frames with parents behave
// very strangely under Win95 shell
// Alteration by JACS: keep normal Windows behaviour (float on top of parent)
// with this style.
if ((m_windowStyle & wxFRAME_FLOAT_ON_PARENT) == 0) if ((m_windowStyle & wxFRAME_FLOAT_ON_PARENT) == 0)
parent = NULL; parent = NULL;
@@ -121,14 +124,16 @@ wxFrame::~wxFrame()
if (m_frameMenuBar) if (m_frameMenuBar)
delete m_frameMenuBar; delete m_frameMenuBar;
/* New behaviour March 1998: check if it's the last top-level window */
// if (wxTheApp && (this == wxTheApp->GetTopWindow()))
if (wxTheApp && (wxTopLevelWindows.Number() == 0)) if (wxTheApp && (wxTopLevelWindows.Number() == 0))
{ {
wxTheApp->SetTopWindow(NULL); wxTheApp->SetTopWindow(NULL);
if (wxTheApp->GetExitOnFrameDelete()) if (wxTheApp->GetExitOnFrameDelete())
{ {
// TODO: PostQuitMessage(0); // PostQuitMessage(0);
return;
} }
} }
@@ -139,28 +144,31 @@ wxFrame::~wxFrame()
// Try to bring the parent to the top. // Try to bring the parent to the top.
// MT:Only do this if this frame is currently the active window, else weird // MT:Only do this if this frame is currently the active window, else weird
// things start to happen // things start to happen
// TODO:
/*
if ( wxGetActiveWindow() == this ) if ( wxGetActiveWindow() == this )
if (GetParent() && GetParent()->GetHWND()) if (GetParent() && GetParent()->GetHWND())
// TODO: OS/2 PM version ::BringWindowToTop((HWND) GetParent()->GetHWND());
// ::BringWindowToTop((HWND) GetParent()->GetHWND()); */
return;
} }
// Get size *available for subwindows* i.e. excluding menu bar, toolbar etc. // Get size *available for subwindows* i.e. excluding menu bar, toolbar etc.
void wxFrame::DoGetClientSize(int *x, int *y) const void wxFrame::DoGetClientSize(int *x, int *y) const
{ {
// TODO:
/*
RECT rect; RECT rect;
//TODO: ::GetClientRect(GetHwnd(), &rect); ::GetClientRect(GetHwnd(), &rect);
if ( GetStatusBar() ) if ( GetStatusBar() )
{ {
int statusX, statusY; int statusX, statusY;
GetStatusBar()->GetClientSize(&statusX, &statusY); GetStatusBar()->GetClientSize(&statusX, &statusY);
// TODO: OS/2's rect rect.bottom -= statusY; rect.bottom -= statusY;
} }
wxPoint pt(GetClientAreaOrigin()); wxPoint pt(GetClientAreaOrigin());
/*
rect.bottom -= pt.y; rect.bottom -= pt.y;
rect.right -= pt.x; rect.right -= pt.x;
@@ -177,71 +185,79 @@ void wxFrame::DoSetClientSize(int width, int height)
{ {
HWND hWnd = GetHwnd(); HWND hWnd = GetHwnd();
// TODO:
/*
RECT rect; RECT rect;
// TODO: ::GetClientRect(hWnd, &rect); ::GetClientRect(hWnd, &rect);
RECT rect2; RECT rect2;
//TODO: ::GetWindowRect(hWnd, &rect2); GetWindowRect(hWnd, &rect2);
// Find the difference between the entire window (title bar and all) // Find the difference between the entire window (title bar and all)
// and the client area; add this to the new client size to move the // and the client area; add this to the new client size to move the
// window // window
/*
int actual_width = rect2.right - rect2.left - rect.right + width; int actual_width = rect2.right - rect2.left - rect.right + width;
int actual_height = rect2.bottom - rect2.top - rect.bottom + height; int actual_height = rect2.bottom - rect2.top - rect.bottom + height;
*/
if ( GetStatusBar() ) if ( GetStatusBar() )
{ {
int statusX, statusY; int statusX, statusY;
GetStatusBar()->GetClientSize(&statusX, &statusY); GetStatusBar()->GetClientSize(&statusX, &statusY);
// actual_height += statusY; actual_height += statusY;
} }
/*
wxPoint pt(GetClientAreaOrigin()); wxPoint pt(GetClientAreaOrigin());
actual_width += pt.y; actual_width += pt.y;
actual_height += pt.x; actual_height += pt.x;
POINT point; POINT point;
point.x = rect2.left; point.x = rect2.left;
point.y = rect2.top; point.y = rect2.top;
MoveWindow(hWnd, point.x, point.y, actual_width, actual_height, (BOOL)TRUE); MoveWindow(hWnd, point.x, point.y, actual_width, actual_height, (BOOL)TRUE);
*/
wxSizeEvent event(wxSize(width, height), m_windowId); wxSizeEvent event(wxSize(width, height), m_windowId);
event.SetEventObject( this ); event.SetEventObject( this );
GetEventHandler()->ProcessEvent(event); GetEventHandler()->ProcessEvent(event);
*/
} }
void wxFrame::DoGetSize(int *width, int *height) const void wxFrame::DoGetSize(int *width, int *height) const
{ {
// TODO:
/*
RECT rect; RECT rect;
// TODO: ::GetWindowRect(GetHwnd(), &rect); GetWindowRect(GetHwnd(), &rect);
// *width = rect.right - rect.left; *width = rect.right - rect.left;
// *height = rect.bottom - rect.top; *height = rect.bottom - rect.top;
*/
} }
void wxFrame::DoGetPosition(int *x, int *y) const void wxFrame::DoGetPosition(int *x, int *y) const
{ {
// TODO:
/*
RECT rect; RECT rect;
// TODO: ::GetWindowRect(GetHwnd(), &rect); GetWindowRect(GetHwnd(), &rect);
POINTL point; POINT point;
// point.x = rect.left; point.x = rect.left;
// point.y = rect.top; point.y = rect.top;
*x = point.x; *x = point.x;
*y = point.y; *y = point.y;
*/
} }
bool wxFrame::Show(bool show) bool wxFrame::Show(bool show)
{ {
int cshow; // TODO:
/* /*
int cshow;
if (show) if (show)
cshow = SW_SHOW; cshow = SW_SHOW;
else else
cshow = SW_HIDE; cshow = SW_HIDE;
*/
if (!show) if (!show)
{ {
// Try to highlight the correct window (the parent) // Try to highlight the correct window (the parent)
@@ -250,70 +266,83 @@ bool wxFrame::Show(bool show)
{ {
hWndParent = (HWND) GetParent()->GetHWND(); hWndParent = (HWND) GetParent()->GetHWND();
if (hWndParent) if (hWndParent)
// TODO: ::BringWindowToTop(hWndParent); ::BringWindowToTop(hWndParent);
cshow = (int)show; // just to have something here, remove
} }
} }
// TODO: ::ShowWindow(GetHwnd(), (BOOL)cshow); ShowWindow(GetHwnd(), (BOOL)cshow);
if (show) if (show)
{ {
// TODO: ::BringWindowToTop(GetHwnd()); BringWindowToTop(GetHwnd());
wxActivateEvent event(wxEVT_ACTIVATE, TRUE, m_windowId); wxActivateEvent event(wxEVT_ACTIVATE, TRUE, m_windowId);
event.SetEventObject( this ); event.SetEventObject( this );
GetEventHandler()->ProcessEvent(event); GetEventHandler()->ProcessEvent(event);
} }
return TRUE; return TRUE;
*/
return FALSE;
} }
void wxFrame::Iconize(bool iconize) void wxFrame::Iconize(bool iconize)
{ {
// TODO:
/*
if (!iconize) if (!iconize)
Show(TRUE); Show(TRUE);
int cshow; int cshow;
/*
if (iconize) if (iconize)
cshow = SW_MINIMIZE; cshow = SW_MINIMIZE;
else else
cshow = SW_RESTORE; cshow = SW_RESTORE;
ShowWindow(GetHwnd(), (BOOL)cshow); ShowWindow(GetHwnd(), (BOOL)cshow);
*/
m_iconized = iconize; m_iconized = iconize;
*/
} }
// Equivalent to maximize/restore in Windows // Equivalent to maximize/restore in Windows
void wxFrame::Maximize(bool maximize) void wxFrame::Maximize(bool maximize)
{ {
// TODO:
/*
Show(TRUE); Show(TRUE);
int cshow; int cshow;
/*
if (maximize) if (maximize)
cshow = SW_MAXIMIZE; cshow = SW_MAXIMIZE;
else else
cshow = SW_RESTORE; cshow = SW_RESTORE;
ShowWindow(GetHwnd(), cshow); ShowWindow(GetHwnd(), cshow);
*/
m_iconized = FALSE; m_iconized = FALSE;
*/
} }
bool wxFrame::IsIconized() const bool wxFrame::IsIconized() const
{ {
// TODO: ((wxFrame *)this)->m_iconized = (::IsIconic(GetHwnd()) != 0); // TODO:
/*
((wxFrame *)this)->m_iconized = (::IsIconic(GetHwnd()) != 0);
return m_iconized; return m_iconized;
*/
return FALSE;
} }
// Is it maximized? // Is it maximized?
bool wxFrame::IsMaximized() const bool wxFrame::IsMaximized() const
{ {
//TODO: return (::IsZoomed(GetHwnd()) != 0) ; // return (::IsZoomed(GetHwnd()) != 0) ;
return FALSE; // remove return FALSE;
} }
void wxFrame::SetIcon(const wxIcon& icon) void wxFrame::SetIcon(const wxIcon& icon)
{ {
// TODO:
/*
m_icon = icon; m_icon = icon;
if ( m_icon.Ok() )
SendMessage(GetHwnd(), WM_SETICON,
(WPARAM)TRUE, (LPARAM)(HICON) m_icon.GetHICON());
*/
} }
#if wxUSE_STATUSBAR #if wxUSE_STATUSBAR
@@ -321,21 +350,24 @@ wxStatusBar *wxFrame::OnCreateStatusBar(int number, long style, wxWindowID id,
const wxString& name) const wxString& name)
{ {
wxStatusBar *statusBar = NULL; wxStatusBar *statusBar = NULL;
{
statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20),
style, name);
statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20), // Set the height according to the font and the border size
style, name); wxClientDC dc(statusBar);
dc.SetFont(statusBar->GetFont());
// Set the height according to the font and the border size long x, y;
wxClientDC dc(statusBar); dc.GetTextExtent("X", &x, &y);
dc.SetFont(statusBar->GetFont());
long x, y; int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY());
dc.GetTextExtent("X", &x, &y);
int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY()); statusBar->SetSize(-1, -1, 100, height);
statusBar->SetSize(-1, -1, 100, height); }
statusBar->SetFieldsCount(number);
return statusBar; statusBar->SetFieldsCount(number);
return statusBar;
} }
wxStatusBar* wxFrame::CreateStatusBar(int number, long style, wxWindowID id, wxStatusBar* wxFrame::CreateStatusBar(int number, long style, wxWindowID id,
@@ -392,7 +424,7 @@ void wxFrame::DetachMenuBar()
{ {
if (m_frameMenuBar) if (m_frameMenuBar)
{ {
// Fix this in wxMenuBar m_frameMenuBar->Detach(); m_frameMenuBar->Detach();
m_frameMenuBar = NULL; m_frameMenuBar = NULL;
} }
} }
@@ -405,12 +437,12 @@ void wxFrame::SetMenuBar(wxMenuBar *menu_bar)
return; return;
} }
// Fix this in wxMenuBar wxCHECK_RET( !menu_bar->GetFrame(), wxT("this menubar is already attached") ); wxCHECK_RET( !menu_bar->GetFrame(), wxT("this menubar is already attached") );
if (m_frameMenuBar) if (m_frameMenuBar)
delete m_frameMenuBar; delete m_frameMenuBar;
// Fix this in wxMenuBar m_hMenu = menu_bar->Create(); m_hMenu = menu_bar->Create();
if ( !m_hMenu ) if ( !m_hMenu )
return; return;
@@ -418,13 +450,14 @@ void wxFrame::SetMenuBar(wxMenuBar *menu_bar)
InternalSetMenuBar(); InternalSetMenuBar();
m_frameMenuBar = menu_bar; m_frameMenuBar = menu_bar;
// Fix this in wxMenuBar menu_bar->Attach(this); menu_bar->Attach(this);
} }
void wxFrame::InternalSetMenuBar() void wxFrame::InternalSetMenuBar()
{ {
// TODO: // TODO:
/* if ( !::SetMenu(GetHwnd(), (HMENU)m_hMenu) ) /*
if ( !::SetMenu(GetHwnd(), (HMENU)m_hMenu) )
{ {
wxLogLastError("SetMenu"); wxLogLastError("SetMenu");
} }
@@ -461,6 +494,7 @@ bool wxFrame::OS2Create(int id, wxWindow *parent, const wxChar *wclass, wxWindow
// If child windows aren't properly drawn initially, WS_CLIPCHILDREN // If child windows aren't properly drawn initially, WS_CLIPCHILDREN
// could be the culprit. But without it, you can get a lot of flicker. // could be the culprit. But without it, you can get a lot of flicker.
// TODO: // TODO:
/* /*
DWORD msflags = 0; DWORD msflags = 0;
@@ -513,7 +547,7 @@ bool wxFrame::OS2Create(int id, wxWindow *parent, const wxChar *wclass, wxWindow
extendedStyle |= WS_EX_TOPMOST; extendedStyle |= WS_EX_TOPMOST;
m_iconized = FALSE; m_iconized = FALSE;
if ( !wxWindow::OS2Create(id, parent, wclass, wx_win, title, x, y, width, height, if ( !wxWindow::MSWCreate(id, parent, wclass, wx_win, title, x, y, width, height,
msflags, NULL, extendedStyle) ) msflags, NULL, extendedStyle) )
return FALSE; return FALSE;
@@ -521,8 +555,10 @@ bool wxFrame::OS2Create(int id, wxWindow *parent, const wxChar *wclass, wxWindow
// style instead of WS_OVERLAPPED // style instead of WS_OVERLAPPED
if (width > -1 && height > -1) if (width > -1 && height > -1)
::PostMessage(GetHwnd(), WM_SIZE, SIZE_RESTORED, MAKELPARAM(width, height)); ::PostMessage(GetHwnd(), WM_SIZE, SIZE_RESTORED, MAKELPARAM(width, height));
*/
return TRUE; return TRUE;
*/
return FALSE;
} }
// Default resizing behaviour - if only ONE subwindow, resize to client // Default resizing behaviour - if only ONE subwindow, resize to client
@@ -625,13 +661,10 @@ void wxFrame::OnMenuHighlight(wxMenuEvent& event)
if ( menuId != -1 ) if ( menuId != -1 )
{ {
wxMenuBar *menuBar = GetMenuBar(); wxMenuBar *menuBar = GetMenuBar();
// Fix this in wxMenuBar
/*
if (menuBar && menuBar->FindItem(menuId)) if (menuBar && menuBar->FindItem(menuId))
{ {
help = menuBar->GetHelpString(menuId); help = menuBar->GetHelpString(menuId);
} }
*/
} }
// set status text even if the string is empty - this will at // set status text even if the string is empty - this will at
@@ -670,7 +703,6 @@ bool wxFrame::ProcessCommand(int id)
wxPoint wxFrame::GetClientAreaOrigin() const wxPoint wxFrame::GetClientAreaOrigin() const
{ {
wxPoint pt(0, 0); wxPoint pt(0, 0);
#if wxUSE_TOOLBAR
if (GetToolBar()) if (GetToolBar())
{ {
int w, h; int w, h;
@@ -685,13 +717,12 @@ wxPoint wxFrame::GetClientAreaOrigin() const
pt.y += h; pt.y += h;
} }
} }
#endif
return pt; return pt;
} }
void wxFrame::DoScreenToClient(int *x, int *y) const void wxFrame::DoScreenToClient(int *x, int *y) const
{ {
wxWindow::ScreenToClient(x, y); wxWindow::DoScreenToClient(x, y);
// We may be faking the client origin. // We may be faking the client origin.
// So a window that's really at (0, 30) may appear // So a window that's really at (0, 30) may appear
@@ -739,14 +770,16 @@ wxToolBar* wxFrame::OnCreateToolBar(long style, wxWindowID id, const wxString& n
void wxFrame::PositionToolBar() void wxFrame::PositionToolBar()
{ {
// TODO:
/*
RECT rect; RECT rect;
// TODO: ::GetClientRect(GetHwnd(), &rect); ::GetClientRect(GetHwnd(), &rect);
if ( GetStatusBar() ) if ( GetStatusBar() )
{ {
int statusX, statusY; int statusX, statusY;
GetStatusBar()->GetClientSize(&statusX, &statusY); GetStatusBar()->GetClientSize(&statusX, &statusY);
// TODO: rect.bottom -= statusY; rect.bottom -= statusY;
} }
if (GetToolBar()) if (GetToolBar())
@@ -757,14 +790,15 @@ void wxFrame::PositionToolBar()
if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL) if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL)
{ {
// Use the 'real' MSW position // Use the 'real' MSW position
GetToolBar()->SetSize(0, 0, tw, rect.yBottom, wxSIZE_NO_ADJUSTMENTS); GetToolBar()->SetSize(0, 0, tw, rect.bottom, wxSIZE_NO_ADJUSTMENTS);
} }
else else
{ {
// Use the 'real' MSW position // Use the 'real' MSW position
GetToolBar()->SetSize(0, 0, rect.xRight, th, wxSIZE_NO_ADJUSTMENTS); GetToolBar()->SetSize(0, 0, rect.right, th, wxSIZE_NO_ADJUSTMENTS);
} }
} }
*/
} }
#endif // wxUSE_TOOLBAR #endif // wxUSE_TOOLBAR
@@ -810,17 +844,16 @@ void wxFrame::MakeModal(bool modal)
bool wxFrame::OS2TranslateMessage(WXMSG* pMsg) bool wxFrame::OS2TranslateMessage(WXMSG* pMsg)
{ {
// TODO: if ( wxWindow::OS2TranslateMessage(pMsg) ) if ( wxWindow::OS2TranslateMessage(pMsg) )
// return TRUE; return TRUE;
// try the menu bar accels // try the menu bar accels
wxMenuBar *menuBar = GetMenuBar(); wxMenuBar *menuBar = GetMenuBar();
if ( !menuBar ) if ( !menuBar )
return FALSE; return FALSE;
// TODO: const wxAcceleratorTable& acceleratorTable = menuBar->GetAccelTable(); const wxAcceleratorTable& acceleratorTable = menuBar->GetAccelTable();
// return acceleratorTable.Translate(this, pMsg); return acceleratorTable.Translate(this, pMsg);
return TRUE;
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
@@ -829,60 +862,64 @@ bool wxFrame::OS2TranslateMessage(WXMSG* pMsg)
bool wxFrame::HandlePaint() bool wxFrame::HandlePaint()
{ {
RECT rect;
// TODO: // TODO:
// if ( GetUpdateRect(GetHwnd(), &rect, FALSE) ) /*
// { RECT rect;
// if ( m_iconized ) if ( GetUpdateRect(GetHwnd(), &rect, FALSE) )
// { {
// HICON hIcon = m_icon.Ok() ? GetHiconOf(m_icon) if ( m_iconized )
// : (HICON)m_defaultIcon; {
// HICON hIcon = m_icon.Ok() ? GetHiconOf(m_icon)
: (HICON)m_defaultIcon;
// Hold a pointer to the dc so long as the OnPaint() message // Hold a pointer to the dc so long as the OnPaint() message
// is being processed // is being processed
// PAINTSTRUCT ps;
// PAINTSTRUCT ps; HDC hdc = ::BeginPaint(GetHwnd(), &ps);
// HDC hdc = ::BeginPaint(GetHwnd(), &ps);
// // Erase background before painting or we get white background // Erase background before painting or we get white background
// OS2DefWindowProc(WM_ICONERASEBKGND, (WORD)(LONG)ps.hdc, 0L); MSWDefWindowProc(WM_ICONERASEBKGND, (WORD)(LONG)ps.hdc, 0L);
//
// if ( hIcon ) if ( hIcon )
// { {
// RECT rect; RECT rect;
// TODO: ::GetClientRect(GetHwnd(), &rect); ::GetClientRect(GetHwnd(), &rect);
// FIXME: why hardcoded? // FIXME: why hardcoded?
// static const int icon_width = 32; static const int icon_width = 32;
// static const int icon_height = 32; static const int icon_height = 32;
//
// int icon_x = (int)((rect.right - icon_width)/2); int icon_x = (int)((rect.right - icon_width)/2);
// int icon_y = (int)((rect.bottom - icon_height)/2); int icon_y = (int)((rect.bottom - icon_height)/2);
//
// TODO: ::DrawIcon(hdc, icon_x, icon_y, hIcon); ::DrawIcon(hdc, icon_x, icon_y, hIcon);
// } }
//
// TODO: ::EndPaint(GetHwnd(), &ps); ::EndPaint(GetHwnd(), &ps);
//
// return TRUE; return TRUE;
// } }
// else else
// { {
// return wxWindow::HandlePaint(); return wxWindow::HandlePaint();
// } }
// } }
// else else
// { {
// // nothing to paint - processed // nothing to paint - processed
// return TRUE; return TRUE;
// } }
return TRUE; */
return FALSE;
} }
bool wxFrame::HandleSize(int x, int y, WXUINT id) bool wxFrame::HandleSize(int x, int y, WXUINT id)
{ {
bool processed = FALSE; bool processed = FALSE;
/* switch ( id ) // TODO:
/*
switch ( id )
{ {
case SIZENORMAL: case SIZENORMAL:
// only do it it if we were iconized before, otherwise resizing the // only do it it if we were iconized before, otherwise resizing the
@@ -910,10 +947,9 @@ bool wxFrame::HandleSize(int x, int y, WXUINT id)
*/ */
if ( !m_iconized ) if ( !m_iconized )
{ {
// forward WM_SIZE to status bar control
PositionStatusBar(); PositionStatusBar();
#if wxUSE_TOOLBAR
PositionToolBar(); PositionToolBar();
#endif
wxSizeEvent event(wxSize(x, y), m_windowId); wxSizeEvent event(wxSize(x, y), m_windowId);
event.SetEventObject( this ); event.SetEventObject( this );
@@ -930,8 +966,7 @@ bool wxFrame::HandleCommand(WXWORD id, WXWORD cmd, WXHWND control)
// In case it's e.g. a toolbar. // In case it's e.g. a toolbar.
wxWindow *win = wxFindWinFromHandle(control); wxWindow *win = wxFindWinFromHandle(control);
if ( win ) if ( win )
// TODO: return win->OS2Command(cmd, id); return win->OS2Command(cmd, id);
return TRUE;
} }
// handle here commands from menus and accelerators // handle here commands from menus and accelerators
@@ -942,8 +977,7 @@ bool wxFrame::HandleCommand(WXWORD id, WXWORD cmd, WXHWND control)
wxMenu *popupMenu = wxCurrentPopupMenu; wxMenu *popupMenu = wxCurrentPopupMenu;
wxCurrentPopupMenu = NULL; wxCurrentPopupMenu = NULL;
// return popupMenu->OS2Command(cmd, id); return popupMenu->OS2Command(cmd, id);
return TRUE;
} }
if ( ProcessCommand(id) ) if ( ProcessCommand(id) )
@@ -963,6 +997,7 @@ bool wxFrame::HandleMenuSelect(WXWORD nItem, WXWORD flags, WXHMENU hMenu)
// menu was removed from screen // menu was removed from screen
item = -1; item = -1;
} }
// TODO:
/* /*
else if ( !(flags & MF_POPUP) && !(flags & MF_SEPARATOR) ) else if ( !(flags & MF_POPUP) && !(flags & MF_SEPARATOR) )
{ {

View File

@@ -659,9 +659,9 @@ $(COMLIBOBJS2):
copy ..\common\$D\valgen.obj copy ..\common\$D\valgen.obj
copy ..\common\$D\validate.obj copy ..\common\$D\validate.obj
copy ..\common\$D\valtext.obj copy ..\common\$D\valtext.obj
copy ..\common\$D\variant.obj
$(COMLIBOBJS3): $(COMLIBOBJS3):
copy ..\common\$D\variant.obj
copy ..\common\$D\wfstream.obj copy ..\common\$D\wfstream.obj
copy ..\common\$D\wincmn.obj copy ..\common\$D\wincmn.obj
copy ..\common\$D\wxchar.obj copy ..\common\$D\wxchar.obj

View File

@@ -16,7 +16,7 @@
#include "wx/wx.h" #include "wx/wx.h"
#endif #endif
#if wxUSE_BUTTONBAR && wxUSE_TOOLBAR && defined(__WIN95__) #if wxUSE_BUTTONBAR && wxUSE_TOOLBAR
#include "malloc.h" #include "malloc.h"
#define INCL_PM #define INCL_PM
@@ -157,14 +157,16 @@ bool wxToolBar::Create(wxWindow *parent,
// Toolbar-specific initialisation // Toolbar-specific initialisation
::SendMessage(hWndToolbar, TB_BUTTONSTRUCTSIZE, ::SendMessage(hWndToolbar, TB_BUTTONSTRUCTSIZE,
(WPARAM)sizeof(TBBUTTON), (LPARAM)0); (WPARAM)sizeof(TBBUTTON), (LPARAM)0);
*/
m_hWnd = (WXHWND) hWndToolbar; m_hWnd = (WXHWND) hWndToolbar;
if (parent) if (parent)
parent->AddChild(this); parent->AddChild(this);
SubclassWin((WXHWND)hWndToolbar); SubclassWin((WXHWND)hWndToolbar);
return TRUE; return TRUE;
*/
return FALSE;
} }
wxToolBar::~wxToolBar() wxToolBar::~wxToolBar()
@@ -553,6 +555,8 @@ void wxToolBar::OnMouseEvent(wxMouseEvent& event)
void wxMapBitmap(HBITMAP hBitmap, int width, int height) void wxMapBitmap(HBITMAP hBitmap, int width, int height)
{ {
// TODO:
/*
COLORMAP ColorMap[] = { COLORMAP ColorMap[] = {
{BGR_BUTTONTEXT, COLOR_BTNTEXT}, // black {BGR_BUTTONTEXT, COLOR_BTNTEXT}, // black
{BGR_BUTTONSHADOW, COLOR_BTNSHADOW}, // dark grey {BGR_BUTTONSHADOW, COLOR_BTNSHADOW}, // dark grey
@@ -581,29 +585,26 @@ void wxMapBitmap(HBITMAP hBitmap, int width, int height)
{ {
for ( j = 0; j < height; j++) for ( j = 0; j < height; j++)
{ {
// COLORREF pixel = ::GetPixel(hdcMem, i, j); COLORREF pixel = ::GetPixel(hdcMem, i, j);
/*
BYTE red = GetRValue(pixel); BYTE red = GetRValue(pixel);
BYTE green = GetGValue(pixel); BYTE green = GetGValue(pixel);
BYTE blue = GetBValue(pixel); BYTE blue = GetBValue(pixel);
*/
for ( k = 0; k < NUM_MAPS; k ++) for ( k = 0; k < NUM_MAPS; k ++)
{ {
if ( ColorMap[k].from == pixel ) if ( ColorMap[k].from == pixel )
{ {
// /* COLORREF actualPixel = */ ::SetPixel(hdcMem, i, j, ColorMap[k].to); COLORREF actualPixel = ::SetPixel(hdcMem, i, j, ColorMap[k].to);
break; break;
} }
} }
} }
} }
SelectObject(hdcMem, hbmOld);
// SelectObject(hdcMem, hbmOld); DeleteObject(hdcMem);
// DeleteObject(hdcMem);
} }
*/
} }
// Some experiments... // Some experiments...