Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Windows felület tartalmaz egy speciális alkalmazás asztali eszköztárat, amit tálcánakhívnak. A tálcán olyan feladatokhoz használhatja, mint a megnyitott ablakok közötti váltás és az új alkalmazások indítása.
Jegyzet
A tálcán a Windows 7-ben végrehajtott módosításokról további információt a Tálcabővítményekcímű témakörben talál.
Ez a témakör a következő szakaszokat tartalmazza.
Tudnivalók a tálcáról
A tálca a következőket tartalmazza:
- Start menü
- Gyorsindító sáv (csak Windows Vista és korábbi verziók esetén)
- Tálcagombok
- Eszköztárak (nem kötelező)
- Értesítési terület
A Start menü olyan parancsokat tartalmaz, amelyek hozzáférhetnek a programokhoz, dokumentumokhoz és beállításokhoz. Ezek a parancsok a következők: Minden program, Dokumentumok, Vezérlőpult, Játékok, Súgó és támogatás, Leállítás, és Keresés programok és fájlok.
A Windows korábbi verzióiban a Start olyan elemeket tartalmazott, mint például a Keresés és a Futtatás, amelyek funkciói a Windows Vista és újabb verziókban keresési programokban és fájlokban is megtalálhatók.
A Windows 7-nél korábbi windowsos verziókban elérhető gyorsindító sáv az alkalmazások billentyűparancsait tartalmazza. A Windows alapértelmezett bejegyzéseket biztosít, például a Windows Internet Explorert, és a felhasználó további parancsikonokat is hozzáadhat. A terület ikonjai egyetlen kattintással válaszolnak. A Windows 7-ben és újabb verziókban ez a funkció a tálca gombjaiban is megtalálható.
A Shell minden alkalommal elhelyez egy gombot a tálcán, amikor egy alkalmazás szülő nélküli ablakot hoz létre—azaz olyan ablakot, amely nem rendelkezik szülővel és a megfelelő kiterjesztett stílusbitekkel rendelkezik (lásd alább: Tálcagombok kezelése). Az ablakra váltáshoz a felhasználó az ablak gombjára kattint. Ez a funkció a Windows 7-hez hasonlóan jelentősen kibővült. További információ: Tálcabővítmények.
Az alkalmazások ikonokat helyezhetnek el az értesítési területen a művelet állapotának jelzésére vagy a felhasználó értesítésére egy eseményről. Előfordulhat például, hogy egy alkalmazás egy nyomtatóikont helyez el az értesítési területen annak megjelenítéséhez, hogy a nyomtatási feladat folyamatban van. A Windows 7-es és újabb verziókban azonban az értesítési terület által korábban megadott információk egy részét az alkalmazás tálcáján kell megadni. Az értesítési terület a tálca jobb szélén (ha a tálca vízszintes) vagy alul található (ha a tálca függőleges). További információ: Értesítések és az Értesítési terület.
Az értesítési terület az aktuális időpontot is megjeleníti, ha ez a beállítás van kiválasztva. A beállítás a következő:
- Windows 7-es és újabb: Az Óra legördülő lista a A Értesítési terület ikonjai Vezérlőpult alkalmazás lapján található rendszerikonok be- és kikapcsolása (az értesítési terület tulajdonságain keresztül is elérhető).
- Windows Vista: Az Óra jelölőnégyzet a tálca és a Start menü Értesítési terület lapján tulajdonságok ablakában.
- Windows XP: A Az óra megjelenítése jelölőnégyzet a tálca és a Start menü tulajdonságai ablakban.
A felhasználó a tálcára jobb gombbal kattintva megjelenítheti a helyi menüt. A helyi menü parancsokat tartalmaz az ablakok kaszkádolt elrendezéséhez, az ablakok egymás melletti megjelenítéséhez, az asztal megjelenítéséhez, a Feladatkezelő elindításához és a tálca tulajdonságainak beállításához. A helyi menüben lehetőség van eszköztárak hozzáadására vagy eltávolítására is a tálcán. Új eszköztárakat is hozzáadhat ehhez a menühöz, ha regisztrálja őket a CATID_DeskBand kategóriában. További információért lásd: Sávobjektumok implementálása. Vegye figyelembe, hogy a Windows 7-hez hasonlóan a tálca és az értesítési terület külön helyi menükkel rendelkezik. Ezek a helyi menük megosztanak néhány lehetőséget, például az ablakelrendezést, és hozzáadnak másokat is.
Tálca megjelenítési beállításai
A tálcán két megjelenítési lehetőség érhető el: Automatikus elrejtés, és csak Windows Vista és korábbi verziókban az Always On Top (a tálca mindig ebben a módban van a Windows 7 és újabb verziókban). A beállítások megadásához a felhasználónak meg kell nyitnia a tálca helyi menüjét, kattintson a Tulajdonságokelemre, és jelölje be vagy törölje a jelet a Automatikus elrejtés a tálcán jelölőnégyzetből, vagy a A tálca megtartása más ablakok tetején jelölőnégyzetből. A megjelenítési beállítások állapotának lekéréséhez használja a ABM_GETSTATE üzenetet. Ha értesítést szeretne kapni a megjelenítési beállítások állapotának változásáról, dolgozza fel a ABN_STATECHANGE értesítési üzenetet az ablak eljárásában. A megjelenítési beállítások állapotának módosításához használja a ABM_SETSTATE üzenetet.
A munkaterület a tálca által nem eltakart képernyőrész. A munkaterület méretének lekéréséhez hívja meg a SystemParametersInfo függvényt a SPI_GETWORKAREA értékkészlettel. A tálca helyét leíró téglalap koordináták lekéréséhez használja a ABM_GETTASKBARPOS üzenetet.
A tálcát úgy fedheti le, hogy explicit módon beállítja az ablak téglalapjának méretét, hogy az megegyezzen a képernyő méretével a SetWindowPoshasználatával. Windows 2000 vagy újabb rendszerek esetén az ablaknak nem lehet WS_CAPTION vagy WS_THICKFRAME, különben az ablakot úgy kell méretezni, hogy a kliens terület lefedje a teljes képernyőt. Azokra a rendszerekre jellemzően, ha a tálca Always On Top értékre van állítva, az csak akkor marad rejtve, ha az alkalmazás az előtérben van.
Billentyűparancsok hozzáadása a Start menühöz
Ha elemet szeretne hozzáadni a Programok almenühöz a Microsoft Windows NT 4.0, Windows 2000 és újabb, illetve Windows 95 vagy újabb verziójában, kövesse az alábbi lépéseket.
- Hozzon létre egy rendszerhéjhivatkozást az IShellLink felület használatával.
- A Programok mappájának PIDL-jét úgy kaphatod meg, hogy használod a SHGetSpecialFolderLocationfüggvényt, és átadod neki a CSIDL_PROGRAMSértéket.
- Adja hozzá a Shell-hivatkozást a Programok mappához. A Programok mappában is létrehozhat egy mappát, és hozzáadhatja a hivatkozást a mappához.
Tálcagombok kezelése
A Rendszerhéj akkor hoz létre gombot a tálcán, ha egy alkalmazás nem saját ablakot hoz létre. Ha gondoskodni szeretne arról, hogy az ablak gomb a tálcára kerüljön, hozzon létre egy nem birtokos ablakot a WS_EX_APPWINDOW bővített stílussal. Ha meg szeretné akadályozni, hogy az ablak gomb a tálcára kerüljön, hozza létre a nem birtokos ablakot a WS_EX_TOOLWINDOW bővített stílussal. Másik lehetőségként létrehozhat egy rejtett ablakot, és ezt a rejtett ablakot a látható ablak tulajdonosává teheti.
A Rendszerhéj csak akkor távolítja el az ablak gombját a tálcáról, ha az ablak stílusa támogatja a látható tálcagombokat. Ha olyan ablakstílust szeretne dinamikusan módosítani, amely nem támogatja a látható tálcagombokat, először el kell rejtenie az ablakot (a ShowWindow meghívásával SW_HIDE), módosítsa az ablakstílust, majd jelenítse meg az ablakot.
Az ablak gomb általában az alkalmazás ikonját és címét tartalmazza. Ha azonban az alkalmazás nem tartalmaz rendszermenüt, az ablak gomb ikon nélkül jön létre.
Ha azt szeretné, hogy az alkalmazás felkeltse a felhasználó figyelmét, amikor az ablak nem aktív, a FlashWindow függvénnyel tudathatja a felhasználóval, hogy egy üzenet várakozik. Ez a függvény felvillantja az ablakgombot. Miután a felhasználó az ablak gombra kattintva aktiválta az ablakot, az alkalmazás megjelenítheti az üzenetet.
A tálca tartalmának módosítása
Shell32.dll 4.71-es és újabb verziójának hozzáadja a tálca tartalmának módosításához szükséges képességet. Egy alkalmazásból mostantól hozzáadhat, eltávolíthat és aktiválhat tálcagombokat. Az elem aktiválása nem aktiválja az ablakot; a tálcán lenyomott állapotban jelenik meg az elem.
A tálca-módosítási képességek egy COM-objektumban (CLSID_TaskbarList) vannak implementálva, amely elérhetővé teszi a ITaskbarList felületet (IID_ITaskbarList). Az objektum inicializálásához meg kell hívnia a ITaskbarList::HrInit metódust. Ezután az ITaskbarList felület metódusával módosíthatja a tálca tartalmát.
Ikonok hozzáadása, módosítása és törlése az értesítési területen
Az Shell_NotifyIcon függvénnyel ikonokat adhat hozzá, módosíthat vagy törölhet az értesítési területről. A Shell_NotifyIcondwMessage paramétere egy üzenet a tálcán, amely meghatározza a végrehajtandó műveletet. A pnid paraméter egy NOTIFYICONDATA struktúrára mutató mutató, amely az ikon azonosítására és az üzenet feldolgozásához szükséges további információk átadására szolgál.
Az értesítési terület ikonjaival az alábbi műveleteket hajthatja végre.
- Ha ikont szeretne hozzáadni a tálca értesítési területéhez, hívja meg a Shell_NotifyIcon függvényt a dwMessage paraméterrel, beállítva a NIM_ADD értékre. A NOTIFYICONDATA szerkezet használatos az ikon leírójának és azonosítójának, valamint az eszköztipp szövegének megadására. Ha a felhasználó bejelölte az Óra megjelenítése jelölőnégyzetet a tálca tulajdonságai között, a rendszer az ikont az óra bal oldalán helyezi el. Ellenkező esetben az ikon a tálca jobb oldalán vagy alján jelenik meg. A meglévő ikonok balra tolódnak, hogy helyet adjanak az új ikonnak.
- Ha módosítani szeretné egy ikon adatait, beleértve az ikon leíróját, az elemleírás szövegét és a visszahívási üzenet azonosítóját, hívja meg a Shell_NotifyIcondwMessage NIM_MODIFY beállítással.
- Ha törölni szeretne egy ikont az értesítési területről, használja a Shell_NotifyIcon függvényt a dwMessage paraméter NIM_DELETE értékére állításával.
Miután befejezte a felhasználói felület műveletét, a Shell_NotifyIcon hívásával vigye vissza a fókuszt az értesítési területre, úgy, hogy a dwMessage értéke NIM_SETFOCUS. Ezt például akkor teheti meg, ha a tálcán egy helyi menü megjelenik, de a felhasználó az ESCAPE billentyű lenyomásával megszakítja azt.
Értesítési terület visszahívási üzeneteinek fogadása
Az alkalmazások gyakran ikonokat helyeznek el a tálca értesítési területén állapotjelzőként. Ha a felhasználó egérműveleteket hajt végre, további információkat is megadhat, például áthelyezheti az egérmutatót az ikonra vagy az ikonra kattintva.
A rendszer értesítést küld az egér- és billentyűzetes eseményekről egy alkalmazás által meghatározott visszahívási üzenet küldésével, amely egy adott ikonhoz van társítva. Ily módon a rendszer értesítést tud küldeni az alkalmazásnak, ha például a felhasználó rákattint az ikonra, vagy egy kulccsal kijelöli azt.
Az ikon visszahívási üzenetét akkor határozza meg, amikor hozzáadja az ikont a tálcához. A visszahívási üzenet azonosítója a uCallbackMessage tagjában van megadva a NOTIFYICONDATA struktúrában, amelyet a NIM_ADD-dal átadnak. Esemény bekövetkezésekor a rendszer elküldi a visszahívási üzenetet a hWnd tag által megadott ablak eljárásának. Az üzenet wParam paramétere tartalmazza annak a tálcaikonnak az azonosítóját, amelyben az esemény történt. Az lParam paraméter tárolja az eseményhez társított egér- vagy billentyűzetüzenetet. Ha például az egérmutató egy tálcaikonra kerül, lParam a WM_MOUSEMOVEtartalmazza.
A különböző egéresemények eredményei az alábbiak szerint foglalhatók össze:
- Amikor a felhasználó az egérmutatót az ikon fölé helyezi, a rendszer megjeleníti a megadott tooltip szöveget az NOTIFYICONDATA-ban.
- Amikor a felhasználó az ikonra kattint, az alkalmazás kap egy WM_LBUTTONDOWN értesítést.
- Amikor a felhasználó a jobb gombbal az ikonra kattint, az alkalmazás kap egy WM_RBUTTONDOWN értesítést.
- Amikor a felhasználó duplán kattint az ikonra, az alkalmazás kap egy WM_LBUTTONDBLCLK értesítést.
Az ikonra való kattintás általában azt eredményezi, hogy az alkalmazás további információkat tartalmazó ablakot jelenít meg, a jobb gombbal kattintva megjelenik egy helyi menü, és a dupla kattintással végrehajtja az alapértelmezett helyi menüparancsot.
Az értesítési terület ikonjaihoz társított elemleírás szövegének módosítására példa: Buborékelemleírások állapotsáv ikonokhoz.
A Shell 5.0-s és újabb verziói különböző módon kezelik Shell_NotifyIcon egér- és billentyűzeteseményeket, mint a Windows NT 4.0, a Windows 95 és a Windows 98 korábbi Shell-verziói. A különbségek a következők:
- Ha egy felhasználó a billentyűzettel együtt kéri az értesítés ikonjának helyi menüjét, az 5.0-s rendszerhéj egy WM_CONTEXTMENU üzenetet küld a társított alkalmazásnak. A korábbi verziók WM_RBUTTONDOWN és WM_RBUTTONUP üzeneteket küldenek.
- Ha egy felhasználó kiválaszt egy értesítés ikont a billentyűzettel, és a szóköz vagy az ENTER billentyűvel aktiválja azt, az 5.0-s rendszerhéj egy NIN_KEYSELECT értesítést küld a társított alkalmazásnak. A korábbi verziók WM_RBUTTONDOWN és WM_RBUTTONUP üzeneteket küldenek.
- Ha egy felhasználó egy értesítés ikont választ az egérrel, és az ENTER kulccsal aktiválja, az 5.0-s rendszerhéj egy NIN_SELECT értesítést küld a társított alkalmazásnak. A korábbi verziók WM_RBUTTONDOWN és WM_RBUTTONUP üzeneteket küldenek.
- Ha egy felhasználó egy ballon súgót tartalmazó ikon fölé viszi az egérmutatót, a 6.0 Shell (Windows XP) a következő üzeneteket küldi.
-
- NIN_BALLOONSHOW – Amikor a lufi megjelenik, az értesítés elküldésre kerül (a lufik sorba állnak).
- NIN_BALLOONHIDE – A buborék eltűnésekor küldve– például az ikon törlésekor. Ez az üzenet nem lesz elküldve, ha a buborék időtúllépés vagy egérkattintás miatt el van hagyva.
- NIN_BALLOONTIMEOUT – A ballon időtúllépés miatt történő elvetésekor küldve.
- NIN_BALLOONUSERCLICK – A ballon egérkattintás miatti elvetésekor küldve.
-
A Rendszerhéj működésének beállításához hívja meg az Shell_NotifyIcon az dwMessageNIM_SETVERSIONértékkel. Állítsa be a uVersionNOTIFYICONDATA struktúrájának tagját, hogy jelezze, hogy az 5.0-s vagy az 5.0-s verzió előtti működést szeretné-e használni.
Tálcalétrehozás értesítése
A Microsoft Internet Explorer 4.0-s és újabb verzióinál a Shell értesíti az alkalmazásokat arról, hogy a tálcát létrehozták. A tálca létrehozásakor regisztrál egy üzenetet a "TaskbarCreated" sztringgel, majd ezt az üzenetet továbbítja minden felső szintű ablaknak. Amikor a tálcás alkalmazás megkapja ezt az üzenetet, feltételeznie kell, hogy a hozzáadott tálcaikonok el lettek távolítva, és újból hozzáadták őket. Ez a funkció általában csak azokra a szolgáltatásokra vonatkozik, amelyek már futnak a Shell indításakor. Az alábbi példa egy nagyon leegyszerűsített módszert mutat be az eset kezelésére.
Windows 10 rendszeren a tálcán is ez az üzenet jelenik meg, amikor az elsődleges megjelenítés DPI-je megváltozik.
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);
}
A tálca használata
Ez a szakasz példákat tartalmaz, amelyek bemutatják, hogyan adhat hozzá ikonokat a tálca értesítési területéhez, és hogyan dolgozhatja fel a tálcaikonok visszahívási üzeneteit.
Tálcaikonok hozzáadása és törlése az értesítési területen
Egy ikont adhat hozzá a tálca értesítési területéhez úgy, hogy kitölt egy NOTIFYICONDATA struktúrát, majd átadja ezt a Shell_NotifyIcon-nek úgy, hogy a dwMessage a NIM_ADD-re van állítva. A struktúratagok meg kell adniuk az ikont hozzáadni kívánt ablakhoz tartozó fogópontot, valamint az ikonazonosítót és az ikonfogópontot. Az ikonhoz tartozó elemleírás szövegét is megadhatja. Ha az ikonhoz egérüzeneteket kell kapnia, adja meg annak a visszahívási üzenetnek az azonosítóját, amelyet a rendszernek az üzenet ablakba való küldéséhez kell használnia.
Az alábbi példában szereplő függvény bemutatja, hogyan adhat hozzá ikont a tálcához.
// 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;
}
Ha törölni szeretne egy ikont a tálcán megjelenő értesítési területről, töltse ki a NOTIFYICONDATA struktúrát, és hívja meg a Shell_NotifyIcondwMessageNIM_DELETEbeállítással. Feladatlista ikon elemének törlésekor csak a cbSize, hWndés uID tagokat adja meg. Például:
// 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;
}
Egéresemények fogadása
Ha visszahívási üzenetet ad meg egy tálcaikonhoz, a rendszer minden alkalommal elküldi az üzenetet az alkalmazásnak, amikor egéresemény történik az ikon határoló téglalapjában. Az üzenet wParam paramétere megadja a tálca ikonjának azonosítóját, az üzenet lParam paramétere pedig azt az üzenetet adja meg, amelyet a rendszer az egéresemény eredményeként generált.
Az alábbi példában szereplő függvény egy olyan alkalmazásból származik, amely az akkumulátor és a nyomtató ikonjait is hozzáadja a tálcához. Az alkalmazás meghívja a függvényt, amikor visszahívási üzenetet kap. A függvény meghatározza, hogy a felhasználó az egyik ikonra kattintott-e, és ha kattintás történt, egy alkalmazás által definiált függvényt hív meg az állapotadatok megjelenítéséhez.
// 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;
}