Форум: "Основная";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];
ВнизКак сделать класс с хендлом (что б принимал сообщения)? Найти похожие ветки
← →
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 вся ветка
Форум: "Основная";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c