Toolbar fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4225 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -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,6 +22,7 @@ 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
|
||||||
{
|
{
|
||||||
@@ -30,28 +30,26 @@ class WXDLLEXPORT wxFrame: public wxWindow
|
|||||||
|
|
||||||
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();
|
||||||
|
|
||||||
@@ -69,7 +67,7 @@ public:
|
|||||||
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);
|
||||||
|
@@ -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,7 +350,7 @@ 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),
|
statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20),
|
||||||
style, name);
|
style, name);
|
||||||
|
|
||||||
@@ -333,7 +362,10 @@ wxStatusBar *wxFrame::OnCreateStatusBar(int number, long style, wxWindowID id,
|
|||||||
dc.GetTextExtent("X", &x, &y);
|
dc.GetTextExtent("X", &x, &y);
|
||||||
|
|
||||||
int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY());
|
int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY());
|
||||||
|
|
||||||
statusBar->SetSize(-1, -1, 100, height);
|
statusBar->SetSize(-1, -1, 100, height);
|
||||||
|
}
|
||||||
|
|
||||||
statusBar->SetFieldsCount(number);
|
statusBar->SetFieldsCount(number);
|
||||||
return statusBar;
|
return statusBar;
|
||||||
}
|
}
|
||||||
@@ -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;
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// return wxWindow::HandlePaint();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// // nothing to paint - processed
|
|
||||||
// return TRUE;
|
|
||||||
// }
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return wxWindow::HandlePaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// nothing to paint - processed
|
||||||
|
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) )
|
||||||
{
|
{
|
||||||
|
@@ -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
|
||||||
|
@@ -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...
|
||||||
|
Reference in New Issue
Block a user