Delen via


Aanpassingsmeldingen verwerken

Een algemeen besturingselement voor een Windows-werkbalk bevat ingebouwde aanpassingsfuncties, waaronder een door het systeem gedefinieerd aanpassingsdialoogvenster, waarmee de gebruiker werkbalkknoppen kan invoegen, verwijderen of opnieuw rangschikt. De toepassing bepaalt of de aanpassingsfuncties beschikbaar zijn en bepaalt in hoeverre de gebruiker de werkbalk kan aanpassen.

U kunt deze aanpassingsfuncties beschikbaar maken voor de gebruiker door de werkbalk de CCS_ADJUSTABLE stijl te geven. Met de aanpassingsfuncties kan de gebruiker een knop naar een nieuwe positie slepen of een knop verwijderen door deze van de werkbalk te slepen. Bovendien kan de gebruiker dubbelklikken op de werkbalk om het dialoogvenster Werkbalk aanpassen weer te geven, zodat de gebruiker werkbalkknoppen kan toevoegen, verwijderen en opnieuw rangschikken. De toepassing kan het dialoogvenster weergeven met behulp van de functie Lid aanpassen .

Het besturingselement voor de werkbalk verzendt meldingsberichten naar het oudervenster bij elke stap in het aanpassingsproces. Als de gebruiker de Shift-toets ingedrukt houdt en een knop begint te slepen, verwerkt de werkbalk automatisch de sleepbewerking. De werkbalk verzendt het TBN_QUERYDELETE meldingsbericht naar het bovenliggende venster om te bepalen of de knop kan worden verwijderd. De sleepbewerking wordt beëindigd als het bovenliggende venster FALSE retourneert. Anders legt de werkbalk de invoer van de muis vast en wacht tot de gebruiker de muisknop loslaat.

Wanneer de gebruiker de muisknop loslaat, bepaalt het besturingselement van de werkbalk de locatie van de muiscursor. Als de cursor zich buiten de werkbalk bevindt, wordt de knop verwijderd. Als de cursor zich op een andere werkbalkknop bevindt, verzendt de werkbalk het TBN_QUERYINSERT meldingsbericht naar het bovenliggende venster om te bepalen of een knop links van de opgegeven knop kan worden ingevoegd. De knop wordt ingevoegd als het bovenliggende venster TRUE retourneert; anders niet. De werkbalk verzendt het TBN_TOOLBARCHANGE meldingsbericht om het einde van de sleepactie aan te geven.

Als de gebruiker een sleepbewerking start zonder de Shift-toets ingedrukt te houden, verzendt het besturingselement van de werkbalk het TBN_BEGINDRAG meldingsbericht naar het venster van de eigenaar. Een toepassing die een eigen code voor het slepen van knoppen implementeert, kan dit bericht gebruiken als signaal om een sleepbewerking te starten. De werkbalk verzendt het TBN_ENDDRAG meldingsbericht om het einde van de sleepbewerking aan te geven.

Een werkbalkbesturing verzendt meldingsberichten wanneer de gebruiker een werkbalk aanpast met behulp van het dialoogvenster Werkbalk aanpassen . De werkbalk verzendt het TBN_BEGINADJUST meldingsbericht nadat de gebruiker dubbelklikt op de werkbalk, maar voordat het dialoogvenster wordt gemaakt. Vervolgens begint de werkbalk met het verzenden van een reeks TBN_QUERYINSERT meldingsberichten om te bepalen of op de werkbalk knoppen kunnen worden ingevoegd. Wanneer het bovenliggende venster TRUE retourneert, stopt de gereedschapsbalk met het verzenden van meldingsberichten TBN_QUERYINSERT. Als het bovenliggende venster geen TRUE retourneert voor een knop, vernietigt de werkbalk het dialoogvenster.

Vervolgens bepaalt het besturingselement van de werkbalk of er knoppen uit de werkbalk kunnen worden verwijderd door één TBN_QUERYDELETE meldingsbericht te verzenden voor elke knop in de werkbalk. Het bovenliggende venster retourneert TRUE om aan te geven dat een knop kan worden verwijderd; anders wordt FALSE geretourneerd. Met de werkbalk worden alle werkbalkknoppen aan het dialoogvenster toegevoegd, maar worden de knoppen grijs weergegeven die mogelijk niet worden verwijderd.

