Как я изменил wxWidgets
April 13th, 2010 Begemot Posted in Oбщее
Предложили мне тут портировать одну маленькую утилиту для автоматического выключения звука на Mac OS, я сказал что если возьмусь то только на c++\wxWidgets, зачем мне осваивать новый язык\библиотеку…
Лихо написал программу под винду и полез под макос, в надежде на быстрое портирование, обламался:)
Сначала долго пытался вообще заставить вх собираться и давать мне собрать примеры на маке, потом изучал cmake, потом перешел с carbon версии wxWidgets на более новую cocoa сборку…
В принципе, тут дело в том что у программы достаточно специфичные требования:
- Программа маленькая.
- Иконка в трее.
- Глобальная горячая клавиша.
Последнее вообще не поддерживается в вхВиджетс под маком, второе недавно появилось – но работает через 1 место, ну и размер…
В общем, потратив 4-5 дней, решил плюнуть и писать нативно. Небольшой проект – как раз можно потренироваться на нем. Подумалось что если я и дальше собираюсь писать для мака, даже на wxWidgets, знание родного языка\опыт работы с нативным фремворком будет только большим плюсом.
Objective-C имеет достаточно специфический синтаксис, но в принципе не сложен. Да и в целом писать под мак мне понравилось – такое впечатление что там это как-то гораздо больше продуманнее все.
В итоге написал, все работает, хотя подозреваю что не идеально. Вывод нативно писать под мак можно и это не страшно:)
Если кому интересно, посмотреть что получилось, можно тут.
April 13th, 2010 at 5:27 pm
Довольно ожидаемо) А я под виндами наоборот начал с нативного кода и уперся в недостаток функционала. Причем ладно бы что-то особенное хотел, так нет же – то, к чему привыкли как к воздуху, которым дышим, типа иконки в трее.
April 13th, 2010 at 8:56 pm
а на чем это ты писал что на нативном коде не смог иконку в трее сделать?:)
И где ктоме винды ты к ней привык?
April 16th, 2010 at 8:24 pm
Я ж не сказал что иконку, а сказал “типа иконки”) В смысле сравнительно такую же по обыденности вещь. А речь идет о такой фишке(см. скриншот http://s51.radikal.ru/i132/1004/4f/fcf0f7c57ee5.png) – если потянуть мышкой за одну из тех линий, на которую указывают стрелки, то одно из окон станет больше по размеру за счет уменьшения размера другого окна. И вот такой вот хрени оказывается в нативном коде нет.
Извиняюсь что так поздно ответил – что то не получил я коммента по RSS, или проглядел…
April 16th, 2010 at 8:27 pm
Че то ссылка скобочку за собой прицепила, повторю еще раз) – http://s51.radikal.ru/i132/1004/4f/fcf0f7c57ee5.png
April 17th, 2010 at 11:17 pm
no comments?)
April 20th, 2010 at 8:58 am
Уезжал на несколько дней, только вернулся.
Это хрень называется сплитер :))
Вообще да вроде нету родной, по крайней мере в MFC 4 года назад не было, я сам писал – в принципе там не сложно. Как сейчас не знаю, но что-то мне подсказывает что в NET наверняка есть 🙂
April 20th, 2010 at 9:51 am
Я просто пока еще не особо шарю в сях, поэтому сабклассинги и прочая ручная работа все еще мне недоступны. Насчет .NET не знаю, я туда не лезу и лезть не хочу)
April 20th, 2010 at 10:05 am
А ты что используешь? я вот смотрю что сплиттер в мфц появился
http://msdn.microsoft.com/en-us/library/5xttbe5t(VS.80).aspx
April 21st, 2010 at 3:40 am
Изначально взялся писать на нативных функциях. Уперевшись в некотрые их ограничения, в частности в отсутствие сплиттера, и немного помедетировав над альтернативами, я решил остановиться на виджетах как на тонкой и обещающей быстродействие оболочке вокруг нативных функций, к тому же кокетливо намекающей на кроссплатформенность и по пионерски честно выкладывающей сорцы.
April 21st, 2010 at 8:37 am
На нативных функциях это чистый winApi? или все таки что-то нативное, но более высокоуровневое типа atl, wtl, mfc?
April 21st, 2010 at 12:31 pm
Да да, именно Win32 API. Скачал себе sdk и все собсна. Хотелось чтоб если производительности, то по-максимуму)
April 22nd, 2010 at 10:54 am
Вряд ли ты на чистом WinApi получишь прирост в производительности.
April 25th, 2010 at 6:22 pm
Ну то что получалось работало влёт.