Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.008 c
3-69203
Alek_1
2002-10-23 01:44
2002.11.21
Индексы в парадоксе!


3-69208
Geka
2002-11-01 15:44
2002.11.21
Evaluation version needs Delphi - к чему бы это?


3-69097
Cossys
2002-10-29 18:04
2002.11.21
Использование ДАТЫ при фильтрации данных


1-69291
First_May
2002-11-12 10:19
2002.11.21
Функция...


4-69639
Иван
2002-10-11 10:24
2002.11.21
Перехват копирования/перемещения файла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский