Vra

Hoe om 'n klik gebeurtenis luisteraar te voeg aan my persoonlike beheer met wxWidgets? Die persoonlike beheer gebruik wxWindow as die basis. Op die lys gebeurtenis sien ek

wxEVT_LEFT_DOWN 
wxEVT_LEFT_UP 
wxEVT_LEFT_DCLICK
wxEVT_MIDDLE_DOWN
wxEVT_MIDDLE_UP 
wxEVT_MIDDLE_DCLICK
wxEVT_RIGHT_DOWN 
wxEVT_RIGHT_UP
wxEVT_RIGHT_DCLICK
wxEVT_MOTION
wxEVT_ENTER_WINDOW
wxEVT_LEAVE_WINDOW
wxEVT_MOUSEWHEEL 

Maar daar is geen wxEVT_LEFT_CLICK of soortgelyke.

Was dit nuttig?

Oplossing

Tipies, daar is geen "klik" gebeurtenis (en in die geval van wxWidgets - daar is nie ). Die aksie van die kliek is ingebreek sy twee dele: Muis Down en muis Up. Tipies wat jy dink van so 'n "links kliek" gebeurtenis eintlik hanteer in 'n "oorgelaat" gebeurtenis.

Probeer dit uit:

  • Hover oor 'n knoppie (soos die "Kommentaar Voeg" knoppie hierdie bladsy)
  • Klik op die linker-muis knoppie af en hou
  • Plaas die muis af van die knoppie terwyl in te hou
  • Laat die links muis knoppie
  • Niks gebeur!

Dié keer:

  • Hover oor dieselfde knoppie
  • Klik op die links-muisknop en hou
  • Laat die links muis knoppie
  • Die "klik" aksie wat jy verwag word veroorsaak deur die up gebeurtenis!

Ander wenke

In die eerste plek het ek raai erfgename van wxControl nie wxWindow, wxControl is ontwerp vir daardie presiese doel en jy is minder geneig om uit te vind jouself die stryd teen die stelsel. As ek kyk na 'n beheer ek gaan bou in my eie wxWidgets app, ek sien dat my klik hanteerder te wxEVT_LEFT_DOWN is aangeheg. Soek in my kopie van Cross platform GUI Programmering met wxWidgets ek kan 'n lys van al wxMouseEvents sien, en daar is geen wxEVT_LEFT_CLICK. Ek stel voor wxEVT_LEFT_DOWN is die geleentheid om te gebruik.

Nou nadat dit gepos is ek antwoord fris lees en ek stem saam met hom, wxWidgets bied die laagste vlak gebeure en dit gee jou die maksimum bedrag van beheer van die gebruikerskoppelvlak jy bou vir jou gebruikers.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top