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

📄 mmboard.cpp

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/////////////////////////////////////////////////////////////////////////////// Name:        mmboard.cpp// Purpose:     Multimedia Library sample// Author:      Guilhem Lavaux (created from minimal by J. Smart)// Modified by:// Created:     13/02/2000// RCS-ID:      $Id: mmboard.cpp,v 1.19 2006/11/07 15:32:27 VZ Exp $// Copyright:   (c) Guilhem Lavaux// Licence:     wxWindows licence/////////////////////////////////////////////////////////////////////////////// ============================================================================// declarations// ============================================================================// ----------------------------------------------------------------------------// headers// ----------------------------------------------------------------------------// For compilers that support precompilation, includes "wx/wx.h".#include "wx/wxprec.h"#ifdef __BORLANDC__    #pragma hdrstop#endif// for all others, include the necessary headers (this file is usually all you// need because it includes almost all "standard" wxWidgets headers#ifndef WX_PRECOMP    #include "wx/wx.h"#endif// ----------------------------------------------------------------------------// ressources// ----------------------------------------------------------------------------// the application icon#if !defined(__WXMSW__) && !defined(__WXPM__)    #include "mondrian.xpm"#endif// include multimedia classes#include "wx/mmedia/sndbase.h"#ifdef __WIN32__    #include "wx/mmedia/sndwin.h"#endif#ifdef __UNIX__    #include "wx/mmedia/sndoss.h"    #include "wx/mmedia/sndesd.h"#endif#include "wx/statline.h"#include "wx/stattext.h"// include personnal classes#include "mmboard.h"#include "mmbman.h"#include "play.xpm"#include "stop.xpm"#include "eject.xpm"#include "pause.xpm"// ----------------------------------------------------------------------------// private classes// ----------------------------------------------------------------------------// Main Multimedia Board frameclass MMBoardFrame : public wxFrame{public:    // ctor(s)    MMBoardFrame(const wxString& title, const wxPoint& pos, const wxSize& size);    // dtor    ~MMBoardFrame();    // event handlers    void OnQuit(wxCommandEvent& event);    void OnAbout(wxCommandEvent& event);    void OnOpen(wxCommandEvent& event);    void OnPlay(wxCommandEvent& event);    void OnStop(wxCommandEvent& event);    void OnPause(wxCommandEvent& event);    void OnEject(wxCommandEvent& event);    void OnRefreshInfo(wxEvent& event);    void OnSetPosition(wxCommandEvent& event);    void OpenVideoWindow();    void CloseVideoWindow();private:    // any class wishing to process wxWidgets events must use this macro    DECLARE_EVENT_TABLE()private:    void UpdateMMedInfo();    void UpdateInfoText();    MMBoardFile *m_opened_file;    wxSlider *m_positionSlider;    wxBitmapButton *m_playButton, *m_pauseButton, *m_stopButton, *m_ejectButton;    wxStaticText *m_fileType, *m_infoText;    wxWindow *m_video_window;    wxPanel *m_panel;    wxSizer *m_sizer;    wxTimer *m_refreshTimer;};// ----------------------------------------------------------------------------// constants// ----------------------------------------------------------------------------// IDs for the controls and the menu commandsenum{    // menu items    MMBoard_Quit = 1,    MMBoard_Open,    MMBoard_About,    MMBoard_PositionSlider,    MMBoard_PlayButton,    MMBoard_PauseButton,    MMBoard_ResumeButton,    MMBoard_StopButton,    MMBoard_EjectButton,    MMBoard_RefreshInfo};// ----------------------------------------------------------------------------// event tables and other macros for wxWidgets// ----------------------------------------------------------------------------BEGIN_EVENT_TABLE(MMBoardFrame, wxFrame)  EVT_MENU(MMBoard_Quit,  MMBoardFrame::OnQuit)  EVT_MENU(MMBoard_About, MMBoardFrame::OnAbout)  EVT_MENU(MMBoard_Open, MMBoardFrame::OnOpen)  EVT_BUTTON(MMBoard_PlayButton, MMBoardFrame::OnPlay)  EVT_BUTTON(MMBoard_StopButton, MMBoardFrame::OnStop)  EVT_BUTTON(MMBoard_PauseButton, MMBoardFrame::OnPause)  EVT_BUTTON(MMBoard_EjectButton, MMBoardFrame::OnEject)  EVT_SLIDER(MMBoard_PositionSlider, MMBoardFrame::OnSetPosition)  EVT_CUSTOM(wxEVT_TIMER, MMBoard_RefreshInfo, MMBoardFrame::OnRefreshInfo)END_EVENT_TABLE()// ---------------------------------------------------------------------------// Main board application launcher// ---------------------------------------------------------------------------IMPLEMENT_APP(MMBoardApp)// ============================================================================// implementation// ============================================================================// ----------------------------------------------------------------------------// the application class// ----------------------------------------------------------------------------bool MMBoardApp::OnInit(){    // create the main application window    MMBoardFrame *frame = new MMBoardFrame(_T("Multimedia Board"),                                 wxPoint(50, 50), wxSize(450, 340));    // and show it (the frames, unlike simple controls, are not shown when    // created initially)    frame->Show();    m_caps = TestMultimediaCaps();    if (!m_caps) {      wxMessageBox(_T("Your system has no multimedia capabilities. We are exiting now."), _T("Major error !"), wxOK | wxICON_ERROR, NULL);      return false;    }    wxString msg;    msg.Printf(_T("Detected : %s%s%s"), (m_caps & MM_SOUND_OSS) ? _T("OSS ") : _T(""),                                (m_caps & MM_SOUND_ESD) ? _T("ESD ") : _T(""),                                (m_caps & MM_SOUND_WIN) ? _T("WIN") : _T(""));    wxMessageBox(msg, _T("Good !"), wxOK | wxICON_INFORMATION, NULL);    // success: wxApp::OnRun() will be called which will enter the main message    // loop and the application will run. If we returned false here, the    // application would exit immediately.    return true;}wxUint8 MMBoardApp::TestMultimediaCaps(){    wxSoundStream *dev;    wxUint8 caps;    caps = 0;#ifdef __WIN32__    // We test the Windows sound support.    dev = new wxSoundStreamWin();    if (dev->GetError() == wxSOUND_NOERROR)        caps |= MM_SOUND_WIN;    delete dev;#elif defined __UNIX__    // We now test the ESD support    dev = new wxSoundStreamESD();    if (dev->GetError() == wxSOUND_NOERROR)        caps |= MM_SOUND_ESD;    delete dev;    // We test the OSS (Open Sound System) support.    // WARNING: There is a conflict between ESD and ALSA. We may be interrested    // in disabling the auto detection of OSS is ESD has been detected.#if 1    if (!(caps & MM_SOUND_ESD)) {#endif    dev = new wxSoundStreamOSS();    if (dev->GetError() == wxSOUND_NOERROR)        caps |= MM_SOUND_OSS;    delete dev;#if 1    }#endif#endif    return caps;}// ----------------------------------------------------------------------------// main frame// ----------------------------------------------------------------------------// frame constructorMMBoardFrame::MMBoardFrame(const wxString& title, const wxPoint& pos, const wxSize& size)       : wxFrame((wxFrame *)NULL, wxID_ANY, title, pos, size){#ifdef __WXMAC__    // we need this in order to allow the about menu relocation, since ABOUT is    // not the default id of the about menu    wxApp::s_macAboutMenuItemId = MMBoard_About;#endif    // set the frame icon    SetIcon(wxICON(mondrian));    // create a menu bar    wxMenu *menuFile = new wxMenu(wxEmptyString, wxMENU_TEAROFF);    // the "About" item should be in the help menu    wxMenu *helpMenu = new wxMenu;    helpMenu->Append(MMBoard_About, wxT("&About...\tCtrl-A"), wxT("Show about dialog"));    menuFile->Append(MMBoard_Open, wxT("&Open\tAlt-O"), wxT("Open file"));    menuFile->AppendSeparator();    menuFile->Append(MMBoard_Quit, wxT("E&xit\tAlt-X"), wxT("Quit this program"));    // now append the freshly created menu to the menu bar...    wxMenuBar *menuBar = new wxMenuBar();    menuBar->Append(menuFile, wxT("&File"));    menuBar->Append(helpMenu, wxT("&Help"));    // ... and attach this menu bar to the frame    SetMenuBar(menuBar);#if wxUSE_STATUSBAR    // create a status bar just for fun (by default with 1 pane only)    CreateStatusBar(3);    SetStatusText(wxT("Welcome to wxWidgets!"));#endif // wxUSE_STATUSBAR    // Misc variables    m_opened_file = NULL;    m_panel = new wxPanel(this, wxID_ANY);    // Initialize main slider    m_positionSlider = new wxSlider( m_panel, MMBoard_PositionSlider, 0, 0, 60,                     wxDefaultPosition, wxSize(300, wxDefaultCoord),                     wxSL_HORIZONTAL | wxSL_AUTOTICKS);    m_positionSlider->SetPageSize(60);  // 60 secs    m_positionSlider->Disable();    // Initialize info panel    wxPanel *infoPanel = new wxPanel( m_panel, wxID_ANY);    infoPanel->SetBackgroundColour(*wxBLACK);    infoPanel->SetForegroundColour(*wxWHITE);    wxBoxSizer *infoSizer = new wxBoxSizer(wxVERTICAL);    m_fileType = new wxStaticText(infoPanel, wxID_ANY, wxEmptyString);#if wxUSE_STATLINE

⌨️ 快捷键说明

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