![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Парочка глупых вопросов
-matrix- © (2006-01-16 13:27:00)Парочка глупых вопросов:
1. Приложение состоит из формы или нескольких. При каждом добавлении новой вес итогового exe'шника увеличивается. Как это устранить? Кажется, что нужно использовать fram'ы...
2. Если их нужно использовать в данных сутуациях и они будут работать как формы, то в чем вообще различее между формами и frame'ами?
3. Я встречал программы, имеющие хотя бы одну форму, но весом прим по 30кб. Каким образом это делается? Знаю, что можно из dll'ок импортировать формы, но в комплекте с такой программой они не идут, а в винде такой формы вроде как нет... Не запасутся же мелкомягкие ими на все случаи жизни?
Zeqfreed (2006-01-16 18:22:00) [1]-matrix- © (16.01.06 18:10) [10]
WM_PAINT и WM_NCPAINT это константы. В Delphi эти константы объявлены в модуле Messages.pas.
Для «восстановления» используй InvalidateRect.
-matrix- (2006-01-16 18:10:00) [2]2 evvcom ©
Очевидно, сначала их запомнить. А что значит нормальные? А ненормальные уже умеешь?
Нормальные - это когда ничего не нарисовано сверху окон. Ненормальные - от когда уже нарисовал сверху что-то... Даже если программа закроется, нарисованное не стирается с окон, а так и остается. Где-то в факах видел (цитирую):
"Не забывайте после своих манипуляций посылать пострадавшим (или всем) окнам сообщение о необходимости перерисовки, для восстановления их первоначального вида." (это после описания getdc)
Во как. И как мне это сделать?
Обрабатывать сообщения WM_PAINT, WM_NCPAINT
Как я понимаю, это находиться в какой-то библиотеке. Что-то мне подсказывает, что в WSIWIN32. Так ли это?
И вообще, откуда вы берете списки и описания функций различных dll?
Gero (2006-01-16 16:45:00) [3]> ShellAbout(0, 'Super Program', '© -matrix-, 2006', 0);
Это если Copyright by Microsoft не смущает.
evvcom (2006-01-16 15:29:00) [4]
> 1. Как восстановить нормальные виды окон после bitblp?
Очевидно, сначала их запомнить. А что значит нормальные? А ненормальные уже умеешь?
> 2. Как можно выяснить, изменился ли определенный участок
> на экране? Т.е. вдруг пользователь передвинул окно на определенный
> участок desktop'а?
Обрабатывать сообщения WM_PAINT, WM_NCPAINT
begin...end (2006-01-16 15:29:00) [5]> -matrix- © (16.01.06 15:22) [6]
> А к примеру, окно "О программе" как надо реализовать?
uses ShellAPI;
ShellAbout(0, 'Super Program', '© -matrix-, 2006', 0);
:o)
> Значит, таинственный KOL изучать...
Или WinAPI.
-matrix- (2006-01-16 15:22:00) [6]2 Zeqfreed
Фреймы здесь ни при чем. Если в программе используется множество одинаковых форм, то их нужно создавать динамически по мере надобности. Если же они все разные, то ничего не поделать.
А к примеру, окно "О программе" как надо реализовать? Или как в Commander'е - маленькое окошечко с "Ok", "Cancel" и combobox с выбором дисков. Формы они непохожие, вряд ли авторы новые создавали...
Значит, таинственный KOL изучать...
Еще вопросы:
1. Как восстановить нормальные виды окон после bitblp?
2. Как можно выяснить, изменился ли определенный участок на экране? Т.е. вдруг пользователь передвинул окно на определенный участок desktop'а?
evvcom (2006-01-16 14:00:00) [7]
> А ты уверен что это сделано на делфях
Делают и на дельфях, см. KOL
Gydvin (2006-01-16 13:47:00) [8]3. Я встречал программы, имеющие хотя бы одну форму, но весом прим по 30кб.
А ты уверен что это сделано на делфях, а не на ассемблере например?
Я ковырял исходники на ассемблере под WIN32 там пара форм, кнопок, менюшка ну и так функционал по мелочи. Вес ехе ~ 10-12 килобайт
evvcom (2006-01-16 13:44:00) [9]
> 3. Я встречал программы, имеющие хотя бы одну форму, но
> весом прим по 30кб. Каким образом это делается?
Тебе важен размер? Тогда тебе в конференцию KOL ( http://www.delphimaster.ru/cgi-bin/forum.pl?n=10)
Делфёст (2006-01-16 13:42:00) [10]1й способ Если тебе надо уменьшить размер exe'шника попробуй воспользоваться PE-Compact... более сильной в упаковке проги я еще не видел...
у меня из 2х метров сжала до 300 кило, хотя остальные делали только по 550 - 570 кило... понадобится кряк
2й способ, можешь отключить в делфях VCL компоненты(сам не пробывал но читал об этом) и пасить все ручками
3й способ кто то говорил про компрессию при компилировании проекта, но где это делать не знаю, хотя если покопаться...
Zeqfreed (2006-01-16 13:37:00) [11]-matrix- © (16.01.06 13:27)
> Как это устранить? Кажется, что нужно использовать
> fram'ы...
Фреймы здесь ни при чем. Если в программе используется множество одинаковых форм, то их нужно создавать динамически по мере надобности. Если же они все разные, то ничего не поделать.
> 3. Я встречал программы, имеющие хотя бы одну форму,
> но весом прим по 30кб. Каким образом это делается?
Скорее всего, эти программы создают окна ф-циями WinAPI и эти окна не являются формами в терминологии Delphi.