Wanneer het besturingselement van de werkbalk informatie nodig heeft over een knop in het dialoogvenster Werkbalk aanpassen, stuurt het een TBN_GETBUTTONINFO meldingsbericht. Bij dit bericht worden zowel de index van de gewenste knop als het adres van een TBNOTIFY structuur opgegeven. Het oudervenster moet de structuur invullen met de relevante informatie.

Het dialoogvenster Werkbalk aanpassen bevat een Help-knop en een knop Opnieuw instellen. Wanneer de gebruiker de Knop Help kiest, verzendt het besturingselement van de werkbalk het TBN_CUSTHELP meldingsbericht. Het bovenliggende venster zou moeten reageren door helpinformatie weer te geven. Het dialoogvenster verzendt het TBN_RESET meldingsbericht wanneer de gebruiker de knop Opnieuw instellen selecteert. Dit bericht geeft aan dat de werkbalk op het punt staat om het dialoogvenster opnieuw te initialiseren.

Deze berichten zijn allemaal WM_NOTIFY berichten en ze kunnen worden verwerkt in het venster van uw eigenaar door berichtenoverzichtitems van het volgende formulier toe te voegen aan de berichtkaart van uw eigenaarvenster:

ON_NOTIFY( wNotifyCode, idControl, memberFxn )
  • wNotifyCode

    Id-code voor meldingsberichten, zoals TBN_BEGINADJUST.

  • idControl

    De id van het besturingselement dat de melding verzendt.

  • memberFxn

    De lidfunctie die moet worden aangeroepen wanneer deze melding wordt ontvangen.

Uw lidfunctie wordt gedeclareerd met het volgende prototype:

afx_msg void memberFxn( NMHDR * pNotifyStruct, LRESULT * result );

Als de handler van het meldingsbericht een waarde retourneert, moet deze in het LRESULT worden geplaatst dat door het resultaat wordt verwezen.

Verwijst voor elk bericht pNotifyStruct naar een NMHDR-structuur of een TBNOTIFY-structuur . Deze structuren worden hieronder beschreven:

De NMHDR-structuur bevat de volgende leden:

typedef struct tagNMHDR {
    HWND hwndFrom;  // handle of control sending message
    UINT idFrom;// identifier of control sending message
    UINT code;  // notification code; see below
} NMHDR;
  • hwndFrom

    Venstergreep van de controle die de melding verzendt. Als u deze ingang wilt converteren naar een CWnd aanwijzer, gebruikt u CWnd::FromHandle.

  • idFrom

    Id van het besturingselement dat de melding verzendt.

  • code

    Meldingscode. Dit lid kan een waarde zijn die specifiek is voor een type besturingselement, zoals TBN_BEGINADJUST of TTN_NEEDTEXT, of kan een van de onderstaande algemene meldingswaarden zijn:

    • NM_CLICK De gebruiker heeft op de linker muisknop in het controle-element geklikt.

    • NM_DBLCLK De gebruiker heeft dubbelgeklikt met de linkermuisknop binnen het besturingselement.

    • NM_KILLFOCUS Het besturingselement heeft de invoerfocus verloren.

    • NM_OUTOFMEMORY Het besturingselement kan een bewerking niet voltooien omdat er onvoldoende geheugen beschikbaar is.

    • NM_RCLICK De gebruiker heeft op de rechtermuisknop in de controle geklikt.

    • NM_RDBLCLK De gebruiker heeft met de rechtermuisknop binnen de bediening dubbelgeklikt.

    • NM_RETURN Het besturingselement heeft de invoerfocus en de gebruiker heeft op enter gedrukt.

    • NM_SETFOCUS Het besturingselement heeft de invoerfocus ontvangen.

De STRUCTUUR TBNOTIFY bevat de volgende leden:

typedef struct {
    NMHDR hdr; // information common to all WM_NOTIFY messages
    int iItem; // index of button associated with notification
    TBBUTTON tbButton; // info about button associated withnotification
    int cchText;   // count of characters in button text
    LPSTR lpszText;// address of button text
} TBNOTIFY, FAR* LPTBNOTIFY;
  • Hdr

    Informatie die gebruikelijk is voor alle WM_NOTIFY berichten.

  • iItem

    Index van knop die is gekoppeld aan melding.

  • tbButton

    TBBUTTON-structuur die informatie bevat over de werkbalkknop die is gekoppeld aan de melding.

  • cchText

    Aantal tekens in knoptekst.

  • lpszText

    Aanwijzer naar knoptekst.

