Главная :: Программы для программирования :: wxWidgets :: Перевод книги "Programming with wxWidgets" :: Глава II – Начало. Часть 3
Встречает один веб мастер другого и говорит: - Слушай, вчера был на твоем сайте. Здорово! Круто! - А, так это был ты.

Глава II – Начало. Часть 3

Текст программы

Объединим все кусочки вместе, чтобы увидеть как будет выглядеть программа целиком. Обычно я отделяю заголовочные файлы и файлы реализации, но для данного крошечного примера я объединил их в один файл.

// Имя: minimal.cpp // Цель: Пример минимального приложения на wxWidgets // Автор: Julian Smart #include "wx/wx.h" // Объявляем класс приложения class MyApp : public wxApp { public: // Вызывается при старте приложения virtual bool OnInit(); }; // Объявляем класс главного окна class MyFrame : public wxFrame { public: //Конструктор MyFrame(const wxString& title); // Обработчики сообщений void OnQuit(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); private: // Этот класс перехватывает сообщения DECLARE_EVENT_TABLE() }; // Реализация MyApp& GetApp() DECLARE_APP(MyApp) // Говорит wxWidgets, что надо создать объект MyApp IMPLEMENT_APP(MyApp) // Инициализируем приложение bool MyApp::OnInit() { // Создаем главное окно приложения MyFrame *frame = new MyFrame(wxT("Minimal wxWidgets App")); // Показываем его frame->Show(true); // Запускаем петлю сообщений return true; } // Таблица сообщений для MyFrame BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(wxID_ABOUT, MyFrame::OnAbout) EVT_MENU(wxID_EXIT, MyFrame::OnQuit) END_EVENT_TABLE() void MyFrame::OnAbout(wxCommandEvent& event) { wxString msg; msg.Printf(wxT("Hello and welcome to %s"), wxVERSION_STRING); wxMessageBox(msg, wxT("About Minimal"), wxOK | wxICON_INFORMATION, this); } void MyFrame::OnQuit(wxCommandEvent& event) { // Уничтожаем фрейм Close(); } #include "mondrian.xpm" MyFrame::MyFrame(const wxString& title) : wxFrame(NULL, wxID_ANY, title) { // Устанавливаем иконку для фрейма SetIcon(wxIcon(mondrian_xpm)); // Создаем меню wxMenu *fileMenu = new wxMenu; // Добавляем пункт "About" (о приложении), который // должен показывать маленькую помощь wxMenu *helpMenu = new wxMenu; helpMenu->Append(wxID_ABOUT, wxT("&About...\tF1"), wxT("Show about dialog")); fileMenu->Append(wxID_EXIT, wxT("E&xit\tAlt-X"), wxT("Quit this program")); // Теперь добавляем созданное меню в строку меню... wxMenuBar *menuBar = new wxMenuBar(); menuBar->Append(fileMenu, wxT("&File")); menuBar->Append(helpMenu, wxT("&Help")); // ... и присоединяем к фрейму SetMenuBar(menuBar); // Создаем строку состояния для красоты CreateStatusBar(2); SetStatusText(wxT("Welcome to wxWidgets!")); }

Компиляция и запуск программы

Данный пример можно найти на прилагаемом CD-ROM в папке examples/chap02. Для компиляции его необходимо скопировать на ваш жесткий диск. В связи с тем, что невозможно создать makefile, который будет работать “из коробки” с любой средой программирования, которая возможно установлена у читателя, мы сделали проект для среды DialogBlocks с конфигурацией, подходящей для большинства платформ и компиляторов. Обратитесь к Приложению 3 Создание приложений с помощью DialogBlocks, чтобы настроить программу DialogBlocks для ее использования на вашем компьютере. Детали компиляции wxWidgets-приложений рассматриваются в Приложении 2 Сборка ваших собственных приложений на wxWidgets.Установите wxWidgets и DialogBlocks с предлагаемого CD. В системе Windows вам также необходимо установить подходящий компилятор (один из них присутствует на CD), если он у вас еще не установлен. После этого пропишите пути до библиотеки wxWidgets и вашего компилятора в настройках DialogBlocks на вкладке Paths и откройте файл examples/chap02/minimal.pjd. Выберете подходящую конфигурацию для вашего компилятора и платформы, например MinGW Debug или VC++ Debug (Windows), GCC Debug GTK+ (Linux) или GCC Debug Mac (Mac OS X). Далее нажмите кнопку Build and Run Project. Возможно среда спросит не хотите ли вы собрать библиотеку wxWidgets, если вы еще этого не сделали.Вы можете найти похожий пример в папке samples/minimal в дистрибутиве wxWidgets. Если вы не хотите использовать DialogBlocks, то вы можете просто скомпилировать указанный пример вместо нашего. Обратитесь к Приложению 1 Установка wxWidgets, чтобы узнать как собрать стандартные примеры wxWidgets.

Поток выполнения

Действия, происходящие при старте программы:

Как уже было указано, приложение завершается, когда закрывается основной фрейм, что можно сделать через соответствующий пункт меню, через стандартные кнопки или стандартные меню (это зависит от платформы).

Итоги

Глава дает представление о том, как работает простейшее приложение на wxWidgets. Мы коснулись темы обработки сообщений, использования класса wxFrame инициализации приложения, создания меню и строки состояния. Однако, несмотря на сложность вашего реального приложения, базовые принципы его функционирования останутся теми же самыми, как и у нашего маленького примера. В следующей главе мы подробнее рассмотрим сообщения и методы их обработки.