Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Windows-gränssnittet innehåller ett särskilt skrivbordsverktygsfält för program som kallas aktivitetsfältet. Du kan använda aktivitetsfältet för aktiviteter som att växla mellan öppna fönster och starta nya program.
Anteckning
Information om ändringar som gjorts i aktivitetsfältet från och med Windows 7 finns i Tillägg för aktivitetsfältet.
Det här avsnittet innehåller följande avsnitt.
Om aktivitetsfältet
Aktivitetsfältet innehåller följande:
- Start-meny
- Snabbstartsfält (endast Windows Vista och tidigare)
- Knappar i aktivitetsfältet
- Verktygsfält (valfritt)
- Meddelandefältet
Menyn Start innehåller kommandon som kan komma åt program, dokument och inställningar. Dessa kommandon omfattar Alla program, Dokument, Kontrollpanelen, Games, Hjälp och support, Stängoch Sök program och filer.
Start i tidigare versioner av Windows innehöll objekt som Find och Run, vars funktioner ingick i Search-program och filer i Windows Vista och senare.
Snabbstartsfältet, som är tillgängligt i versioner av Windows tidigare än Windows 7, innehåller genvägar till program. Windows innehåller standardposter, till exempel Windows Internet Explorer, och användaren kan lägga till ytterligare genvägar som de väljer. Ikoner i det här området svarar på ett enda klick. I Windows 7 och senare ingår den här funktionen i knapparna i aktivitetsfältet.
Shell placerar en knapp i aktivitetsfältet när ett program skapar ett icke-ägt fönster, det vill säga ett fönster som inte har ett förälderfönster och som har rätt utökade stilbitar (se Hantera knappar i aktivitetsfältet, nedan). Om du vill växla till ett fönster klickar användaren på dess fönsterknapp. Den här funktionen har utökats avsevärt från och med Windows 7. För mer information, se Aktivitetsfältets tillägg.
Program kan placera ikoner i meddelandefältet för att ange status för en åtgärd eller för att meddela användaren om en händelse. Ett program kan till exempel placera en skrivarikon i meddelandefältet för att visa att ett utskriftsjobb pågår. I Windows 7 och senare bör dock en del av informationen som tidigare tillhandahölls av meddelandefältet tillhandahållas via ett programs aktivitetsfältsknapp. Meddelandeområdet finns till höger i aktivitetsfältet (om aktivitetsfältet är vågrätt) eller längst ned (om aktivitetsfältet är lodrätt). Mer information finns i Meddelanden och meddelandefältet.
Meddelandefältet visar även aktuell tid om det alternativet är valt. Alternativet hittas som:
- Windows 7 och senare: Listrutan Klocka i listrutan Aktivera eller inaktivera systemikoner sidan i Ikoner för meddelandeområde Kontrollpanelen (även tillgänglig via egenskaperna för meddelandeområdet).
- Windows Vista: Kryssrutan Klocka på sidan Meddelandeområdet i egenskapsfönstret Aktivitetsfältet och Start-menyn.
- Windows XP: Kryssrutan Visa klockan i egenskapsfönstret Aktivitetsfältet och Start-menyn.
Användaren kan högerklicka på aktivitetsfältet för att visa snabbmenyn. Snabbmenyn innehåller kommandon för att kaskadfönster, stackfönster, visa fönster sida vid sida, visa skrivbordet, starta Aktivitetshanteraren och ange egenskaper för aktivitetsfältet. Snabbmenyn innehåller också alternativet att lägga till eller ta bort en uppsättning verktygsfält från aktivitetsfältet. Du kan lägga till nya verktygsfält på den här menyn genom att registrera dem under kategorin CATID_DeskBand. Mer information finns i Implementera bandobjekt. Observera att från och med Windows 7 har aktivitetsfältet och meddelandefältet separata snabbmenyer. De här snabbmenyerna delar vissa alternativ, till exempel fönsterarrangemang och lägger till andra.
Visningsalternativ för aktivitetsfältet
Aktivitetsfältet stöder två visningsalternativ: Dölj automatiskt och, endast i Windows Vista och tidigare, Always On Top (aktivitetsfältet är alltid i det här läget i Windows 7 och senare). För att ange dessa alternativ måste användaren öppna snabbmenyn i aktivitetsfältet, klicka på Egenskaperoch markera eller avmarkera kryssrutan Dölj aktivitetsfältet automatiskt eller kryssrutan Behåll aktivitetsfältet ovanpå andra fönster. Om du vill hämta tillståndet för dessa visningsalternativ använder du meddelandet ABM_GETSTATE. Om du vill bli meddelad när statusen för dessa visningsalternativ ändras bearbetar du ABN_STATECHANGE meddelandet i din fönsterprocedur. Om du vill ändra tillståndet för dessa visningsalternativ använder du meddelandet ABM_SETSTATE.
Arbetsytan är den del av skärmen som inte skyms av aktivitetsfältet. Om du vill hämta arbetsytans storlek anropar du funktionen SystemParametersInfo med SPI_GETWORKAREA värdeuppsättningen. Om du vill hämta de rektangelkoordinater som beskriver aktivitetsfältets plats använder du meddelandet ABM_GETTASKBARPOS.
Det går att täcka aktivitetsfältet genom att uttryckligen ange storleken på fönsterrektangeln lika med skärmens storlek med SetWindowPos. För Windows 2000-system eller senare måste fönstret sakna antingen WS_CAPTION eller WS_THICKFRAME, annars måste fönstret vara storleksanpassat så att klientområdet täcker hela skärmen. För dessa system gäller också att om aktivitetsfältet är inställt på "Alltid överst" förblir det dolt endast medan programmet är i förgrunden.
Lägga till genvägar på Start-menyn
Följ dessa steg om du vill lägga till ett objekt i Program undermeny i Microsoft Windows NT 4.0, Windows 2000 och senare eller Windows 95 eller senare.
- Skapa en shell-länk med hjälp av gränssnittet IShellLink.
- Hämta PIDL för mappen Program med hjälp av SHGetSpecialFolderLocationoch skicka CSIDL_PROGRAMS.
- Lägg till Shell-länken i mappen Program. Du kan också skapa en mapp i mappen Program och lägga till länken i mappen.
Hantera aktivitetsfältets knappar
Gränssnittet skapar en knapp i aktivitetsfältet när ett program skapar ett fönster som inte ägs. Om du vill se till att fönsterknappen är placerad i aktivitetsfältet skapar du ett ägarlöst fönster med WS_EX_APPWINDOW utökad stil. Om du vill förhindra att fönsterknappen placeras i aktivitetsfältet skapar du det ägarlösa fönstret med WS_EX_TOOLWINDOW utökad stil. Alternativt kan du skapa ett dolt fönster och göra det här dolda fönstret till ägare till det synliga fönstret.
Shell tar bara bort knappen för ett fönster från aktivitetsfältet om fönstrets formatmall stöder synliga knappar i aktivitetsfältet. Om du vill ändra formatmallen för ett fönster dynamiskt till en som inte stöder synliga knappar i aktivitetsfältet måste du dölja fönstret först (genom att anropa ShowWindow med SW_HIDE), ändra fönsterformatet och sedan visa fönstret.
Fönsterknappen innehåller vanligtvis programikonen och rubriken. Men om programmet inte innehåller en systemmeny skapas fönsterknappen utan ikonen.
Om du vill att programmet ska få användarens uppmärksamhet när fönstret inte är aktivt använder du funktionen FlashWindow för att meddela användaren att ett meddelande väntar. Den här funktionen blinkar fönsterknappen. När användaren klickar på fönsterknappen för att aktivera fönstret kan programmet visa meddelandet.
Ändra innehållet i aktivitetsfältet
version 4.71 och senare av Shell32.dll lägger till funktionen för att ändra innehållet i aktivitetsfältet. Från ett program kan du nu lägga till, ta bort och aktivera knappar i aktivitetsfältet. Att aktivera objektet aktiverar inte fönstret; det visar att objektet är nedtryckt i aktivitetsfältet.
Funktionerna för ändring av aktivitetsfältet implementeras i ett COM-objekt (Component Object Model) (CLSID_TaskbarList ) som exponerar ITaskbarList-gränssnittet (IID_ITaskbarList). Du måste anropa metoden ITaskbarList::HrInit för att initiera objektet. Du kan sedan använda metoderna i gränssnittet ITaskbarList för att ändra innehållet i aktivitetsfältet.
Lägga till, ändra och ta bort ikoner i meddelandefältet
Använd funktionen Shell_NotifyIcon för att lägga till, ändra eller ta bort ikoner från meddelandefältet. Parametern dwMessage för Shell_NotifyIcon är ett meddelande till aktivitetsfältet som anger vilken åtgärd som ska vidtas. Parametern pnid är en pekare till en NOTIFYICONDATA- struktur som används för att identifiera ikonen och skicka eventuell ytterligare information som behövs för att systemet ska bearbeta meddelandet.
Du kan utföra följande åtgärder med ikoner för meddelandeområdet.
- Om du vill lägga till en ikon i aktivitetsfältets meddelandeområde anropar du Shell_NotifyIcon med parametern dwMessage inställd på NIM_ADD. NOTIFYICONDATA- struktur används för att ange ikonens handtag och identifierare samt valfri knappbeskrivningstext. Om användaren har markerat kryssrutan Visa klocka i aktivitetsfältets egenskaper placerar systemet ikonen till vänster om klockan. Annars visas ikonen till höger eller längst ned i aktivitetsfältet. Alla befintliga ikoner flyttas till vänster för att göra plats för den nya ikonen.
- Om du vill ändra en ikons information, inklusive dess ikonhandtag, knappbeskrivningstext och återanropsmeddelandeidentifierare, anropar du Shell_NotifyIcon med dwMessage inställt på NIM_MODIFY.
- Om du vill ta bort en ikon från meddelandefältet anropar du Shell_NotifyIcon med parametern dwMessage inställd på NIM_DELETE.
När du har slutfört en användargränssnittsåtgärd återgår du till meddelandefältet genom att anropa Shell_NotifyIcon med dwMessage inställt på NIM_SETFOCUS. Du kan till exempel göra detta när en aktivitetsfältikon visar en snabbmeny, men användaren avbryter den genom att trycka på ESCAPE-tangenten.
Ta emot återanropsmeddelanden för meddelandeområde
Program placerar ofta ikoner i meddelandefältet i aktivitetsfältet för att fungera som statusindikatorer. Du kan ange ytterligare information när användaren utför musåtgärder, till exempel att flytta muspekaren över ikonen eller klicka på ikonen.
Systemet meddelar dig om mus- och tangentbordshändelser genom att skicka ett programdefinierat motringningsmeddelande som är associerat med en viss ikon. På så sätt kan systemet meddela ett program när användaren till exempel klickar på ikonen eller väljer den genom att trycka på en nyckel.
Du definierar en ikons återanropsmeddelande när du lägger till ikonen i aktivitetsfältet. Återanropsmeddelandeidentifieraren anges i uCallbackMessage medlem i NOTIFYICONDATA struktur som skickas med NIM_ADD. När en händelse inträffar skickar systemet callback-meddelandet till fönsterproceduren för det fönster som anges av hWnd. Parametern wParam i meddelandet innehåller identifieraren för aktivitetsfältets ikon där händelsen inträffade. Parametern lParam innehåller mus- eller tangentbordsmeddelandet som är associerat med händelsen. När muspekaren till exempel flyttas till en aktivitetsfältikon innehåller lParamWM_MOUSEMOVE.
Resultatet av olika mushändelser kan sammanfattas på följande sätt:
- När användaren flyttar muspekaren över ikonen visar systemet knappbeskrivningstexten som angavs i NOTIFYICONDATA.
- När användaren klickar på ikonen får programmet ett WM_LBUTTONDOWN meddelande.
- När användaren högerklickar på ikonen får programmet ett WM_RBUTTONDOWN meddelande.
- När användaren dubbelklickar på ikonen får programmet ett WM_LBUTTONDBLCLK meddelande.
Om du klickar på ikonen visas ett fönster med ytterligare information, högerklickar visar en snabbmeny, och dubbelklickar utför standardkommandot på snabbmenyn.
Ett exempel på hur du ändrar knappbeskrivningen som är associerad med en ikon i meddelandefältet finns i Ballongtips för statusfältsikoner.
Version 5.0 och senare av Shell hanterar Shell_NotifyIcon mus- och tangentbordshändelser på olika sätt än tidigare Shell-versioner som finns i Windows NT 4.0, Windows 95 och Windows 98. Skillnaderna är följande:
- Om en användare begär en meddelandeikons snabbmeny med tangentbordet skickar version 5.0 Shell det associerade programmet ett WM_CONTEXTMENU meddelande. Tidigare versioner skickar WM_RBUTTONDOWN och WM_RBUTTONUP meddelanden.
- Om en användare väljer en meddelandeikon med tangentbordet och aktiverar den med blankstegsfältet eller RETUR-nyckeln skickar version 5.0 Shell det associerade programmet ett NIN_KEYSELECT meddelande. Tidigare versioner skickar WM_RBUTTONDOWN och WM_RBUTTONUP meddelanden.
- Om en användare väljer en meddelandeikon med musen och aktiverar den med RETUR-nyckeln skickar version 5.0 Shell det associerade programmet ett NIN_SELECT meddelande. Tidigare versioner skickar WM_RBUTTONDOWN och WM_RBUTTONUP meddelanden.
- Om en användare för muspekaren över en ikon som ett verktygstips är associerat med skickar version 6.0 Shell (Windows XP) följande meddelanden.
-
- NIN_BALLOONSHOW – Skickas när ballongen visas (ballonger placeras i kö).
- NIN_BALLOONHIDE – Skickas när ballongen försvinner, till exempel när ikonen tas bort. Det här meddelandet skickas inte om ballongen stängs på grund av en timeout eller ett musklick.
- NIN_BALLOONTIMEOUT – Skickas när ballongen stängs på grund av en timeout.
- NIN_BALLOONUSERCLICK – Skickas när ballongen stängs på grund av ett musklick.
-
Du kan välja hur gränssnittet ska bete sig genom att anropa Shell_NotifyIcon med dwMessage inställt på NIM_SETVERSION. Ange medlemmen uVersion i strukturen NOTIFYICONDATA- för att ange om du vill använda version 5.0 eller före version 5.0.
Meddelande om skapande av aktivitetsfält
Med Microsoft Internet Explorer 4.0 och senare meddelar Shell program att aktivitetsfältet har skapats. När aktivitetsfältet skapas registrerar det ett meddelande med strängen AktivitetsfältetSkapad och sänder sedan meddelandet till alla fönster på den översta nivån. När aktivitetsfältets program tar emot det här meddelandet bör det förutsätta att alla ikoner i aktivitetsfältet som lagts till har tagits bort och lägger till dem igen. Den här funktionen gäller vanligtvis endast för tjänster som redan körs när Shell startas. I följande exempel visas en mycket förenklad metod för att hantera det här fallet.
I Windows 10 sänder aktivitetsfältet även det här meddelandet när DPI:t för den primära bildskärmen ändras.
LRESULT CALLBACK WndProc(HWND hWnd,
UINT uMessage,
WPARAM wParam,
LPARAM lParam)
{
static UINT s_uTaskbarRestart;
switch(uMessage)
{
case WM_CREATE:
s_uTaskbarRestart = RegisterWindowMessage(TEXT("TaskbarCreated"));
break;
default:
if(uMessage == s_uTaskbarRestart)
AddTaskbarIcons();
break;
}
return DefWindowProc(hWnd, uMessage, wParam, lParam);
}
Använda aktivitetsfältet
Det här avsnittet innehåller exempel som visar hur du lägger till ikoner i meddelandefältet i aktivitetsfältet och hur du bearbetar motringningsmeddelanden för aktivitetsfältets ikoner.
Lägga till och ta bort aktivitetsfältets ikoner i meddelandefältet
Du lägger till en ikon i meddelandeområdet i aktivitetsfältet genom att fylla i en NOTIFYICONDATA--struktur och sedan skicka strukturen till Shell_NotifyIcon med dwMessage inställd på NIM_ADD. Strukturmedlemmarna måste ange handtaget i fönstret som lägger till ikonen, samt ikonidentifieraren och ikonhandtaget. Du kan också ange knappbeskrivningstext för ikonen. Om du behöver ta emot musmeddelanden för ikonen anger du identifieraren för motringningsmeddelandet som systemet ska använda för att skicka meddelandet till fönsterproceduren.
Funktionen i följande exempel visar hur du lägger till en ikon i aktivitetsfältet.
// MyTaskBarAddIcon - adds an icon to the notification area.
// Returns TRUE if successful, or FALSE otherwise.
// hwnd - handle to the window to receive callback messages
// uID - identifier of the icon
// hicon - handle to the icon to add
// lpszTip - tooltip text
BOOL MyTaskBarAddIcon(HWND hwnd, UINT uID, HICON hicon, LPSTR lpszTip)
{
BOOL res;
NOTIFYICONDATA tnid;
tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = hwnd;
tnid.uID = uID;
tnid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
tnid.uCallbackMessage = MYWM_NOTIFYICON;
tnid.hIcon = hicon;
if (lpszTip)
hr = StringCbCopyN(tnid.szTip, sizeof(tnid.szTip), lpszTip,
sizeof(tnid.szTip));
// TODO: Add error handling for the HRESULT.
else
tnid.szTip[0] = (TCHAR)'\0';
res = Shell_NotifyIcon(NIM_ADD, &tnid);
if (hicon)
DestroyIcon(hicon);
return res;
}
Om du vill ta bort en ikon från meddelandefältet i aktivitetsfältet fyller du i en NOTIFYICONDATA struktur och anropar Shell_NotifyIcon med dwMessage inställt på NIM_DELETE. När du tar bort en aktivitetsfältsikon anger du endast cbSize, hWndoch uID medlemmar i strukturen. Till exempel:
// MyTaskBarDeleteIcon - deletes an icon from the notification area.
// Returns TRUE if successful, or FALSE otherwise.
// hwnd - handle to the window that added the icon.
// uID - identifier of the icon to delete.
BOOL MyTaskBarDeleteIcon(HWND hwnd, UINT uID)
{
BOOL res;
NOTIFYICONDATA tnid;
tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = hwnd;
tnid.uID = uID;
res = Shell_NotifyIcon(NIM_DELETE, &tnid);
return res;
}
Ta emot mushändelser
Om du anger ett återuppringningsmeddelande för en aktivitetsfältsikon skickar systemet meddelandet till ditt program när en mushändelse inträffar i ikonens begränsningsrektangel. Parametern wParam i meddelandet anger identifieraren för aktivitetsfältets ikon, och parametern lParam i meddelandet anger meddelandet som systemet genererade som ett resultat av mushändelsen.
Funktionen i följande exempel kommer från ett program som lägger till både batteri- och skrivarikoner i aktivitetsfältet. Programmet anropar funktionen när den tar emot ett motringningsmeddelande. Funktionen avgör om användaren har klickat på någon av ikonerna och anropar en programdefinierad funktion för att visa statusinformation om ett klick har inträffat.
// On_MYWM_NOTIFYICON - processes callback messages for taskbar icons.
// wParam - first message parameter of the callback message.
// lParam - second message parameter of the callback message.
void On_MYWM_NOTIFYICON(WPARAM wParam, LPARAM lParam)
{
UINT uID;
UINT uMouseMsg;
uID = (UINT) wParam;
uMouseMsg = (UINT) lParam;
if (uMouseMsg == WM_LBUTTONDOWN)
{
switch (uID)
{
case IDI_MYBATTERYICON:
// The user clicked the battery icon. Display the
// battery status.
ShowBatteryStatus();
break;
case IDI_MYPRINTERICON:
// The user clicked the printer icon. Display the
// status of the print job.
ShowJobStatus();
break;
default:
break;
}
}
return;
}