Page 1 of 3
Осваиваю библиотеку. Сложности.
Posted: Fri Aug 24, 2012 3:21 pm
by baytuch
Ребята, добрый день.
Начал понемногу осваивать библиотеку... ( я "чайник" ) В общем, мне нужно из функции core как-то получить доступ к методам объекта frame... core — "мозг" приложения.
Code: Select all
#include <wx/wx.h>
#include "msc.h"
BEGIN_EVENT_TABLE( MSCFrame, wxFrame )
EVT_MENU( Menu_File_Quit, MSCFrame::OnQuit )
EVT_MENU( Menu_File_About, MSCFrame::OnAbout )
EVT_MENU( Menu_File_Test, MSCFrame::OnTest )
END_EVENT_TABLE()
IMPLEMENT_APP(MSCapp)
bool MSCapp::OnInit(){
MSCFrame *frame = new MSCFrame( wxT( "MySERVER Client ( v 0.1 )" ), wxPoint(50, 50), wxSize(500, 300) );
frame->Show(true);
SetTopWindow(frame);
return true;
};
MSCFrame::MSCFrame( const wxString& title, const wxPoint& pos, const wxSize& size )
: wxFrame((wxFrame *)NULL, -1, title, pos, size){
wxMenu *menuFile = new wxMenu;
menuFile->Append( Menu_File_About, wxT( "&About..." ) );
menuFile->AppendSeparator();
menuFile->Append( Menu_File_Quit, wxT( "E&xit" ) );
menuFile->AppendSeparator();
menuFile->Append( Menu_File_Test, wxT( "Te&st" ) );
wxMenuBar *menuBar = new wxMenuBar;
menuBar->Append( menuFile, wxT( "&File" ) );
SetMenuBar( menuBar );
CreateStatusBar();
SetStatusText( wxT( "Welcome to Kdevelop wxWidgets app!" ) );
};
//Командный процессор
void core(int com){
if ( com == 0 ){
wxMessageBox( wxT( "This is a wxWidgets Hello world sample" ), wxT( "About Hello World" ), wxOK );
};
};
void MSCFrame::OnQuit( wxCommandEvent& WXUNUSED( event ) ){
Close(true);
};
void MSCFrame::OnAbout( wxCommandEvent& WXUNUSED( event ) ){
wxMessageBox( wxT( "This is a wxWidgets Hello world sample" ),
wxT( "About Hello World" ), wxOK | wxICON_INFORMATION, this );
};
void MSCFrame::OnTest( wxCommandEvent& WXUNUSED( event ) ){
core(0);
};
Re: Осваиваю библиотеку. Сложности.
Posted: Fri Aug 24, 2012 6:58 pm
by Mojo
Если я правильно понял, вы имеете в виду что-то типа этого?:
Code: Select all
#include <wx/app.h>
#include "wx/wxprec.h"
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif //WX_PRECOMP
#include <wx/string.h>
#include <wx/bitmap.h>
#include <wx/image.h>
#include <wx/icon.h>
#include <wx/menu.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/statusbr.h>
#include <wx/frame.h>
//Командный процессор
void myCore(int com)
{
if ( com == 0 )
wxMessageBox( wxT( "This is a wxWidgets Hello world sample" ), wxT( "About Hello World" ), wxOK );
};
class MSCFrame : public wxFrame
{
private:
protected:
wxMenuBar* mbar;
wxMenu* fileMenu;
wxStatusBar* statusBar;
// Virtual event handlers, overide them in your derived class
virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
void OnTest( wxCommandEvent& event ); //{ event.Skip(); }
public:
MSCFrame( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("wxWidgets Application Template"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 481,466 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL );
~MSCFrame();
};
///////////////////////////////////////////////////////////////////////////
MSCFrame::MSCFrame( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style )
{
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
mbar = new wxMenuBar( 0 );
fileMenu = new wxMenu();
wxMenuItem* m_OnTest;
m_OnTest = new wxMenuItem( fileMenu, wxID_ANY, wxString( wxT("Test") ) , wxEmptyString, wxITEM_NORMAL );
fileMenu->Append( m_OnTest );
mbar->Append( fileMenu, wxT("&File") );
this->SetMenuBar( mbar );
statusBar = this->CreateStatusBar( 2, wxST_SIZEGRIP, wxID_ANY );
// Connect Events
this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( MSCFrame::OnClose ) );
this->Connect( m_OnTest->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MSCFrame::OnTest ) );
}
MSCFrame::~MSCFrame()
{
// Disconnect Events
this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( MSCFrame::OnClose ) );
this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MSCFrame::OnTest ) );
}
void MSCFrame::OnTest( wxCommandEvent& event )
{
myCore(0);
event.Skip();
}
////////////////////////////////////////////////////////////////////////////////////////
class MSCApp : public wxApp
{
public:
virtual bool OnInit();
};
IMPLEMENT_APP(MSCApp);
bool MSCApp::OnInit()
{
MSCFrame* frame = new MSCFrame(0L);
frame->Centre();
frame->Show();
return true;
}
Скомпилировал одним файлом вроде все работает.....
Re: Осваиваю библиотеку. Сложности.
Posted: Sat Aug 25, 2012 3:09 am
by baytuch
Просмотрел, скомпилировал, запустил, но так и не понял разницу. Обратил внимание на "event.Skip()"... ( буду признателен за комментарий ) Извините...
Мне нужно, к примеру, отправить в СтатусБар сообщение из этой функции...
Re: Осваиваю библиотеку. Сложности.
Posted: Sat Aug 25, 2012 12:44 pm
by Mojo
Тогда лучше сделать эту функцию членом класса фрейма
Code: Select all
#include <wx/app.h>
#include "wx/wxprec.h"
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif //WX_PRECOMP
#include <wx/string.h>
#include <wx/bitmap.h>
#include <wx/image.h>
#include <wx/icon.h>
#include <wx/menu.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/statusbr.h>
#include <wx/frame.h>
class MSCFrame : public wxFrame
{
wxMenuBar* mbar;
wxMenu* fileMenu;
wxStatusBar* statusBar;
public:
MSCFrame( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("wxWidgets Application Template"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 481,466 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL );
~MSCFrame();
// Virtual event handlers, overide them in your derived class
virtual void OnClose( wxCloseEvent& event ){ event.Skip(); }
void OnTest( wxCommandEvent& event ); //{ event.Skip(); }
//Командный процессор
void myCore(int com)
{
if ( com == 0 )
//wxMessageBox( wxT( "This is a wxWidgets Hello world sample" ), wxT( "About Hello World" ), wxOK );
statusBar->SetStatusText(wxT("Это новый текст статусной строки"));
};
};
///////////////////////////////////////////////////////////////////////////
MSCFrame::MSCFrame( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style )
{
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
mbar = new wxMenuBar( 0 );
fileMenu = new wxMenu();
wxMenuItem* m_OnTest;
m_OnTest = new wxMenuItem( fileMenu, wxID_ANY, wxString( wxT("Test") ) , wxEmptyString, wxITEM_NORMAL );
fileMenu->Append( m_OnTest );
mbar->Append( fileMenu, wxT("&File") );
this->SetMenuBar( mbar );
statusBar = this->CreateStatusBar( 2, wxST_SIZEGRIP, wxID_ANY );
// Connect Events
this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( MSCFrame::OnClose ) );
this->Connect( m_OnTest->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MSCFrame::OnTest ) );
}
MSCFrame::~MSCFrame()
{
// Disconnect Events
this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( MSCFrame::OnClose ) );
this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MSCFrame::OnTest ) );
}
void MSCFrame::OnTest( wxCommandEvent& event )
{
myCore(0);
event.Skip();
}
////////////////////////////////////////////////////////////////////////////////////////
class MSCApp : public wxApp
{
public:
virtual bool OnInit();
};
IMPLEMENT_APP(MSCApp);
bool MSCApp::OnInit()
{
MSCFrame* frame = new MSCFrame(0L);
frame->Centre();
frame->Show();
return true;
}
event.Skip(); для того, что бы продолжить обработку сообщений
http://docs.wxwidgets.org/stable/wx_wxe ... xeventskip
P.S. В нашем примере Скип можно опустить.
Re: Осваиваю библиотеку. Сложности.
Posted: Sat Aug 25, 2012 1:21 pm
by Mojo
Или же ввести в функцию указатель на фрейм:
Code: Select all
#include <wx/app.h>
#include "wx/wxprec.h"
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif //WX_PRECOMP
#include <wx/string.h>
#include <wx/bitmap.h>
#include <wx/image.h>
#include <wx/icon.h>
#include <wx/menu.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/statusbr.h>
#include <wx/frame.h>
class MSCFrame;
void myCore(int com, MSCFrame *frame);
class MSCFrame : public wxFrame
{
public:
wxMenuBar* mbar;
wxMenu* fileMenu;
wxStatusBar* statusBar;
MSCFrame( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("wxWidgets Application Template"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 481,466 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL );
~MSCFrame();
// Virtual event handlers, overide them in your derived class
virtual void OnClose( wxCloseEvent& event ){ event.Skip(); }
void OnTest( wxCommandEvent& event ); //{ event.Skip(); }
};
///////////////////////////////////////////////////////////////////////////
MSCFrame::MSCFrame( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style )
{
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
mbar = new wxMenuBar( 0 );
fileMenu = new wxMenu();
wxMenuItem* m_OnTest;
m_OnTest = new wxMenuItem( fileMenu, wxID_ANY, wxString( wxT("Test") ) , wxEmptyString, wxITEM_NORMAL );
fileMenu->Append( m_OnTest );
mbar->Append( fileMenu, wxT("&File") );
this->SetMenuBar( mbar );
statusBar = this->CreateStatusBar( 2, wxST_SIZEGRIP, wxID_ANY );
// Connect Events
this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( MSCFrame::OnClose ) );
this->Connect( m_OnTest->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MSCFrame::OnTest ) );
}
MSCFrame::~MSCFrame()
{
// Disconnect Events
this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( MSCFrame::OnClose ) );
this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MSCFrame::OnTest ) );
}
void MSCFrame::OnTest( wxCommandEvent& event )
{
myCore(0, this);
event.Skip();
}
//Командный процессор
void myCore(int com, MSCFrame *frame)
{
if ( com == 0 )
//wxMessageBox( wxT( "This is a wxWidgets Hello world sample" ), wxT( "About Hello World" ), wxOK );
frame->statusBar->SetStatusText(wxT("Это новый текст статусной строки"));
};
////////////////////////////////////////////////////////////////////////////////////////
class MSCApp : public wxApp
{
public:
virtual bool OnInit();
};
IMPLEMENT_APP(MSCApp);
bool MSCApp::OnInit()
{
MSCFrame* frame = new MSCFrame(0L);
frame->Centre();
frame->Show();
return true;
}
Re: Осваиваю библиотеку. Сложности.
Posted: Sat Aug 25, 2012 1:22 pm
by Mojo
Или же сделать указатель на фрейм глобальным:
Code: Select all
#include <wx/app.h>
#include "wx/wxprec.h"
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif //WX_PRECOMP
#include <wx/string.h>
#include <wx/bitmap.h>
#include <wx/image.h>
#include <wx/icon.h>
#include <wx/menu.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/statusbr.h>
#include <wx/frame.h>
class MSCFrame;
void myCore(int com);
class MSCFrame : public wxFrame
{
public:
wxMenuBar* mbar;
wxMenu* fileMenu;
wxStatusBar* statusBar;
MSCFrame( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("wxWidgets Application Template"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 481,466 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL );
~MSCFrame();
// Virtual event handlers, overide them in your derived class
virtual void OnClose( wxCloseEvent& event ){ event.Skip(); }
void OnTest( wxCommandEvent& event ); //{ event.Skip(); }
};
///////////////////////////////////////////////////////////////////////////
MSCFrame::MSCFrame( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style )
{
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
mbar = new wxMenuBar( 0 );
fileMenu = new wxMenu();
wxMenuItem* m_OnTest;
m_OnTest = new wxMenuItem( fileMenu, wxID_ANY, wxString( wxT("Test") ) , wxEmptyString, wxITEM_NORMAL );
fileMenu->Append( m_OnTest );
mbar->Append( fileMenu, wxT("&File") );
this->SetMenuBar( mbar );
statusBar = this->CreateStatusBar( 2, wxST_SIZEGRIP, wxID_ANY );
// Connect Events
this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( MSCFrame::OnClose ) );
this->Connect( m_OnTest->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MSCFrame::OnTest ) );
}
MSCFrame::~MSCFrame()
{
// Disconnect Events
this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( MSCFrame::OnClose ) );
this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MSCFrame::OnTest ) );
}
void MSCFrame::OnTest( wxCommandEvent& event )
{
myCore(0);
event.Skip();
}
////////////////////////////////////////////////////////////////////////////////////////
MSCFrame* frame;
class MSCApp : public wxApp
{
public:
virtual bool OnInit();
};
IMPLEMENT_APP(MSCApp);
bool MSCApp::OnInit()
{
frame = new MSCFrame(0L);
frame->Centre();
frame->Show();
return true;
}
//Командный процессор
void myCore(int com)
{
if ( com == 0 )
//wxMessageBox( wxT( "This is a wxWidgets Hello world sample" ), wxT( "About Hello World" ), wxOK );
frame->statusBar->SetStatusText(wxT("Это новый текст статусной строки"));
};
Все это уже относится не к wxWidgets а чистому С++
Re: Осваиваю библиотеку. Сложности.
Posted: Sat Aug 25, 2012 9:04 pm
by baytuch
Вот спасибо!... ( уже распечатал ) Последний вариант — то, что нужно.
п.с. Ubuntu 10.04 -- весч!..
Re: Осваиваю библиотеку. Сложности.
Posted: Sun Aug 26, 2012 10:17 am
by Mojo
baytuch wrote:
п.с. Ubuntu 10.04 -- весч!..
У меня ща Xubuntu 12.04 гораздо лучше чем Ubuntu 10.04, забыл сменить подпись к моим постам....
Re: Осваиваю библиотеку. Сложности.
Posted: Sun Aug 26, 2012 10:55 am
by baytuch
У меня еще по мере всего возник вопросец: скажите, а после сборки программ под ОС Windows, ей для запуска на других машинах нужны какие-либо библиотеки или все компоненты wxWidgets сразу "вшиваются" в бинарник?..
Честно говоря, я не большой любитель обновляться ( предыдущая версия: Ubuntu 9.10 ). Последние обновление было обусловлено полной неработоспособностью некоторых программ... Любопытно посмотреть на работу этой ОС ( качну, поюзаю )...
Re: Осваиваю библиотеку. Сложности.
Posted: Sun Aug 26, 2012 11:19 am
by Mojo
baytuch wrote:У меня еще по мере всего возник вопросец: скажите, а после сборки программ под ОС Windows, ей для запуска на других машинах нужны какие-либо библиотеки или все компоненты wxWidgets сразу "вшиваются" в бинарник?..
Если wxWidgets собрана с динамической линковкой, то понадобятся какие-то dll-ки, а если собрать wxWidgets со статической линковкой, то никакие дополнительные библиотеки НЕ будут нужны, исполняемые файлы будут запускаться даже на флешке....
Re: Осваиваю библиотеку. Сложности.
Posted: Sun Aug 26, 2012 11:53 am
by baytuch
Я понял.
Использую пакет wxPack ( 2.8.12 ). У них на сайте нашел инструкцию по сборке, но как оно там собрано в релизе, так и не нашел... В общем, если собрано с динамической, то придется еще и пересобирать библиотеку, поскольку предполагается использование без каких-либо дополнительных компонентов...
Пока не критично, но вопрос повис...
Re: Осваиваю библиотеку. Сложности.
Posted: Sun Aug 26, 2012 12:05 pm
by Mojo
baytuch wrote:Я понял.
Использую пакет wxPack ( 2.8.12 ). У них на сайте нашел инструкцию по сборке, но как оно там собрано в релизе, так и не нашел... В общем, если собрано с динамической, то придется еще и пересобирать библиотеку, поскольку предполагается использование без каких-либо дополнительных компонентов...
Пока не критично, но вопрос повис...
Я никогда не использовал wxPack, поэтому ничего сказать про него не могу. Но когда я сидел в винде, то я использовал Visual C++ Express Edition 2008 в которой легко собирал wxWidgets со статической линковкой. Там даже не пришлось никаких настроек делать, просто выбрал файл проекта для VS а уже там среди множества вариантов сборки (в выпадающем списке сверху) выбрал статическую сборку. И все. Все просто.
Re: Осваиваю библиотеку. Сложности.
Posted: Sun Aug 26, 2012 5:38 pm
by baytuch
Потом поковыряюсь...
Скажите, а можно в одном потоке периодически вызывать функцию, скажем, каждые несколько секунд, при условии, что параллельно работает цикл опроса событий? Честно говоря, очень сомневаюсь, поскольку, как я понял, цикл "заклинивает", когда ожидает очередного события, что делает это "мероприятия" невозможным... Или может можно как-то временно прервать цикл для выполнения поточных служебных задач?..
Re: Осваиваю библиотеку. Сложности.
Posted: Sun Aug 26, 2012 7:39 pm
by Mojo
baytuch wrote:Потом поковыряюсь...
Скажите, а можно в одном потоке периодически вызывать функцию, скажем, каждые несколько секунд, при условии, что параллельно работает цикл опроса событий? Честно говоря, очень сомневаюсь, поскольку, как я понял, цикл "заклинивает", когда ожидает очередного события, что делает это "мероприятия" невозможным... Или может можно как-то временно прервать цикл для выполнения поточных служебных задач?..
К сожалению, мне не приходилось сталкиваться с необходимостью работать с потоками. У меня другие цели и задачи которые я пытаюсь решить используя wxWidgets. Поэтому ничего определенного сказать не могу, рекомендую обратиться к документации по потокам:
http://docs.wxwidgets.org/stable/wx_wxt ... rview.html
Re: Осваиваю библиотеку. Сложности.
Posted: Mon Aug 27, 2012 8:17 pm
by baytuch
Долго-долго гуглил, читал, медитировал (
) и понял, что мне вовсе не нужен параллельный поток. А зачем, ведь есть такой замечательный инструмент, как таймер, который сразу и одним махом решает все проблемы... В общем, а вот что меня так вдохновило:
http://forums.wxwidgets.org/viewtopic.php?f=1&t=16861
http://docs.wxwidgets.org/stable/wx_wxt ... timerevent
http://forums.realcoding.net/index.php?showtopic=22992
"По подобию и образу" ваших примеров переделал свой пример... Но не все так безоблачно — по событию таймера нет доступа к фрейму ( опять ) ( я там строчку с фреймом закомментировал ). Предполагаю, что проблема кроется в том, что событие источником события есть класс таймера... Собсно, вот... Не работает... Подскажите, пожалуйста...
*решил использовать отказаться от использования глобального указателя, так как уже нет смысла в его использовании...
.cpp:
Code: Select all
#include <wx/wx.h>
#include <wx/timer.h>
#include "msc.h"
BEGIN_EVENT_TABLE( MSCFrame, wxFrame )
EVT_TIMER( TIMER_ID, MSCFrame::OnTimer )
EVT_MENU( Menu_File_Quit, MSCFrame::OnQuit )
EVT_MENU( Menu_File_About, MSCFrame::OnAbout )
EVT_MENU( Menu_File_Test, MSCFrame::OnTest )
END_EVENT_TABLE()
IMPLEMENT_APP(MSCapp)
bool MSCapp::OnInit(){
MSCFrame *frame = new MSCFrame( wxT( "MySERVER Client ( v 0.1 )" ), wxPoint(50, 50), wxSize(500, 300));
frame->Show(true);
SetTopWindow(frame);
return true;
};
MSCFrame::MSCFrame( const wxString& title, const wxPoint& pos, const wxSize& size )
: wxFrame((wxFrame *)NULL, -1, title, pos, size), m_timer(this, TIMER_ID){
wxMenu *menuFile = new wxMenu;
menuFile->Append( Menu_File_About, wxT( "&About..." ) );
menuFile->AppendSeparator();
menuFile->Append( Menu_File_Quit, wxT( "E&xit" ) );
menuFile->AppendSeparator();
menuFile->Append( Menu_File_Test, wxT( "Te&st" ) );
wxMenuBar *menuBar = new wxMenuBar;
menuBar->Append( menuFile, wxT( "&File" ) );
SetMenuBar( menuBar );
CreateStatusBar();
SetStatusText( wxT( "Welcome to Kdevelop wxWidgets app!" ) );
m_timer.Start(10000);
};
//Командный процессор
void core(int com, MSCFrame *frame){
if ( com == 0 ){
// wxSleep(10);
frame->SetStatusText(wxT("Test"));
// wxMessageBox( wxT( "This is a wxWidgets Hello world sample" ), wxT( "About Hello World" ), wxOK );
};
};
void MSCFrame::OnQuit( wxCommandEvent& WXUNUSED( event ) ){
Close(true);
};
void MSCFrame::OnAbout( wxCommandEvent& WXUNUSED( event ) ){
wxMessageBox( wxT( "This is a wxWidgets Hello world sample" ),
wxT( "About Hello World" ), wxOK | wxICON_INFORMATION, this );
};
void MSCFrame::OnTest( wxCommandEvent& WXUNUSED( event ) ){
core(0, this);
};
void MSCFrame::OnTimer( wxTimerEvent& event ){
wxMessageBox( wxT( "This is a wxWidgets Hello world sample" ),
wxT( "Сообщение от таймера" ), wxOK | wxICON_INFORMATION, this );
// frame->SetStatusText(wxT("Test"));
};
.h
Code: Select all
#ifndef _MSC_H_
#define _MSC_H_
#include <wx/wx.h>
#include <wx/timer.h>
/**
* @short Application Main Window
* @author Gladun Alexander <[email protected]>
* @version 0.1
*/
class MSCapp : public wxApp{
public:
virtual bool OnInit();
};
class MSCFrame : public wxFrame{
public:
MSCFrame( const wxString& title, const wxPoint& pos, const wxSize& size );
void OnQuit( wxCommandEvent& event );
void OnAbout( wxCommandEvent& event );
void OnTest( wxCommandEvent& event );
void OnTimer(wxTimerEvent& event);
private:
DECLARE_EVENT_TABLE()
wxTimer m_timer;
};
enum{
Menu_File_Quit = 100,
Menu_File_About = 101,
Menu_File_Test = 102,
TIMER_ID = 1000
};
#endif // _MSC_H_