суббота, 12 апреля 2008 г.

wxWidgets: Немного о хорошем

Что-то последнее время были преимущественно негативные топики. Но не все так плохо, просто готовил программу к релизу, осваивал кучу новых тем, разумеется много чего не получалось вот и расстраивался:)

А вообще:

  1. Сайзеры это прикольно, конечно незнаю как они поведут себя при портировании под другие ОС. Пока пишу только под винду - вполне нравится.
  2. DialogBlocks is good resource editor for wxWidgets applications. Так все-таки не плох. Конечно надо разобратся, привыкнуть - но в принципе использовать можно. Особенно полезно поигратся на первых порах что бы понять идеологию сайзеров, изучить свойства и поиметь представления как вообще делать интерфейс.  Правда мне не особенно нравится код который он генерит да и гибкости немного не хватает что бы делать главные окна приложений... Но для отдельных простых диалогов - типа опций, вспомогательных окон - достаточно быстро можно нарисовать интерфейс. Хорошая вешь. Кстати незарегистрированная копия - вполне пойдет для ознакомления с иделогией построения интерфейса. Воообщем зачет:)
  3. Проблему с отсутвием контрола для ввода горячей клавиши в wxWidgets. Я вроде решил, вставил родной виндовый Hot Key Control, попытавшись обернуть его в wxWidgets. Так как документации по этой теме я не нашел - код там наверное кривой до ужаса:) Но если испытания покажут что работает, можно будет его почистить и выложить.
  4. Размер программы. Для меня это  имело большое значения, программы у меня маленькие, вспомогательные утилиты которые висят в трее. Сейчас размер получился 1.9М что почти в 4 раза больше версии с MFC, но судя по всему на скорости работы это не сказалось.
  5. Ну и главное я все таки выпустил программу, уже несколько дней вроде полет нормальный:) Так что можете удобно хранить свои быстрые заметки :)

Вообщем к эксплуатации пригодно.

вторник, 8 апреля 2008 г.

Отрелизился:)

Наконец более-менее дописал, хотя с иконками конечно еще плохо, но если кому интересно - бету, а фактически релиз, можно посмотреть тут.

Завершение программы при выходе из системы или EVT_QUERY_END_SESSION нам не всегда друг

Полюбуйтесь на это  - http://sourceforge.net/tracker/index.php?func=detail&aid=1428691&group_id=9863&atid=109863 . Багу больше 2x(!) лет, тянется еще с прошлого стабильного релиза. До сих пор не пофиксен. Status: Open.  А ведь есть специальные события даже  EVT_QUERY_END_SESSION и EVT_END_SESSION

Потратил полдня включая\выключая комп что бы найти приемлимый порядок команд для того что бы заставить его корректно выходить при выключении компа и сохранять настройки. И вчера уже собираясь выложить первую бету народу, обнаружил что под win2K не работает все равно. Мало того что не работает, так еще и подвисает при выходе. Сейчас опять буду е****я что бы работало везде.

понедельник, 7 апреля 2008 г.

Запрет на запуск второго экземпляра, с коммуникацией между ними

Изолью душу:) Решил добавить сабж, думал все просто: копи\пайст с книжки, разобраться, подправить под себя, потестить - на час работы, максимум два. Растянулось на целый день:)

Скопировал, разобрался, подправил, тестю - все ок. Обрадовался, собрал себе релиз для внутреннего пользования -  и тут засада. В релизе, при запуске второй копии, падает сервер. Дебаг, понятное дело затруднен... В итоге нашел падает на строчке.

return m_connection;

В wxConnectionBase *stServer::OnAcceptConnection(const wxString& topic). Вернее конечно не на ней, а после нее в дебрях библиотеки. Начал ковырятся, дошел до того что поведение программы, в смысле место падения, меняется в зависимости от того где определен конструктор в заголовочном файле или в cpp :).  В итоге решил вообще отказатся от использования соединений для общения, просто если приходит от клиента попытка установить соединение, ему отказывать и серверу появлятся на экране. Так работало.

Но тут осенило, что трабла в то что, где-то что-то портило память - поэтому такое, более чем странное поведение программы. Решил рыть до конца. В итоге заметил, что в декларациях классов скопированных с книжки, после определения функций в пределах h файла ';' то есть, то нет. Насколько я знаю это не критично, можно ставить можно нет. Решил поставить везде ';' и чудо свершилось... с надеждой в душе, убрал их назад в небытие, но не помогло - программа все равно не падала. Вот и как это объяснить?

пятница, 4 апреля 2008 г.

Сколько весит wxHtmlWindow

Добавление к программе wxmsw28u_html.lib для поддержки wxHtmlWindow и about- диалога основанного на хтмл утяжеляет екзешник на 170 кб, для меня это 10%.