Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.10.25;
Скачать: [xml.tar.bz2];

Вниз

Супер-пупер-мега-сплэш   Найти похожие ветки 

 
Andy BitOff ©   (2009-08-18 14:22) [80]


> Дмитрий С ©   (18.08.09 14:19) [79]
> Могу из проекта достать.

Не, ненадо, у меня своё есть ;)


 
Дмитрий С ©   (2009-08-18 14:27) [81]


>
> Не, ненадо, у меня своё есть ;)

У ЮЗ тоже было свое:)


 
Anatoly Podgoretsky ©   (2009-08-18 14:32) [82]

> Дмитрий С  (18.08.2009 14:27:21)  [81]

А теперь стало общее, вот так и теряют собственность.


 
Andy BitOff ©   (2009-08-18 14:39) [83]


> Дмитрий С ©   (18.08.09 14:27) [81]

Я на своё давал ссылку выше. Могу повторить - http://bitoff.ru/asf-main


 
antonn ©   (2009-08-18 15:02) [84]


> Andy BitOff ©   (18.08.09 14:39) [83]

там в самой первой демке у текста тень другого цвета задай, а то осталась зеленая :)


 
Andy BitOff ©   (2009-08-18 15:09) [85]


> antonn ©   (18.08.09 15:02) [84]

Антон, ты же знаешь, у меня с этими сплэшами вечно проблема, ну не умею я рисовать... ;)

Там в демке так задается, уж и не знаю зачем и почему. =)


 
Smile   (2009-08-18 15:18) [86]

Опять какая-то странноть. В ветке принимает участие куча модераторов, а она до сих пор жива...
Непорядок
:)
Действительно, пора закрыть эту "потрепаловку"


 
Юрий Зотов ©   (2009-08-18 15:31) [87]

> Дмитрий С ©   (18.08.09 14:10) [73]

ОК, нет проблем. Тем более, что тоже правильно среагировали.


 
Суслик_   (2009-08-18 17:51) [88]

От себя добавлю.

Тут когда-то Димка Логинов выкладывал свой пример прогресс бара с доп. потоке. Я тогда решил поизучать его пример, заодно и столкнулся первый раз с окнами на винапи. Я его, помню, покритиковал немного, но евоный пример после доработки заюзал (спасибо, Дима).

Достоинство в том, что окошко с сообщением и прогрессбаром всегда видно и даже реагирует на нажатие мышкой пока основной поток рубится в дум с БД.

Юра, спасибо - хороший пример.

ЗЫ Забавно смотреть как народ тупит немного. Но у меня сложилось ощущение, что это стеб.


 
Palladin ©   (2009-08-18 17:58) [89]


> [86] Smile   (18.08.09 15:18)

хм... а почему ветке должно мешать жить участие в ней кучи модераторов?
ну и как бы... http://www.delphimaster.ru/forums.shtml#rule Рекомендуется: п.8 может и выстрелить ;)


 
DVM ©   (2009-08-18 23:30) [90]


> Юрий Зотов ©

Небольшие замечания по коду DLL:

Отсутствует закрытие хендла ThreadHandle
Нету проверки на результат RegisterClassEx(), CreateWindowEx(), LoadBitmap()


 
brother ©   (2009-08-19 05:28) [91]

доводим код "до ума" и выпускам релиз ;)


 
ZeroDivide ©   (2009-08-19 08:31) [92]

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


 
Andy BitOff ©   (2009-08-19 09:41) [93]


> ZeroDivide ©   (19.08.09 08:31) [92]

Так на то он и ридер. Его задача просто открыть документ. Какой там сплэш...
Сплэш, это не для красоты, а по нужде, но если без него не обойтись, то почему не сделать его красивым и качественным? Тем более, что чаще он делается для программ размер которых по сравнению с 400 килобайтным сплэшом, просто сравнивать не удобно.
Никто не утвердает, что давайте теперь клепать сплэши везде. Голову просто надо иметь... И каждому овощу освое время... и место.


 
Andy BitOff ©   (2009-08-19 10:04) [94]

400 кб имеется в виду, конечно, размер ехе с пустой формой и слэшем, т.е. надо вычесть размер пустой формы.


 
Riply ©   (2009-08-19 10:13) [95]

> [0] Юрий Зотов ©   (17.08.09 21:38)
> информация для использования в своих проектах всеми желающими.

Вот спасибо !
Уже года два откладываю написание этого "на потом" (эт такая знаменательная дата в календаре:) )
А тут все не только на блюдечке с голубой каемочкой,
а еще и реализовано, как мне хотелось :)
Еще раз спасибо :)


 
Skyle ©   (2009-08-19 10:13) [96]


> Andy BitOff ©   (19.08.09 09:41) [93]
>
> > ZeroDivide ©   (19.08.09 08:31) [92]
>
> Так на то он и ридер. Его задача просто открыть документ.
>  Какой там сплэш...

Всю дорогу этот бешенный ридер для простого открытия документа при запуске долго показывал сплеш и перечислял на нём загруженные DLL...