De meldingen die de werkbalk verzendt, zijn als volgt:

  • TBN_BEGINADJUST

    Verzonden wanneer de gebruiker begint met het aanpassen van een werkbalk. De aanwijzer verwijst naar een NMHDR-structuur die informatie over de melding bevat. De handler hoeft geen specifieke waarde te retourneren.

  • TBN_BEGINDRAG

    Verzonden wanneer de gebruiker begint met het slepen van een knop in een werkbalk van een bedieningselement. De pointer wijst op een TBNOTIFY-structuur. Het iItem-lid bevat de op nul gebaseerde index van de knop die wordt gesleept. De handler hoeft geen specifieke waarde te retourneren.

  • TBN_CUSTHELP

    Verzonden wanneer de gebruiker de knop Help kiest in het dialoogvenster Werkbalk aanpassen. Geen retourwaarde. De aanwijzer verwijst naar een NMHDR-structuur die informatie over het meldingsbericht bevat. De handler hoeft geen specifieke waarde te retourneren.

  • TBN_ENDADJUST

    Verzonden wanneer de gebruiker stopt met het aanpassen van een werkbalk. De aanwijzer verwijst naar een NMHDR-structuur die informatie over het meldingsbericht bevat. De handler hoeft geen specifieke waarde te retourneren.

  • TBN_ENDDRAG

    Verzonden wanneer de gebruiker stopt met het slepen van een knop in een werkbalk. De pointer wijst op een TBNOTIFY-structuur. Het iItem-lid bevat de op nul gebaseerde index van de knop die wordt gesleept. De handler hoeft geen specifieke waarde te retourneren.

  • TBN_GETBUTTONINFO

    Verzonden wanneer de gebruiker een werkbalk aan het aanpassen is. De werkbalk gebruikt dit meldingsbericht om informatie op te halen die nodig is voor het dialoogvenster Werkbalk aanpassen. De pointer wijst op een TBNOTIFY-structuur. Het iItem-lid geeft de op nul gebaseerde index van een knop aan. De pszText - en cchText-leden geven het adres en de lengte, in tekens, van de huidige knoptekst op. Een toepassing moet de structuur vullen met informatie over de knop. Retourneer TRUE als knopgegevens naar de structuur zijn gekopieerd, of anders FALSE.

  • TBN_QUERYDELETE

    Verzonden terwijl de gebruiker een werkbalk aan het aanpassen is om te bepalen of een knop uit een werkbalkbediening kan worden verwijderd. De pointer wijst op een TBNOTIFY-structuur. Het iItem-lid bevat de op nul gebaseerde index van de knop die moet worden verwijderd. Retourneer TRUE om toe te staan dat de knop wordt verwijderd of ONWAAR om te voorkomen dat de knop wordt verwijderd.

  • TBN_QUERYINSERT

    Verzonden terwijl de gebruiker een besturingselement op de werkbalk aanwerkt om te bepalen of een knop links van de opgegeven knop kan worden ingevoegd. De pointer wijst op een TBNOTIFY-structuur. Het iItem-lid bevat de op nul gebaseerde index van de knop die moet worden ingevoegd. Retourneer TRUE om toe te staan dat een knop vóór de opgegeven knop of ONWAAR wordt ingevoegd om te voorkomen dat de knop wordt ingevoegd.

  • TBN_RESET

    Verzonden wanneer de gebruiker de inhoud van het dialoogvenster Werkbalk aanpassen opnieuw instelt. De aanwijzer verwijst naar een NMHDR-structuur die informatie over het meldingsbericht bevat. De handler hoeft geen specifieke waarde te retourneren.

  • TBN_TOOLBARCHANGE

    Verzonden nadat de gebruiker een besturingselement voor de werkbalk heeft aangepast. De aanwijzer verwijst naar een NMHDR-structuur die informatie over het meldingsbericht bevat. De handler hoeft geen specifieke waarde te retourneren.

Zie ook

CToolBarCtrl gebruiken
Besturingselementen