Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C++/win32] Zelfgemaakt context-menu en activatie

Pagina: 1
Acties:

  • MisterData
  • Registratie: September 2001
  • Laatst online: 15-11 10:31
In mijn GUI-classes die ik in een aantal programma's gebruik heb ik nu ook een eigen popup menu-implementatie geschreven (deze vervangt overal TrackPopupMenu voor context-menus en regelt ook popups voor color selectors enzo). Deze bestaat uit een popup-window (ge'owned door het hoofdscherm, maar geen child daarvan) die de opties laat zien en een eigen modal loop die zorgt dat dat ding de rest blokkeert totdat een van de opties gekozen is. Redelijk standaard allemaal.

Nou is er een probleem wat betreft activatie: ik wil graag toetsaanslagen (WM_KEYDOWN enzo) ontvangen, en ik wil graag weten wanneer de gebruiker weer in het hoofdscherm van de applicatie klikt (zodat het menu verborgen kan worden). Dit werkt standaard door gewoon de popup te laten zien met ShowWindow (met SW_SHOW) zodat deze wordt geactivate en de focus krijgt. Het probleem is dat het hoofdscherm dan gedeactiveerd wordt en dat de titelbalk dat ook laat zien! Dat is in Windows niet de bedoeling (open maar eens een menu en je zult zien dat de titelbalk gewoon hetzelfde blijft).

Ik heb nu dus gezorgd dat dat venster niet geactiveerd wordt (middels WS_EX_NOACTIVATE en het vervangen van SW_SHOW met SW_SHOWNA en het afhandelen van WM_MOUSEACTIVATE in de popup), maar nu kan ik nooit weten of de gebruiker ergens anders klikt en krijg ik ook geen toetsaanslagen binnen (immers ik heb geen focus). Het is niet mogelijk om focus te hebben zonder geactiveerd te zijn. Is er iemand hier die weet hoe ik toch zo'n menu op een goede manier kan implementeren? Ik heb gegoogled en gegoogled, maar ik kan nergens een implementatie van een eigen popup-menu vinden...

[ Voor 3% gewijzigd door MisterData op 21-03-2008 14:28 ]


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-11 18:33
Met welke stijlen maak je je popup window aan eigenlijk?

[edit]
Hmm, alles wat ik er van kan vinden hebben het over het opvangen van NCACTIVATE messages en de het terugzetten van de focus naar de owner.
Die moet gaan bijhouden of er een popup window actief is en vervolgens notifications doorsturen naar dat window.

Ik kan zo snel niet vinden of er een manier is om het onafhankelijk van de owner te doen ( dwz zonder dat de owner moet meewerken )

[ Voor 78% gewijzigd door farlane op 21-03-2008 17:05 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.