Где ZeroDivide увидел быстрый ридер я не знаю, видимо просто я последнии версии ещё не смотрел.


 
Rouse_ ©   (2009-08-19 10:17) [97]


> Отсутствует закрытие хендла ThreadHandle

Зачем? ExitThread же присутствует.


 
oxffff ©   (2009-08-19 10:25) [98]


> Rouse_ ©   (19.08.09 10:17) [97]


Terminating a thread does not necessarily remove the thread object from the operating system. A thread object is deleted when the last handle to the thread is closed.


 
ZeroDivide ©   (2009-08-19 10:29) [99]


> Где ZeroDivide увидел быстрый ридер я не знаю, видимо просто
> я последнии версии ещё не смотрел.


Теперь он без сплешей, "пулей" запускается. Я сам был удивлен. Скачай 9-ку.


 
Anatoly Podgoretsky ©   (2009-08-19 10:29) [100]

> ZeroDivide  (19.08.2009 08:31:32)  [92]

И с элементами развлечения, некоторые пользователи просто млели.


 
Anatoly Podgoretsky ©   (2009-08-19 10:30) [101]

> Andy BitOff  (19.08.2009 10:04:34)  [94]

И получаем 380 кб


 
Anatoly Podgoretsky ©   (2009-08-19 10:32) [102]

> Skyle  (19.08.2009 10:13:36)  [96]

Так если нет надобности, как сейчас, то сделаем введением искуственных задержек, что нужность сразу была видна и по весу ощутима.


 
oxffff ©   (2009-08-19 10:33) [103]


> Anatoly Podgoretsky


Остапа понесло.


 
Palladin ©   (2009-08-19 10:33) [104]


> [99] ZeroDivide ©   (19.08.09 10:29)

тебя послушать, так можно подумать что сплеш все и тормозил... )


 
ZeroDivide ©   (2009-08-19 10:39) [105]


> Palladin ©   (19.08.09 10:33) [104]
>
>
> > [99] ZeroDivide ©   (19.08.09 10:29)
>
> тебя послушать, так можно подумать что сплеш все и тормозил.
> .. )


Видимо сделали потоковую загрузку... оно как бы правильней, чем сплеши...
Основное окно и первая страница PDF грузятся, затем грузится все остальное... ну и инициализация всего и вся по мере необходимости. В общем, это намного правильнее чем сплеши. Приложение со сплешами раздражает.


 
Andy BitOff ©   (2009-08-19 10:40) [106]


> Anatoly Podgoretsky ©   (19.08.09 10:30) [101]
> И получаем 380 кб

У меня 379 КБ (388 608 байт) ;Р


 
Rouse_ ©   (2009-08-19 10:44) [107]


> oxffff ©   (19.08.09 10:25) [98]

И чего? У меня тоже есть чего доставить :)

When this function is called (either explicitly or by returning from a thread procedure), the current thread"s stack is deallocated, all pending I/O initiated by the thread is canceled, and the thread terminates. The entry-point function of all attached dynamic-link libraries (DLLs) is invoked with a value indicating that the thread is detaching from the DLL.


 
Andy BitOff ©   (2009-08-19 10:46) [108]


> ZeroDivide ©   (19.08.09 10:39) [105]
> Приложение со сплешами раздражает.

Никогда не говори никогда.
Если в вашей работе вам не попападалась задача (ваше приложение), которую просто нельзя загрузить за секунду, то это вовсе не означает, что ни у кого нет таких задач.


 
oxffff ©   (2009-08-19 10:51) [109]


> Rouse_ ©   (19.08.09 10:44) [107]
>
> > oxffff ©   (19.08.09 10:25) [98]
>
> И чего? У меня тоже есть чего доставить :)


Но вызов GetExitCodeThread сработает. Значит поток не полностью удален.
Поэтому CloseHandle, CloseHandle.


 
Rouse_ ©   (2009-08-19 10:51) [110]


> oxffff ©   (19.08.09 10:25) [98]

А вообще да... Хэндл таки не закрывается при ExitProcess. Вывод? Вывод - примеры из MSDN, наподобие нижеприведенного нагло врут :)


void CreateEventsAndThreads(void)
{
   HANDLE hThread;
   DWORD i, dwThreadID;

...

       hThread = CreateThread(NULL,
           0,
           ThreadProc,
           &ghReadEvents[i],  // pass event handle
           0,
           &dwThreadID);

       if (hThread == NULL)
       {
           printf("CreateThread failed (%d)\n", GetLastError());
           return;
       }
   }
}


 
Хитрий Лис   (2009-08-19 10:54) [111]


> Andy BitOff ©   (19.08.09 10:46) [108]
> Если в вашей работе вам не попападалась задача (ваше приложение),  которую просто нельзя загрузить за секунду, то это вовсе не означает, что ни у кого нет таких задач.

