Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En gemensam Windows-verktygsfältskontroll har inbyggda anpassningsfunktioner, inklusive en systemdefinierad anpassningsdialogruta som gör att användaren kan infoga, ta bort eller ordna om verktygsfältsknappar. Programmet avgör om anpassningsfunktionerna är tillgängliga och styr i vilken utsträckning användaren kan anpassa verktygsfältet.
Du kan göra de här anpassningsfunktionerna tillgängliga för användaren genom att ge verktygsfältet CCS_ADJUSTABLE formatmall. Med anpassningsfunktionerna kan användaren dra en knapp till en ny position eller ta bort en knapp genom att dra den från verktygsfältet. Dessutom kan användaren dubbelklicka på verktygsfältet för att visa dialogrutan Anpassa verktygsfält , vilket gör att användaren kan lägga till, ta bort och ordna om verktygsfältsknappar. Programmet kan visa dialogrutan med medlemsfunktionen Anpassa.
Verktygsfältskontrollen skickar meddelanden till det överordnade fönstret i varje steg i anpassningsprocessen. Om användaren håller NED SKIFT-tangenten och börjar dra en knapp hanterar verktygsfältet automatiskt dragåtgärden. Verktygsfältet skickar TBN_QUERYDELETE meddelandemeddelandet till det överordnade fönstret för att avgöra om knappen kan tas bort. Dragåtgärden avslutas om det överordnade fönstret returnerar FALSE. Annars fångar verktygsfältet in musindata och väntar på att användaren ska släppa musknappen.
När användaren släpper musknappen avgör verktygsfältskontrollen platsen för musmarkören. Om markören ligger utanför verktygsfältet tas knappen bort. Om markören finns på en annan knapp i verktygsfältet skickar verktygsfältet TBN_QUERYINSERT meddelandemeddelande till det överordnade fönstret för att avgöra om en knapp kan infogas till vänster om den angivna knappen. Knappen infogas om det överordnade fönstret returnerar TRUE; annars är det inte det. Verktygsfältet skickar TBN_TOOLBARCHANGE meddelandemeddelande för att signalera slutet på dragåtgärden.
Om användaren påbörjar en dragåtgärd utan att hålla ned SKIFT-tangenten skickar verktygsfältskontrollen TBN_BEGINDRAG meddelandemeddelande till ägarfönstret. Ett program som implementerar sin egen knappdragande kod kan använda det här meddelandet som en signal för att påbörja en dragåtgärd. Verktygsfältet skickar TBN_ENDDRAG meddelandemeddelande för att signalera slutet på dragåtgärden.
En verktygsfältskontroll skickar meddelanden när användaren anpassar ett verktygsfält med hjälp av dialogrutan Anpassa verktygsfält . Verktygsfältet skickar meddelandet TBN_BEGINADJUST när användaren dubbelklickar på verktygsfältet, men innan dialogrutan skapas. Därefter börjar verktygsfältet skicka en serie TBN_QUERYINSERT meddelanden för att avgöra om verktygsfältet tillåter att knappar infogas. När det överordnade fönstret returnerar TRUE slutar verktygsfältet att skicka TBN_QUERYINSERT meddelanden. Om det överordnade fönstret inte returnerar TRUE för någon knapp förstör verktygsfältet dialogrutan.
Därefter avgör verktygsfältskontrollen om några knappar kan tas bort från verktygsfältet genom att skicka ett TBN_QUERYDELETE meddelandemeddelande för varje knapp i verktygsfältet. Det överordnade fönstret returnerar TRUE för att indikera att en knapp kan tas bort. annars returneras FALSE. Verktygsfältet lägger till alla verktygsfältsknappar i dialogrutan, men gråtonar dem som inte kan tas bort.
När verktygsfältskontrollen behöver information om en knapp i dialogrutan Anpassa verktygsfält skickar den TBN_GETBUTTONINFO meddelandemeddelandet och anger indexet för knappen som den behöver information för och adressen till en TBNOTIFY-struktur . Det överordnade fönstret måste fylla strukturen med relevant information.
Dialogrutan Anpassa verktygsfält innehåller en hjälpknapp och en återställningsknapp. När användaren väljer knappen Hjälp skickar verktygsfältskontrollen TBN_CUSTHELP meddelandemeddelandet. Det överordnade fönstret bör svara genom att visa hjälpinformation. Dialogrutan skickar meddelandet TBN_RESET när användaren väljer knappen Återställ. Det här meddelandet signalerar att verktygsfältet håller på att initiera dialogrutan igen.
De här meddelandena är alla WM_NOTIFY-meddelanden, och de kan hanteras i ditt ägarfönster genom att lägga till följande struktur för meddelandekartan i meddelandekartan för ägarfönstret:
ON_NOTIFY( wNotifyCode, idControl, memberFxn )
wNotifyCode
Kod för meddelandeidentifierare, till exempel TBN_BEGINADJUST.
idControl
Identifieraren för kontrollen som skickar meddelandet.
memberFxn
Medlemsfunktionen som ska anropas när det här meddelandet tas emot.
Din medlemsfunktion deklareras med följande prototyp:
afx_msg void memberFxn( NMHDR * pNotifyStruct, LRESULT * result );
Om meddelandehanteraren returnerar ett värde ska det placera det i LRESULT som pekar på resultatet.
För varje meddelande pNotifyStruct pekar på antingen en NMHDR-struktur eller en TBNOTIFY-struktur . Dessa strukturer beskrivs nedan:
NMHDR-strukturen innehåller följande medlemmar:
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
Fönsterhandtag för kontrollen som skickar meddelandet. Om du vill konvertera handtaget till en
CWndpekare använder du CWnd::FromHandle.idFrom
Identifierare för kontrollen som skickar meddelandet.
kod
Meddelandekod. Den här medlemmen kan vara ett värde som är specifikt för en kontrolltyp, till exempel TBN_BEGINADJUST eller TTN_NEEDTEXT, eller så kan det vara ett av de vanliga meddelandevärdena som anges nedan:
NM_CLICK Användaren har klickat på den vänstra musknappen i kontrollen.
NM_DBLCLK Användaren har dubbelklickat på den vänstra musknappen i kontrollen.
NM_KILLFOCUS Kontrollen har förlorat indatafokuset.
NM_OUTOFMEMORY Kontrollen kunde inte slutföra en åtgärd eftersom det inte finns tillräckligt med minne tillgängligt.
NM_RCLICK Användaren har klickat på den högra musknappen i kontrollen.
NM_RDBLCLK Användaren har dubbelklickat på höger musknapp i kontrollen.
NM_RETURN Kontrollen har inmatningsfokus och användaren har tryckt på RETUR-tangenten.
NM_SETFOCUS Kontrollen har fått indatafokus.
TBNOTIFY-strukturen innehåller följande medlemmar:
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
Information som är gemensam för alla WM_NOTIFY meddelanden.
iItem
Index för knappen som är associerad med meddelandet.
tbButton
TBBUTTON-struktur som innehåller information om verktygsfältsknappen som är associerad med meddelandet.
cchText
Antal tecken i knapptext.
lpszText
Pekare för knapptext.
Meddelandena som verktygsfältet skickar är följande:
TBN_BEGINADJUST
Skickas när användaren börjar anpassa en verktygsfältskontroll. Pekaren pekar på en NMHDR-struktur som innehåller information om meddelandet. Hanteraren behöver inte returnera något specifikt värde.
TBN_BEGINDRAG
Skickas när användaren börjar dra en knapp i en verktygsfältskontroll. Pekaren pekar på en TBNOTIFY-struktur . IItem-medlemmen innehåller det nollbaserade indexet för knappen som dras. Hanteraren behöver inte returnera något specifikt värde.
TBN_CUSTHELP
Skickas när användaren väljer knappen Hjälp i dialogrutan Anpassa verktygsfält. Inget returvärde. Pekaren pekar på en NMHDR-struktur som innehåller information om meddelandemeddelandet. Hanteraren behöver inte returnera något specifikt värde.
TBN_ENDADJUST
Skickas när användaren slutar anpassa en verktygsfältskontroll. Pekaren pekar på en NMHDR-struktur som innehåller information om meddelandemeddelandet. Hanteraren behöver inte returnera något specifikt värde.
TBN_ENDDRAG
Skickas när användaren slutar dra en knapp i en verktygsfältskontroll. Pekaren pekar på en TBNOTIFY-struktur . IItem-medlemmen innehåller det nollbaserade indexet för knappen som dras. Hanteraren behöver inte returnera något specifikt värde.
TBN_GETBUTTONINFO
Skickas när användaren anpassar en verktygsfältskontroll. Verktygsfältet använder det här meddelandemeddelandet för att hämta information som behövs i dialogrutan Anpassa verktygsfält. Pekaren pekar på en TBNOTIFY-struktur . IItem-medlemmen anger det nollbaserade indexet för en knapp. Medlemmarna pszText och cchText anger adressen och längden, i tecken, på den aktuella knapptexten. Ett program bör fylla strukturen med information om knappen. Returnera TRUE om knappinformation kopierades till strukturen eller FALSE på annat sätt.
TBN_QUERYDELETE
Skickas medan användaren anpassar ett verktygsfält för att avgöra om en knapp kan tas bort från en verktygsfältskontroll. Pekaren pekar på en TBNOTIFY-struktur . IItem-medlemmen innehåller det nollbaserade indexet för knappen som ska tas bort. Returnera TRUE för att tillåta att knappen tas bort eller FALSE för att förhindra att knappen tas bort.
TBN_QUERYINSERT
Skickas medan användaren anpassar en verktygsfältskontroll för att avgöra om en knapp kan infogas till vänster om den angivna knappen. Pekaren pekar på en TBNOTIFY-struktur . iItem-medlemmen innehåller det nollbaserade indexet för knappen som ska infogas. Returnera TRUE för att tillåta att en knapp infogas framför den angivna knappen eller FALSE för att förhindra att knappen infogas.
TBN_RESET
Skickas när användaren återställer innehållet i dialogrutan Anpassa verktygsfält. Pekaren pekar på en NMHDR-struktur som innehåller information om meddelandemeddelandet. Hanteraren behöver inte returnera något specifikt värde.
TBN_TOOLBARCHANGE
Skickas när användaren har anpassat en verktygsfältskontroll. Pekaren pekar på en NMHDR-struktur som innehåller information om meddelandemeddelandet. Hanteraren behöver inte returnera något specifikt värde.