![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Компонент и WM_DISPLAYCHANGE
FX © (2004-07-02 18:45:00)Здравствуйте. Как заставить компонент, наследник TCustomControl, получать сообщения WM_DISPLAYCHANGE?
Спасибо.
Mim1 (2004-07-05 17:57:00) [1]
> TCustomControl является потомком TWinControl
Точно, я почемуто подумал что это предок TControl. По аналогии с TPanel -> TCustomPanel, TEdit->TCustomEdit и п.д.
Григорьев Антон (2004-07-05 13:40:00) [2]Ответил здесь: http://www.delphikingdom.com/asp/answer.asp?IDAnswer=23537
FX (2004-07-05 11:48:00) [3]1) TCustomControl является потомком TWinControl
2) Не работает код:
type
TMyComponent = class(TCustomControl)
private
{ Private declarations }
protected
{ Protected declarations }
procedure WMDisplayChange(var Msg: TWMDisplayChange); message WM_DISPLAYCHANGE;
...
implementation
procedure TMyComponent.WMDisplayChange(var Msg: TWMDisplayChange);
begin
Windows.Beep(500, 500);
end;
...
Почему?
Спасибо.
Mim1 (2004-07-02 21:11:00) [4]Написав метод
procedure mymsg(var msg:Tmessage); message wm_user+10;
вы сможете передать в него при помоши perform нужное событие.
Так же можно изменить предка вашего компонента на TWinControl и тогда указанный выше метод (mymsg) сработает наверняка.
Если же это невозможно, то можно сделать так же, как это реализовано в таймере. Т.е. создать невидимое окно allocatehwnd.
Возможно можно как то подписаться на получение этого сообщения от parent'a, к сожалению мне такого способа неитзвестно.