Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать класс с хендлом (что б принимал сообщения)?


Igorek ©   (2002-11-11 10:22:00) 

Аналог TWinControl но с нуля от TObject. Спасибо.


Dimka Maslov   (2002-11-11 12:45:00) [1]

type
TWindowedObject = class (TObject)
private
FHandle: HWND;
procedure WindowProc(var Msg: TMessage);
procedure WMxxx(var Msg: TMessage); message WM_xxxx;
public
constructor Create;
destructor Destroy; override;
end;

constructor TWindowedObject.Create
begin
inherited;
FHandle:=AllocateHWND(WindowProc);
end;

destructor TWindowedObject.Destroy;
begin
DeallocateHWND(FHandle);
inherited;
end;

procedure TWindowedObject.WindowProc(var Msg: TMessage);
begin
Dispatch(Msg);
end;

procedure TWindowedObject.WMxxx(var Msg: TMessage);
begin
// Здесь пишещт обработчик сообщения
end;


KSergey   (2002-11-11 12:24:00) [2]

Ну вот. Пока кратенько думал -все уже как всегда...


KSergey   (2002-11-11 12:22:00) [3]

Кратенько думаю так: надо в объекте создать собственно то, что и будет принимать эти сообщения, т.е. окно Windows. Вот собственно и все. (да, к стати, его еще потом удалить надо не забыть при уничтожении объекта)


Igorek   (2002-11-11 11:17:00) [4]

Проблема возникла в связи с идеей отложенного уничтожения, предложенного ранее Юрием Зотовым. Уже подсказали использовать AllocateHWND
Всем спасибо


down   (2002-11-11 11:16:00) [5]

2Smithson:
Класс с хендом:
TCoolObject = class(TObject)
protected
Handle: HWND;
end;

Handle может быть описан, а окна, с ним связанного, может не существовать. Синонимы это такие же, как область памяти и указатель.


Smithson   (2002-11-11 11:04:00) [6]

Handle и есть уникальный идентификатор окна, назначенный системой.
Так что в некотором роде это синонимы.


down   (2002-11-11 11:01:00) [7]

В TWinControl не класс принимает сообщения и не хендл, а окно.


Smithson   (2002-11-11 10:55:00) [8]

Глянь исходники VCL. Там все очень подробно написано


Skier   (2002-11-11 10:52:00) [9]

>Igorek
А зачем с нуля ?
Какая необходимость в этом ?


Александр Павлов   (2002-11-11 10:33:00) [10]

А позволь полюбопытствоваться - зачем создавать колесо "с нуля"?


Наверх

Титульная страница Поиск, карта сайта Написать письмо