Главная страница
    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
14-69573
Карелин Артем
2002-11-04 17:30
2002.11.21
Собираю комп.


1-69427
Igorek
2002-11-11 10:22
2002.11.21
Как сделать класс с хендлом (что б принимал сообщения)?


1-69376
Ученик
2002-11-10 12:23
2002.11.21
31 число в какой декаде


1-69393
Strumpf
2002-11-09 23:34
2002.11.21
Как изменить высоту элемента TMenuItem?


3-69202
Maloi
2002-10-28 21:19
2002.11.21
Извините за ламерский вопрос. Но кто-нибудь с 1С работал в DBF-фо





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский