
Zie het plaatje hierboven. De complete explorer bar aan de linkerkant van het venster inclusief headers, icons en dergelijke teken ik met behulp van standaard Win32 API calls zoals DrawThemeBackground en DrawThemeText. Dat werkt als een zonnetje.
Nu wil ik dat als je met de muis over de bovenste link beweegt (die met de tekst 'Clear All Filter Criteria'), de tekst onderstreept wordt getekend. De enige manier die ik kan verzinnen is de font handle achterhalen met GetThemeFont en op basis daarvan zelf wat tekenwerk verrichten, maar GetThemeFont retourneert altijd een foutcode met als foutmelding 'A call to an OS function failed'. Ik heb me al suf gepiekerd wat er fout gaat, maar ik kom er niet uit.
1. Wat gaat er mis?
2. Is er een andere manier om de tekst onderstreept te tekenen?
Delphi:
1
2
3
4
5
6
7
8
| var ALogFont: LOGFONT; begin // MijnThemeHandle is een geldige handle (heb ik gecontroleerd) if GetThemeFont(MijnThemeHandle, 0, EBP_NORMALGROUPBACKGROUND, EBHC_NORMAL, TMT_GLYPHFONT, ALogFont) <> S_OK then RaiseLastWin32Error; end; |
Een goede grap mag vrienden kosten.