graywolf's lair

Inhuman being's diary…

Пишем GUI з wxWidgets. Підготовка

| 4 Comments

wxWidgets logo Отож, як і обіцяв, вирішив почати потроху описувати свій досвід освоєння цього GUI-фреймворку. По-перше пара слів про сам wxWidgets. Це вже досить старий і тому стабільний і потужний фреймворк для розробки графічних інтерфейсів. Він кросплатформенний (є версії для Windows, Linux, MacOS та кількох інших, навіть для OS/2) і доступний у варіантах для декількох мов програмування (наприклад, C++, Python, Perl, C#, тощо). Як заявляють розробники прямо на головній сторінці сайту, основною особливістю їх фреймворку є те, що він повністю базується на “рідних” для того чи іншого середовища контролах, а не емулює їх, як робить більшість інших кросплатформенних GUI-бібліотек. За рахунок цього бінарний код виходить дуже компактним, а графіка виглядає природно для відповідної системи. Отака цікава штука. Трохи забігаючи наперед скажу, що, wxWidgets, звісно, не такі приємні в розробці як Qt (там взагалі просто сідаєш і пишеш – настільки логічно все побудовано, а кращої документації я ще не бачив ні до чого), але водночас після декількох днів роботи з ним він мені починає подобатись все більше і більше.

Ось така цікава штука цей wxWidgets. А тепер перейдемо власне до підготовчих кроків, які доведеться зробити перед тим як розпочати перший проект. Наразі я опишу процес для Win32, але згодом хочу спробувати і відповідно занотувати цю саму процедуру для Linux.

Перше, що нам знадобиться – це скачати вихідні коди фреймворку, щоб потім зібрати на вашій машині версію оптимізовану для вашого компілятора. До речі, цікава штука: воно також має працювати з Visual Studio 2008 Express, так що таким чином можна створювати ПЗ абсолютно легально. Далі одразу рекомендую обзавестись дизайнером форм, щоб економити час на рутині. Офіційного редактора від розробників немає, а є лише купа редакторів від сторонніх виробників. Я спробував декілька і для себе зупинився на wxFormBuilder. Якщо хтось знайде щось зручніше і потужніше – з радістю вислухаю.

Тож завантажуємо і встановлюємо відповідну версію wxWidgets. Там знаходимо в підкаталозі “builds/msw” того місця, куди ви встановили wxWidgets проект “wx.dsw”, відкриваємо його і при необхідності погоджуємося на пропозицію студії сконвертувати його в її рідну версію. Далі обираємо тип білда. Я поки що пробував лише звичайні Release та Debug – це звичайні версії для статичної лінковки. Робимо білд. До речі, порівняно з тим-таки Qt збирається wxWidgets просто миттєво. Тепер перевіримо чи все у нас гаразд. В каталозі “samples” відкриваємо проект “samples.dsw”. В ньому знаходимо підпроект minimal і збираємо лише його (причому в одній з конфігурацій, в яких збирали саму бібліотеку). Можна було б, звісно, і всі sample-проекти при бажанні скомпілити, але то марна трата часу. Якщо minimal нормально скомпілювався, злінкувався та запустився, значить все чудово. Тепер не забудьте прописати шляхи до хедерів та скомпільованиз бібліотек у Visual Studio: в Tools→Options→Projects and Solutions→VC++ Directories відповідно для “Include files” прописуємо шлях до хедерів, а в “Library files” – шлях до щойно зібраних бібліотек.

Якщо хто хоче подивитись як описане вище виглядають вживу, можу запропонувати оцей англомовний скрінкаст (єдина відмінність – там шляхи до хедерів та бібліотек прописуються через vsprops-файл):

Ну і на всяк випадок лінки на рекомендації по встановленню під різні версії студії:

Ну і поки що все. Наступного разу створимо свою в міру простеньку форму і запустимо її 🙂

4 Comments

  1. серія практичних дописів “програмування для чайників”? задумка цікава і правильна, по-моєму =)

    але тримайся ближче до суті: конкретна ide (твоя), конкретний приклад тощо… так більше користі читачеві, а тобі простіше і менше виписувати. обов’язково щедро ілюструй скріншотами! а як матимеш натхнення — то й видивом.

    keep it up.

    • Основною метою є допомогти в'їхати в цей фреймворк на реальному прикладі, бо офіційна документація занадто суха і нормальних туторіалів я не зустрічав. Тому насправді почати писати трохи складнувато, от я і вирішив паралельно з власним вивченням вести нотатки: що і як робилось.

      Дякую за поради 🙂

  2. Трохи більше року назад юзав цю лібу і теж виникла проблема в пошуку едітора. Зупинився на DialogBlocks – http://www.dialogblocks.com/. Досить потужня інтуїтивно понятна штука:)

Залишити відповідь

Required fields are marked *.