basmp_ >А про глюки хотелось бы поподробнее - что не так, в каких случаях и возможно как видится иначе. Ну, вот несколько (на XP-pro-sp2). При запуске, пока не кликнешь мышкой по столу, - висит курсор "песочные часы" (который не сразу сменяется и после клика). А после клика - окно "Basmp Main Window" часто оказывается за экраном. Видимо, задумано, чтобы место клика квлияло на положение окон, но... Нагружает переменчивость оконных псевдозаголовков при кликах по ним... Чрезмерная чувствительность гуя к движению мышки. Догадываюсь, что для опытной руки это ускоряет работу с гуем, но когда выскакивающие окошки то и дело перекрывают путь мышке... >Не совсем понятно про автора и юзера. Автор получает удовольствие от создания оригинального гуя с нуля, юзеру же предлагается приноравливаться, тратить драгоценное время на "борьбу" с этим гуем... А не обсудить ли вам этот гуй на RSDN-овском форуме Пользовательский интерфейс: проектирование, usability ?
При выпадании виндовой ошибки не перерисовывается окно, и, перетаскивая окно ошибки, можно затереть всё главное окно. http://gr8.cih.ms/uploads/basmp.png - скриншот К тому же оно еще и подвисло у меня.
курсоры не устанавливаются нигде и никак, пока.. не задумано - ошибка однозначно, и старая. при клике на шапке окно отрывается от меню - то есть не убирается при потере фокуса, соответственно появляются кнопки закрытия и сворачивания, а двойной щелчок на шапке развернет окно во весь экран (только resizeable диалоги). Для этого шапки и нужны вобщем-то. А, и таскать за них можно. быстро выскакивают менюшки? сделать чтоб задержка устанавливалась? как кратко и понятно свойство назвать? удовольствия в последние полтора года поубавилось, зато работать с ним люблю все утили для себя в нем пишу, за одно и глюки нахожу - диалоги сами закрываются, менюхи можно оторвать и использовать как тулбар, изменить/добавить/убрать какой контрол можно тут же по ходу, проверить что через командную строку в терминале безо всяких кнопочек менюшек, а какие регулярные экспресии (красиво звучит) не хуже перла. Стандартный интерфейс счас особенно меня задалбывает восемнадцатью заходами подряд в одно и тоже меню чтоб поменять шрифт/стиль итд. в чем состоит приноравливание борьба, поподробнее если можно. Ошибки есть, они не в счет - исправлены будут. возможно будет такая возможность когда нибудь. туда без c# можна? попробовал - есть такая фигня. А как узнать, что такое окно выскочило?
Ты что-то не то нахимичил с обработкой сообщений, конкретно WM_PAINT, раз у тебя перерисовка такая кривая (если вообще есть)
рисуется по WM_ERASEBKGND, по WM_PAINT только BeginPaint и EndPaint. Разница в регионе доступном для перерисовки. Счас посмотрю..
посмотрел. Пока висит такое окошко (http://gr8.cih.ms/uploads/basmp.png) MS-овский spy++ никаких сообщений не показывает. После закрытия все нормально. как быть?
_basmp_ Догадываюсь, что у тебя прога однопоточная и обработка любых сообщений блокирует получение следующих. Получать сообщения стоит в одном потоке, а обрабатывать в другом. Тогда, пока ты расправляешься с открытием файла, винда тебе будет посылать WM_PAINT для перерисовки главного окна, если что не так.
_basmp_ Тогда уж и ОС надо было писать с нуля, а не оставаться в виндах Зуб даю: непонятки вашего гуя - это неразобранные непонятки стандартного, не сочтите за менторство... Самому внмкать подробнее пока возможности нет, но приаттачиваю два снапшота дерева окон (XP-pro-sp2): 1) сразу после запуска basmp кликом по его иконке в его папке, и 2) сразу после следующего клика по столу. Четко видно, где ломается процесс создания окна basmp. (Использовался WinTreeSnap).
Вы наверно не поняли. Писалось всё это по необходимости. Требовалось средство быстрого написания утилит с графическим интерфейсом способного влезть на дискетку со всеми настройками - этакий микро perl с tk на пол дискетки, но посимпатичней. И под Винду. Не хотят заказчики на Линукс. Всё что относится к той части не глюкует уже давно, кроме терминала (который починил вчера). Потом понадобился редактор для сложной среды (много языков, сложные связи, постоянно возникающие непредвиденные срочные необходимости), готового бесплатного не нашел, с платными нуу купить нет денег, а по другому не стоит привыкать, наверное.. Да и не тянут они по моим запросам и большие. К заказчику ковырять его мусор не возьмеш. Писать решил поверх старого проекта поскольку он особенно хорошо подходит для последнего запроса (постоянно возникающие непредвиденные срочные необходимости). Тут в форуме (или на fasm-е?) где-то встречал обсуждение редактров для сложных проектов, вот и решил что это будет интересно не только мне. Кстати самого гуя без окна редактирования, визуального редактора (всего что связано с <control-кликом> и savestate) и lua, а и без новых добавок (графика, базы данных итд - без них не получается) в скомпилированом виде килобайт 25-30. В голом виде он не глючит (сейчас оторвать уже не получится). Стандартный гуй используется в минимальном объеме. Так быстрее работает, надёжнее и проще отлаживать (кстати многие стандартные функции изменяют несколько регистров, что меня в данном случае не устраивало). Так-что стадартный тут почти ни причём. А ошибки, в основном, отлавливаются на интерфейсах между библиотеками и модулями и в новых добавках. а нельзя-ли доку какую по.., ага понял. Ошибка уже починена (вроде). Интересная утиль. Если интересует критика - то не хватает (лично мне) фильтра по полю (скажем имени процесса) и включения в отчет только интересующих полей и завесить в трей и получать отчеты кликом по иконке, а то от переключения окон и больших таблиц/текстов уже в глазах свербит. И называть стоит не по тикам, а по дате и времени до миллисекунд (точнее наверно не стоит). Пример: WinTreeSnap.exe -filter=(exename=basmp.exe) -zPopwhXYxy(...) <-флаги означающие выводимые поля ./bWTSreports <-директория вывода и зависло в трее.. кстати тут где-то у меня валялся конвертер с С-шных .h-ей в masm-овые .inc-и. Писалось когда-то на перле, однако, переписать на lua не сложно. Кроме того автомат там не всегда проходит (макросы), так что и гуй пригодится. Если интересно могу переписать.
каждый раз все регисты? Код (Text): pusha ... call ... popa mov ... pusha ... call .. popa ... так что-ли? Я ведь не знаю наверняка, какая функция при каких параметрах что поменяет, а долго и подробно исследовать нет времени. Да и тормозит это - обертывать ведь приходится каждую виндовую функцию. Вообще-то вначале так и было - замучился с отладкой. Затем заменил большинство на свои, а оставшиеся заврапил. Болезнь прошла. большинство обработки происходит в регистрах, а проц минимум в 7 раз быстрее памяти, особенно если данные раскиданы (как у меня). Случаи рассматриваются неуниверсальные (у MS много не относящихся к делу проверок), многие промежуточные результаты сохраняются (у MS - расчитываются заново). итд. Получается быстрее. как понять?
_basmp_ а нельзя выпустить нормальную рабочую не виснущую версию, а потом уже выкладывать её на общак и обсуждать? Также не помешал бы хелп с описаниями и примерами как и что там делается...
_basmp_ Сильнейшая утечка GDI (например, при драгдропе окна - BRUSH, DC). --- По WinTreeSnap. 1) От фильтров сознательно отказался (сначала были, ком.строка): чтобы сохранять полное дерево окон, фильтровать же - потом, в редакторе (типа UltraEdit). 2) Утилитка идейно безоконна, чтобы не ломать дерево окон. И по той же причине - запускаться должна не кликом по иконке, а комбинацией клавиш (у меня - Ctrl+Shift+W). 3) Текущий формат имени удобен, когда нужно брать несколько снапшотов подряд (а дата и так в файле). 4) Однако при желании все это легко переделать, исходник приложен
затем и обсуждать, чтоб не висла. а где вы невиснущие проги видели? хелпник есть, .\hlp\1.hlp называется и кнопочка из главного меню есть <Help>. Описание, примеры, книжки, сорцы,... Luа-5.0 на www.lua.org. Очень хорошие, на английком языке. Примеры баспа (расширение Luа) - все файлы *.b. Экспериментировать - в терминале хорошо. для этого он и есть. Синтаксис для файла и для терминала - одинаковый. там было пару неясных моментов в доке.. были такие подозрения. а как отловить это? драгдроп - это про контрол-клик? наколько помню, там нигде getdc co товарищи нету. что за тулза ловила это? ну вот еще одна утиль, гуёвая и для фильтрации. со своими заморочками. сильно мешают особенности эти в работе. были-бы они в юниковом стиле - очень там командная строка мне нравится. с комбинациями напряг - у меня пол клавы не пашет, оба конрола к примеру. кому как. не наглядно. наверно так и будет. порекомендуйте чем утечки искать. и ГДИ и памяти. в базах данных большие потери. что-нибудь маленькое, а то у меня инета почти нет.
Преальфа-4. - гораздо удобнее стала графика, + новые функции. - исправлен ряд ошибок - наконец-то в редакторе стало можно работать - часть текста в конце писалась в нем - начал писать туториал см [Main menu] -> [Tutorial] - добавил доку по lua (на английском) - появился встроеный ассемблер (слегка переписаный fasm-1.67.21) - другие изменения (см. changes.txt в архиве) очень интересуют ваши замечания - свежие мысли помогают в работе особенно интересуют замечания/предложения по встроенному asm-у. www.basmp.narod.ru
У тебя нет флэшки что ли? Я сейчас пользуюсь eclipse в основном (300-500Mb на винте) - на гиговую флэшку вместе с проектом влезать должен.
Не совсем понял про что тут. Осмелюсь предположить, что про носимое средство разработки. Отвечаю. На большинстве клиентстких машин расчитывать приходится только на флоп (я живу не в Москве). И стоит там не Виндовс ХР (для флэшки драйверок нужен будет). Свободных 500Мб на винте у них нет - все забито игрушками и фильмами, трогать которых категорически воспрещено, вплоть до потери клиента. О требованиях к ресурсам и быстродействии eclipse я вообще молчу - одна такая разработка и с тобой говорить никто больше не станет. Капризный клиент у нас. Однако, сравнение с eclipse льстит. Весьма даже. Спасибо вам. С уважением www.basmp.narod.ru
Некоторые багфиксы и дополнения подробности в файле changes.txt в архиве исправлений (нижнем) распаковывать поверх основного архива (верхнего) прошу высказываться www.basmp.narod.ru