Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2010, 10:55   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Система упрощенного создания окон (S.C.O.W.)

Уже дописываю свою систему и обраил внимание, что кода получилось не так много, как ожидал - хоть юнитов и много, процедур в них получилось не так много и я уже подумываю все в один юнит скинуть.

Вопрос в следующем: что добавить в систему для удобства?

Что уже есть:
Создание\Уничтожение приложения по одной команде.
Создание\Уничтожение\Перемещение\По каз\Прятанье\Ресайз форм ->>-
Создание\уничтожение\Загрузка из файла текстур ->>-
Различные действия над текстурами типа осветление и проч. ->>-
Рисование текстуры с прозрачностью\без ->>-
Свои IntToStr\StrToInt\BoolTostr\StrToBo ol\IntToStr с шириной ->>-
Создание\Запись\Уничтожение лога ->>-

Подскажите, какие еще типичные задачи можно обработать?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 07.11.2010, 11:09   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Если пришете под Windows (а вы, судя по сайту, пишете именно под нее), то не стоит писать свои IntToStr, StrToInt и такое прочее - оно уже есть. Покопайтесь в MSDN - там полно примеров.

Цитата:
Создание\Уничтожение приложения по одной команде.
WM_CREATE и WM_DESTROY?

Система упрощенного создания окон - обертка над WinApi? Если нет, то подскажите для чего она нужна, а я скажу, что можно добавить.
MaTBeu вне форума Ответить с цитированием
Старый 07.11.2010, 11:25   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
то не стоит писать свои IntToStr, StrToInt и такое прочее - оно уже есть.
О_о Я нашел только в модуле SysUtils, который весит ок. 90кб. Мои IntToStrToInt - это обертка над Val и Str.
Цитата:
WM_CREATE и WM_DESTROY?
Код:
Procedure CreateForm(Var Form : TForm; App : TApplication; FName : PChar; FSize : Integer);
 Procedure DestroyForm(Var Form : TForm);
Цитата:
Система упрощенного создания окон - обертка над WinApi?
Да, именно так. Например:
Код:
Procedure CreateApplication(AppClass : String; CH : THProc);
 Begin
  Application.Handle := GetModuleHandle(Nil);
  Application.CustomH := CH;
  With Application.WinClass Do
  Begin
   Style := CS_HREDRAW Or CS_VREDRAW;
   hIcon := LoadIcon(Application.Handle, MAKEINTRESOURCE(APP_MAINICON));
   lpfnWndProc := @ApplicationHandler;
   hInstance := Application.Handle;
   hbrBackground := COLOR_BTNFACE + 1;
   lpszClassName := PChar(AppClass);
   hCursor := LoadCursor(0, IDC_ARROW);
  End;
  InitCommonControls;
  RegisterClass(Application.WinClass);

  SetLength(DSTR_Form, 0);
  SetLength(DSTR_List, 0);
 End;
Вместо этого Всего Вы пишете одну строку.
Код:
CreateApplication(APP_CLASSNAME, @ApplicationCustomHandler);
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 07.11.2010, 11:40   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Не, так дело не пойдет. Что это еще за APP_CLASSNAME и ужд тем более никаких ругательств типа @. Все должно быть прозрачней. Ну например,
Код:
CreateApplication(ApplicationName);
Вот тогда это будет удобство.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 07.11.2010, 11:42   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Что это еще за APP_CLASSNAME
Это строковая константа. Можно вообще вот так указать 'MyOwnApplicationClass' - это всего лишь класс приложения, который Вы можете указать.
Цитата:
Все должно быть прозрачней. Ну например
А как быть, если хотите свой обработчик впихнуть? Указатель на него бы получить не помешало бы.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 07.11.2010, 11:49   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

У Вас же есть имя приложения, подумайте как сделать так, чтобы работать через него. Указатель и ежик сможет, а вот так вот, не через указатели, а чтобы было просто пользователю Вашей системы, а не тому программисту который ее создает...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 07.11.2010, 11:53   #7
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Хм... Предлагаете доказать, что я не ёжик? Пожалуйста:
1) Пишете CreateApplication('Имя, класс, что хотите, строковая константа');
2) Хотите стандартный обработчик - ничего не пишите. Хотите свой собственный лунопарк - вызывайте AssignHandler(MyHandler);

Как такая мысль?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 07.11.2010, 11:56   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну что-то в этом роде . Основная проблема многих задач - это постоянная конкретика различных деталей, напрямую с задачей никак не связанных. Вот тот же адрес (или указатель), разве мне он нужен для того чтобы нарисовать окошко? Практика показывает, что не обязательно. Обилие деталей отвлекает и затрудняет поиск решения.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 07.11.2010, 12:01   #9
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

В принципе, основная задача моей системы - это надстройка над функциями рисования WinAPI. Первоначально задумывалась, как графическая система, и лишь в последствии переросла в такого монстра.

К вопросу об обработчике - единственный случай, когда пользователю не понадобится его собственный обработчик - это когда он делает заставку\Splash. Во всех остальных случаях ему понадобится собственный обработчик с минимум OnMouseDown\Up, OnMouseMove.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 07.11.2010, 12:15   #10
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну и что? Пусть существует некий класс (твой класс) приложения. Я обращаюсь к нему только по имени. Мне нужен обработчик? Ладно, но мне не нужен указатель на него. А зачем? Ну буду я знать адрес в памяти, нафига? В том то и дело что без надобности. Я просто обращаюсь к классу приложения и вешаю ему свой обработчик и усе. Скажем типа:
Код:
MyApp.OnMouseDown:=MyOnMouseDown;
Зачем здесь @ и прочие заборные надписи?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание окон Asgard Общие вопросы Delphi 1 23.05.2010 08:42
Слипание 2-х окон AlexeiDelejov Мультимедиа в Delphi 2 19.05.2010 17:07
Система принятия решения (Экспертная система) daranton Microsoft Office Excel 4 01.05.2010 17:55
Сворачивание окон zzzzz Общие вопросы Delphi 4 20.10.2008 09:16
Сворачивание окон Legat Win Api 2 08.10.2007 16:36