Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.11;
Скачать: CL | DM;

Вниз

WinProc = метод класса. Как?   Найти похожие ветки 

 
П7   (2005-10-06 03:03) [0]

Доброго времени суток, Мастера!
Хочется сделать некий класс, аля TForm, только попроще и под свои нужды. Естественно без юзания TForm и Forms.pas.
Всё вроде бы понятно, кроме того, как назначить создаваемому окну (точнее классу окна) обработчик не обычной процедурой, а методом данного класса.
Ковырялся в модуле Forms.pas, но так и не разобрался. Как-то там всё это очень хитро сделано.
Помогите разобраться, пожалуйста.


 
Джо ©   (2005-10-06 03:33) [1]

MakeObjectInstance


 
Джо ©   (2005-10-06 03:39) [2]

Схема такая:

TCustomForm = class (...)
FClientInstance: TFarProc;
...
procedure ClientWndProc(var Message: TMessage); // этот метод класса будет оконной процедурой
...
end;
...
// при создании окна
FClientInstance := Classes.MakeObjectInstance(ClientWndProc);
FDefClientProc := Pointer(GetWindowLong(FClientHandle, GWL_WNDPROC));
...
/// при уничтожении окна
if FObjectInstance <> nil then Classes.FreeObjectInstance(FObjectInstance);

Дальнейшие подробности - см. модуль Forms.pas, метод procedure TCustomForm.CreateWnd (пример выдернул именно оттуда).



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

Текущий архив: 2005.12.11;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.044 c
2-1133185128
DancerMan
2005-11-28 16:38
2005.12.11
Три панели и два сплиттера


1-1132056378
simpson
2005-11-15 15:06
2005.12.11
ListView.OwnerDraw - не меняется высота Item


4-1129124861
Alex870
2005-10-12 17:47
2005.12.11
Описание службы


1-1131999469
Razor
2005-11-14 23:17
2005.12.11
Окно, "прозрачное" для кликов мыши


2-1132488605
alexab
2005-11-20 15:10
2005.12.11
Использование for...to...do