⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fl_demo2.cpp

📁 wxGTK 是 wxWidgets 的 linux GTK+ (>2.2.3)版本。wxWidgets 是一个跨平台的 GUI 框架
💻 CPP
📖 第 1 页 / 共 3 页
字号:
/////////////////////////////////////////////////////////////////////////////// Name:        No names yet.// Purpose:     Contrib. demo// Author:      Aleksandras Gluchovas// Modified by: Sebastian Haase (June 21, 2001)// Created:     04/11/98// RCS-ID:      $Id: fl_demo2.cpp,v 1.11 2005/09/23 12:47:19 MR Exp $// Copyright:   (c) Aleksandras Gluchovas// Licence:     wxWindows license/////////////////////////////////////////////////////////////////////////////// For compilers that support precompilation, includes "wx/wx.h".#include "wx/wxprec.h"#ifdef __BORLANDC__#pragma hdrstop#endif#ifndef WX_PRECOMP#include "wx/wx.h"#endif// wxWidgets headers.#include "wx/treectrl.h"#include "wx/imaglist.h"#include "wx/notebook.h"// fl headers.#include "wx/fl/controlbar.h"#include "wx/fl/rowlayoutpl.h"#include "wx/fl/antiflickpl.h"#include "wx/fl/bardragpl.h"#include "wx/fl/cbcustom.h"#include "wx/fl/rowdragpl.h"// some extra fl plugins.#include "wx/fl/barhintspl.h"#include "wx/fl/hintanimpl.h"#include "wx/fl/dyntbar.h"#include "wx/fl/dyntbarhnd.h"  // fl-dimension-handler for dynamic toolbar#include "fl_demo2.h"/***** Implementation for class MyApp *****/// Create a new application objectIMPLEMENT_APP    (MyApp)// `Main program' equivalent, creating windows and returning main app framebool MyApp::OnInit(void){    // Create the main frame window    MyFrame *frame = new MyFrame(NULL, _("wxWidgets 2.0 wxFrameLayout demo"), 50, 50, 650, 540);    // Give it an icon#ifdef __WINDOWS__    frame->SetIcon(wxIcon(wxT("mondrian")));#endif#ifdef __X__    frame->SetIcon(wxIcon(wxT("aiai.xbm")));#endif    // Make a menubar    wxMenu *file_menu = new wxMenu;    wxMenu *active_menu = new wxMenu;    file_menu->Append( ID_LOAD,  _("&Load layouts")  );    file_menu->Append( ID_STORE, _("&Store layouts") );    file_menu->AppendSeparator();    file_menu->Append( ID_AUTOSAVE, _("&Auto Save Layouts"), _("save layouts on exit"), wxITEM_CHECK );    file_menu->AppendSeparator();    file_menu->Append(MINIMAL_ABOUT, _("A&bout !"));    file_menu->Append(MINIMAL_QUIT, _("E&xit\tTab"));    //active_menu->Append( ID_SETTINGS, _("&Settings...\tCtrl") );    //active_menu->AppendSeparator();    active_menu->Append( ID_REMOVE,    _("&Remove Active") );    active_menu->Append( ID_REMOVEALL, _("Remove &All") );    active_menu->Append( ID_RECREATE,  _("Re&create") );    active_menu->AppendSeparator();    active_menu->Append( ID_FIRST,  _("Activate f&irst layout \tF1"), _("activate it"), wxITEM_CHECK );    active_menu->Append( ID_SECOND, _("Activate &second layout\tF2"), _("activate it"),  wxITEM_CHECK );    active_menu->Append( ID_THIRD,  _("Activate &third layout\tF3"), _("activate it"),   wxITEM_CHECK );    wxMenuBar *menu_bar = new wxMenuBar;    menu_bar->Append(file_menu,   _("&File"));    menu_bar->Append(active_menu, _("Active &Layout"));#if wxUSE_STATUSBAR    frame->CreateStatusBar(3);#endif // wxUSE_STATUSBAR    frame->SetMenuBar(menu_bar);    frame->SyncMenuBarItems();    // Show the frame    frame->Show(true);    SetTopWindow(frame);    return true;}MyFrame::~MyFrame(){    // frame-layouts is not a windows (objects), thus should    // be cleaned up manually    for( int i = 0; i != MAX_LAYOUTS; ++i )    {        if ( mLayouts[i] )            delete mLayouts[i];    }    if ( mpNestedLayout   )        delete mpNestedLayout;    if ( mpAboutBoxLayout )        delete mpAboutBoxLayout;}/***** Implementation for class MyFrame *****/BEGIN_EVENT_TABLE(MyFrame, wxFrame)    EVT_MENU( MINIMAL_QUIT,  MyFrame::OnQuit  )    EVT_MENU( MINIMAL_ABOUT, MyFrame::OnAbout )    EVT_MENU( ID_LOAD,      MyFrame::OnLoad      )    EVT_MENU( ID_STORE,     MyFrame::OnStore     )    EVT_MENU( ID_AUTOSAVE,  MyFrame::OnAutoSave  )    //EVT_MENU( ID_SETTINGS,  MyFrame::OnSettings  )    EVT_MENU( ID_REMOVE,    MyFrame::OnRemove    )    EVT_MENU( ID_REMOVEALL, MyFrame::OnRemoveAll )    EVT_MENU( ID_RECREATE,  MyFrame::OnRecreate  )    EVT_MENU( ID_FIRST,     MyFrame::OnFirst     )    EVT_MENU( ID_SECOND,    MyFrame::OnSecond    )    EVT_MENU( ID_THIRD,     MyFrame::OnThird     )    EVT_BUTTON( ID_SAY_ITSOK, MyFrame::OnSayItsOk )    EVT_BUTTON( ID_BTN_YES,   MyFrame::OnBtnYes )    EVT_BUTTON( ID_BTN_NO,    MyFrame::OnBtnNo )    EVT_BUTTON( ID_BTN_ESC,   MyFrame::OnBtnEsc )    EVT_CHAR_HOOK( MyFrame::OnChar )END_EVENT_TABLE()// My frame constructorMyFrame::MyFrame(wxFrame *frame, const wxChar *title, int x, int y, int w, int h)    : wxFrame(frame, wxID_ANY, title, wxPoint(x, y), wxSize(w, h)),    mpNestedLayout( NULL ),    mpAboutBoxLayout( NULL ),    mActiveLayoutNo( FIRST_LAYOUT ),    mAutoSave( true ),    mSavedAlready( false ),    mpClntWindow( NULL ),    mImageList( 16,16, false, 2 ){    int i;    mpInternalFrm = (wxPanel*)this;    mAboutBox.Create( this, wxID_ANY,  _T("About box in wxWidgets style..."),                      wxDefaultPosition,                      wxSize( 385,220),                      wxDEFAULT_DIALOG_STYLE | wxTAB_TRAVERSAL );    for( i = 0; i != MAX_LAYOUTS; ++i )        mLayouts[i] = NULL;    // image-list is one of the few objects which    // currently cannot be serialized, create it first    // and use it as initial reference (IR)    wxBitmap bmp1,bmp2;    if ( wxFileExists( wxString(wxT(BMP_DIR)) + wxT("folder_icon.bmp") ) )        bmp1.LoadFile( wxString(wxT(BMP_DIR)) + wxT("folder_icon.bmp"), wxBITMAP_TYPE_BMP );    if ( wxFileExists( wxString(wxT(BMP_DIR)) + wxT("class_icon1.bmp") ) )        bmp2.LoadFile( wxString(wxT(BMP_DIR)) + wxT("class_icon1.bmp"), wxBITMAP_TYPE_BMP );    mImageList.Add( bmp1 );    mImageList.Add( bmp2 );    InitAboutBox();    // create multiple layouts    mpNestedLayout = 0;    mpClntWindow = CreateTxtCtrl(wxT("client window"));    // Create all layouts    for( i = 0; i != MAX_LAYOUTS; ++i )    {        CreateLayout( i );    }    // hide others    for( i = SECOND_LAYOUT; i != MAX_LAYOUTS; ++i )    {        mLayouts[i]->HideBarWindows();    }    // activate first one    mLayouts[FIRST_LAYOUT]->Activate();    mActiveLayoutNo = FIRST_LAYOUT;}/*** event handlers ***/bool MyFrame::OnClose(void){    //  USEFUL TRICK:: avoids flickering of application's frame    //                 when closing NN windows on exit:    Show(false);    if ( (mAutoSave && mSavedAlready) || !mAutoSave )    {    }    else    {        wxCommandEvent evt;        OnStore(evt);    }    mAboutBox.Destroy();    Destroy();    return true;}void MyFrame::OnLoad( wxCommandEvent& WXUNUSED(event) ){    wxMessageBox(_("Hey - you found a BIG question-mark !!"));}void MyFrame::OnStore( wxCommandEvent& WXUNUSED(event) ){    wxMessageBox(_("Hey - you found another BIG question-mark !!"));}void MyFrame::OnAutoSave( wxCommandEvent& WXUNUSED(event) ){    mAutoSave = !mAutoSave;    wxCommandEvent evt;    OnStore(evt);    SyncMenuBarItems();}void MyFrame::OnRemove( wxCommandEvent& WXUNUSED(event) ){    RemoveLayout( mActiveLayoutNo );    Refresh();}void MyFrame::OnRemoveAll( wxCommandEvent& WXUNUSED(event) ){    for( int i = 0; i != MAX_LAYOUTS; ++i )    {        RemoveLayout( i );    }    Refresh();}void MyFrame::OnRecreate( wxCommandEvent& event ){    OnRemove( event ); // first destroy active layout    CreateLayout( mActiveLayoutNo );    mLayouts[mActiveLayoutNo]->Activate();}void MyFrame::OnFirst( wxCommandEvent& WXUNUSED(event) ){    ActivateLayout( FIRST_LAYOUT );}void MyFrame::OnSecond( wxCommandEvent& WXUNUSED(event) ){    ActivateLayout( SECOND_LAYOUT );}void MyFrame::OnThird( wxCommandEvent& WXUNUSED(event) ){    ActivateLayout( THIRD_LAYOUT );}void MyFrame::OnQuit( wxCommandEvent& WXUNUSED(event) ){    //  USEFUL TRICK:: avoids flickering of application's frame    //                 when closing NN windows on exit:    Show(false);    if ( (mAutoSave && mSavedAlready) || !mAutoSave )    {    }    else    {        wxCommandEvent evt;        OnStore(evt);    }    Destroy();}void MyFrame::OnAbout( wxCommandEvent& WXUNUSED(event) ){    wxFont font;#ifdef __WXMSW__    font.SetFaceName(wxT("MS Sans Serif"));#else    font.SetFamily( wxSWISS );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -