Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.216.233.58] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Ну вот так сработает:
class TMyCntrl : public TControl { public: TMyCntrl(TComponent *a, int) : TControl(a) {} // фикция long MyOffset() // смещение, где FFont; { char *ono = (char*)this->Font; char *fini = &((char*)this)[sizeof(TControl)-2*sizeof(TFont*)]; for( int t=0; t<sizeof(TFont*); t++) for( TFont **f=(TFont**)(t+(char*)this); f<fini; f++) if( *f==ono ) return (long)f - (long)this; // поиск адреса return 0; // не нашли } }; void MyProc(TControl *AControl) { TMyCntrl *a = new TMyCntrl(AControl,0); long o = a->MyOffset(); // смещение, где FFont; if( !o ) return; TFont *f = *(TFont **)&(((char*)AControl)[o]); ShowMessage(f->Name); } void __fastcall TForm1::Button1Click(TObject *Sender) { MyProc(this); MyProc(Button1); MyProc(Panel1); Caption = this->Font->Name + Panel1->Font->Name + Button1->Font->Name; ... П.С. да и надёжность низкая, и куча других недостатков. |
Сообщ.
#17
,
|
|
|
Да и вообще это C++Builder , так что руки отрывать надо однозначно
|
Сообщ.
#18
,
|
|
|
Это ты про THackControl? Почему не сработает? Должно работать для всех контролов и форм, наследующих стандартное хранение\изменение свойств Font и ParentFont от TControl. |
Сообщ.
#19
,
|
|
|
Цитата leo @ Это ты про THackControl? Почему не сработает? WM_GETFONT всё равно ноль возвращает (не смотря на Form1.ParentFont) |
Сообщ.
#20
,
|
|
|
Цитата Krid @ WM_GETFONT всё равно ноль возвращает (не смотря на Form1.ParentFont) Причем тут WM_GETFONT? MBo же привел ссылки, да и в мсдн черным по белому сказано, что WM_GETFONT работает для контролов (читай - стандартных виндовых), а не для любых окон. Для форм\диалогов и самопальных контролов нужно самому задавать обработчик сообщения WM_GETFONT. Но в VCL этого не сделано, т.к. для любого наследника TControl можно получить всю инфу о шрифте проще - через св-во Font. Вот THackControl и обеспечивает доступ к Font для любого наследника TControl. А если нужно добраться до этого св-ва через дескриптор окна, то для VCL-окон можно использовать функцию FindControl |