А попадаются еще такие задачи - которые на машине разработчика запускаются за 1 секунду, а на машине юзера с ненастроенной WindowsXP на 256М памяти запускаются секунд 30-40... ведь для запуска винде нужно сначала скинуть в своп десяток других запущенных программок :)


 
Leonid Troyanovsky ©   (2009-08-19 11:10) [112]


> Rouse_ ©   (19.08.09 10:17) [97]

> > Отсутствует закрытие хендла ThreadHandle

> Зачем? ExitThread же присутствует.

ExitThread, как раз, лишний, а CloseHandle не хватает, утечка.
Мелочь, конечно, но не Пушкину ж это делать.

Еще, IMHO, некрасиво PostMessage WM_DESTROY,
тут просится PostThreadMessage WM_QUIT.

А вот потеря foreground - это всамделишний баг.

--
Regards, LVT.


 
Andy BitOff ©   (2009-08-19 11:17) [113]


> Leonid Troyanovsky ©   (19.08.09 11:10) [112]

У меня потеря foreground решается так, как вы предложили в [71]


 
Leonid Troyanovsky ©   (2009-08-19 11:25) [114]


> Andy BitOff ©   (19.08.09 11:17) [113]

> У меня потеря foreground решается так, как вы предложили

Твой пример я еще не успел посмотреть.
А у ЮЗ смутил stdcall, подумалось, что приложения могут быть и
недельфийские, поэтому и неуверенность насчет Application.Handle.

--
Regards, LVT.


 
Andy BitOff ©   (2009-08-19 11:34) [115]


> Leonid Troyanovsky ©   (19.08.09 11:25) [114]
> Твой пример я еще не успел посмотреть.

Может лучше и не надо... =)
Или тогда хоть результаты лично, а то мне стыдно будет =)


 
Leonid Troyanovsky ©   (2009-08-19 12:00) [116]


> Andy BitOff ©   (19.08.09 11:34) [115]

> Может лучше и не надо... =)

А чего страшного?
В ем, конечно, строк поболее, все внимательно трудно прочесть.

Но, пара-тройка вещей бросились в глаза:
В цикле выборки сообщений Sleep(0) лишний, GetMessage сделает.
Про DestroyWindow в msdn пишут, что не предназначена для
окон другого потока, наверное, лучше не рисковать.
Можно послать, например, WM_SYSCOMMAND SC_CLOSE.
Кста, про WM_SYSCOMMAND: must combine the value 0xFFF0 with the wParam

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2009-08-19 12:11) [117]

> Palladin  (19.08.2009 10:33:44)  [104]

Почему бы и нет, ты видел их сплеши, например, который рисует поверх экрана, со сложными регионами.


 
Leonid Troyanovsky ©   (2009-08-19 12:46) [118]


> Leonid Troyanovsky ©   (19.08.09 12:00) [116]

Вдогонку.

Такая вещь как FileExists совершенно бесполезна.

Нет смысла делать проверку, кидать собс-ное исключение, если
далее идет TFileStream.Create, который сам все сделает вовремя.

Порой же FileExists может быть и вредна, бо между ее вызовом
и тем моментом, когда на основе ее результата что-то делают
проходит не один кол времени.
Т.е., файл только что был и вдруг его нет, а ракеты полетели.

--
Regards, LVT.


 
Andy BitOff ©   (2009-08-19 13:14) [119]


> Leonid Troyanovsky ©   (19.08.09 12:00) [116]
> В цикле выборки сообщений Sleep(0) лишний, GetMessage сделает.

Без слипа в однопроцессорных системах загрузка CPU 100%


> Про DestroyWindow в msdn пишут

Подумаю. Чёй-то сразу и не соображу =(


> Кста, про WM_SYSCOMMAND: must combine the value 0xFFF0 with
> the wParam

Хм... Так, что ли "if (wParam and $FFF0) = SC_CLOSE then"?


 
Юрий Зотов ©   (2009-08-19 13:21) [120]

> Andy BitOff ©   (19.08.09 13:14) [119]

1. GetMessage сам ожидает сообщения, поэтому Sleep в цикле выборки действительно не нужен. Причина 100%-ной загрузки в чем-то другом.

2. Говорят (сам не проверял), что вместо Sleep(0) лучше использовать SwitchToThread. Результат тот же, но якобы жрет меньше тактов.



Страницы: 1 2 3 4 вся ветка

Форум: "Прочее";
Текущий архив: 2009.10.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.68 MB
Время: 0.046 c
8-1198474587
ImA
2007-12-24 08:36
2009.10.25
Поворот объекта по окружности


2-1251446645
TarenoKostanay
2009-08-28 12:04
2009.10.25
Дескриптор окна


15-1251145808
Юрий
2009-08-25 00:30
2009.10.25
С днем рождения ! 25 августа 2009 вторник


2-1250979749
Риг
2009-08-23 02:22
2009.10.25
Объекты в потоках.


15-1250752659
Павел Калугин
2009-08-20 11:17
2009.10.25
Методика тестирования програмного обеспечения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский