Как я изменил wxWidgets

April 13th, 2010 Begemot Posted in Oбщее

Предложили мне тут портировать одну маленькую утилиту для автоматического выключения звука на Mac OS, я сказал что если возьмусь то только на c++\wxWidgets, зачем мне осваивать новый язык\библиотеку…

Лихо написал программу под винду и полез под макос, в надежде на быстрое портирование, обламался:)

Сначала долго пытался вообще заставить вх собираться и давать мне собрать примеры на маке, потом изучал cmake, потом перешел с carbon версии wxWidgets на более новую cocoa сборку…

В принципе, тут дело в том что у программы достаточно специфичные требования:

  1. Программа маленькая.
  2. Иконка в трее.
  3. Глобальная горячая клавиша.

Последнее вообще не поддерживается в вхВиджетс под маком, второе недавно появилось – но работает через 1 место, ну и размер…

В общем, потратив 4-5 дней, решил плюнуть и писать нативно. Небольшой проект – как раз можно потренироваться на нем. Подумалось что если я и дальше собираюсь писать для мака, даже на wxWidgets, знание родного языка\опыт работы с нативным фремворком будет только большим плюсом.

Objective-C имеет достаточно специфический синтаксис, но в принципе не сложен. Да и в целом писать под мак мне понравилось – такое впечатление что там это как-то гораздо больше продуманнее все.

В итоге написал, все работает, хотя подозреваю что не идеально. Вывод нативно писать под мак можно и это не страшно:)

Если кому интересно, посмотреть что получилось, можно тут.

Related:

Posted in Oбщее | Tags:

13 Responses to “Как я изменил wxWidgets”

  1. Довольно ожидаемо) А я под виндами наоборот начал с нативного кода и уперся в недостаток функционала. Причем ладно бы что-то особенное хотел, так нет же – то, к чему привыкли как к воздуху, которым дышим, типа иконки в трее.

  2. а на чем это ты писал что на нативном коде не смог иконку в трее сделать?:)
    И где ктоме винды ты к ней привык?

  3. Я ж не сказал что иконку, а сказал “типа иконки”) В смысле сравнительно такую же по обыденности вещь. А речь идет о такой фишке(см. скриншот http://s51.radikal.ru/i132/1004/4f/fcf0f7c57ee5.png) – если потянуть мышкой за одну из тех линий, на которую указывают стрелки, то одно из окон станет больше по размеру за счет уменьшения размера другого окна. И вот такой вот хрени оказывается в нативном коде нет.

    Извиняюсь что так поздно ответил – что то не получил я коммента по RSS, или проглядел…

  4. Че то ссылка скобочку за собой прицепила, повторю еще раз) – http://s51.radikal.ru/i132/1004/4f/fcf0f7c57ee5.png

  5. no comments?)

  6. Уезжал на несколько дней, только вернулся.
    Это хрень называется сплитер :))
    Вообще да вроде нету родной, по крайней мере в MFC 4 года назад не было, я сам писал – в принципе там не сложно. Как сейчас не знаю, но что-то мне подсказывает что в NET наверняка есть 🙂

  7. Я просто пока еще не особо шарю в сях, поэтому сабклассинги и прочая ручная работа все еще мне недоступны. Насчет .NET не знаю, я туда не лезу и лезть не хочу)

  8. А ты что используешь? я вот смотрю что сплиттер в мфц появился
    http://msdn.microsoft.com/en-us/library/5xttbe5t(VS.80).aspx

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

  10. На нативных функциях это чистый winApi? или все таки что-то нативное, но более высокоуровневое типа atl, wtl, mfc?

  11. Да да, именно Win32 API. Скачал себе sdk и все собсна. Хотелось чтоб если производительности, то по-максимуму)

  12. Вряд ли ты на чистом WinApi получишь прирост в производительности.

  13. Ну то что получалось работало влёт.