Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.10.25;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.7 MB
Время: 0.029 c
2-1251403436
LSE
2009-08-28 00:03
2009.10.25
ScanLine


15-1250850838
Медвежонок Пятачок
2009-08-21 14:33
2009.10.25
перечень нехорошего


15-1251149186
KilkennyCat
2009-08-25 01:26
2009.10.25
Что может быть причиной удаления файлов на XFS


15-1251233498
Германн
2009-08-26 00:51
2009.10.25
Какую туеву хучу документов


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