Вниз
Скачать: CL | DM;

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

← →
Igorek ©   (2002-11-11 10:22) [0]

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


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

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


← →
Skier ©   (2002-11-11 10:52) [2]

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


← →
Smithson ©   (2002-11-11 10:55) [3]

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


← →
down   (2002-11-11 11:01) [4]

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


← →
Smithson ©   (2002-11-11 11:04) [5]

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


← →
down   (2002-11-11 11:16) [6]

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

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


← →
Igorek ©   (2002-11-11 11:17) [7]

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


← →
KSergey ©   (2002-11-11 12:22) [8]

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


← →
KSergey ©   (2002-11-11 12:24) [9]

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


← →
Dimka Maslov ©   (2002-11-11 12:45) [10]

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;



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

Скачать: CL | DM;



Память: 0.47 MB
Время: -0.985 c
14-69525
Николай Быков
2002-11-03 05:54
2002.11.21
Что выбрать?


3-69191
ruslan_as
2002-11-01 11:11
2002.11.21
обновить одну запись


3-69152
OlegKrt
2002-10-31 08:28
2002.11.21
Обработка ошибки при работе с Table


1-69252
jen_bond
2002-11-11 19:51
2002.11.21
перебор переменых


1-69267
Loser
2002-11-12 01:06
2002.11.21
а вот такой вопросик....




   Наверх