Bagikan melalui


Bilah tugas

Antarmuka Windows mencakup toolbar desktop aplikasi khusus yang disebut taskbar . Anda dapat menggunakan taskbar untuk tugas seperti beralih antara jendela terbuka dan memulai aplikasi baru.

Nota

Untuk informasi tentang perubahan yang dilakukan pada taskbar pada Windows 7, lihat Taskbar Extensions.

 

Topik ini berisi bagian berikut.

Tentang Taskbar

Taskbar mencakup yang berikut ini:

  • menu Mulai
  • Bilah Luncur Cepat (hanya untuk Windows Vista dan versi yang lebih lama saja)
  • Tombol bilah tugas
  • Bilah alat (opsional)
  • Area pemberitahuan

Menu Mulai berisi perintah yang dapat mengakses program, dokumen, dan pengaturan. Perintah ini termasuk Semua Program, Dokumen, Panel Kontrol, Permainan, Bantuan dan Dukungan, Matikan, dan Mencari program dan file.

Menu Start di versi Windows yang lebih lama berisi item seperti Temukan dan Jalankan, yang fungsinya telah dimasukkan dalam program dan file Pencarian di Windows Vista dan yang lebih baru.

Bilah Luncur Cepat, tersedia di versi Windows yang lebih lama dari Windows 7, berisi pintasan ke aplikasi. Windows menyediakan entri default, seperti Windows Internet Explorer, dan pengguna dapat menambahkan pintasan lebih lanjut yang mereka pilih. Ikon-ikon di area ini merespons saat diklik sekali. Di Windows 7 dan yang lebih baru, fungsionalitas ini disertakan dalam tombol taskbar.

Shell menempatkan tombol pada taskbar setiap kali aplikasi membuat jendela yang tidak memiliki pemilik—yaitu, jendela yang tidak memiliki indukan dan yang memiliki bit gaya diperluas yang sesuai (lihat Mengelola Tombol Taskbardi bawah). Untuk beralih ke jendela, pengguna mengklik tombol jendelanya. Fungsionalitas ini telah sangat diperluas pada Windows 7. Untuk informasi selengkapnya, lihat Ekstensi Taskbar.

Aplikasi dapat menempatkan ikon di area pemberitahuan untuk menunjukkan status operasi atau untuk memberi tahu pengguna tentang suatu peristiwa. Misalnya, aplikasi mungkin meletakkan ikon printer di area pemberitahuan untuk menunjukkan bahwa pekerjaan cetak sedang berlangsung. Namun, di Windows 7 dan yang lebih baru, beberapa informasi yang sebelumnya disediakan oleh area pemberitahuan harus disediakan melalui tombol taskbar aplikasi. Area pemberitahuan terletak di tepi kanan taskbar (jika taskbar horizontal) atau di bagian bawah (jika taskbar vertikal). Untuk informasi selengkapnya, lihat Pemberitahuan dan Area Pemberitahuan.

Area pemberitahuan juga menampilkan waktu saat ini jika opsi tersebut dipilih. Opsi ditemukan sebagai:

  • Windows 7 dan yang lebih baru: Daftar drop-down Jam di halaman Hidupkan atau matikan ikon sistem di Ikon Area Pemberitahuan aplikasi Panel Kontrol (juga dapat diakses melalui properti area pemberitahuan).
  • Windows Vista : Kotak centang Jam di halaman Area Pemberitahuan jendela properti Taskbar dan Start Menu.
  • Windows XP : Kotak centang Tampilkan jam di jendela properti Taskbar dan Menu Mulai.

Pengguna dapat mengklik kanan bilah tugas untuk menampilkan menu pintasan. Menu pintasan mencakup perintah untuk mengatur jendela, menumpuk jendela, menampilkan jendela berdampingan, memperlihatkan desktop, memulai Task Manager, dan mengatur properti taskbar. Menu pintasan juga menyediakan opsi untuk menambahkan atau menghapus sekumpulan bilah alat dari bilah tugas. Anda dapat menambahkan bilah alat baru ke menu ini dengan mendaftarkannya di bawah kategori CATID_DeskBand. Untuk informasi selengkapnya, lihat Mengimplementasikan Objek Band. Perhatikan bahwa pada Windows 7, taskbar dan area pemberitahuan memiliki menu pintasan terpisah. Menu pintasan ini berbagi beberapa opsi, seperti pengaturan jendela, dan menambahkan yang lain.

Opsi Tampilan Bilah Tugas

Taskbar mendukung dua opsi tampilan: Sembunyikan Otomatis dan, di Windows Vista dan sebelumnya saja, Always On Top (taskbar selalu dalam mode ini di Windows 7 dan yang lebih baru). Untuk mengatur opsi ini, pengguna harus membuka menu pintasan bilah tugas, klik Properti, dan pilih atau kosongkan kotak centang Sembunyikan bilah tugas secara otomatis atau kotak centang Pertahankan bilah tugas di atas jendela lain. Untuk mengambil status opsi tampilan ini, gunakan pesan ABM_GETSTATE. Jika Anda ingin diberi tahu ketika status opsi tampilan ini berubah, proses pesan pemberitahuan ABN_STATECHANGE dalam prosedur jendela Anda. Untuk mengubah status opsi tampilan ini, gunakan pesan ABM_SETSTATE.

Area kerja adalah bagian layar yang tidak dikaburkan oleh taskbar. Untuk mengambil ukuran area kerja, panggil fungsi SystemParametersInfo dengan kumpulan nilai SPI_GETWORKAREA. Untuk mengambil koordinat persegi panjang yang menjelaskan lokasi taskbar, gunakan pesan ABM_GETTASKBARPOS.

Dimungkinkan untuk menutup taskbar dengan secara eksplisit mengatur ukuran persegi panjang jendela sama dengan ukuran layar dengan SetWindowPos. Untuk sistem Windows 2000 atau yang lebih baru, jendela harus tidak memiliki WS_CAPTION atau WS_THICKFRAME, atau jendela harus disesuaikan ukurannya sehingga area klien menutupi seluruh layar. Juga khusus untuk sistem tersebut, jika taskbar diatur agar selalu di atas, itu akan tetap tersembunyi hanya ketika aplikasi tersebut menjadi aplikasi latar depan.

Menambahkan Pintasan ke Menu Mulai

Untuk menambahkan item ke submenu Program di Microsoft Windows NT 4.0, Windows 2000 dan yang lebih baru, atau Windows 95 atau yang lebih baru, ikuti langkah-langkah ini.

  1. Buat tautan shell dengan menggunakan antarmukaIShellLink.
  2. Dapatkan PIDL folder Program dengan menggunakan SHGetSpecialFolderLocation, melewati CSIDL_PROGRAMS.
  3. Tambahkan tautan Shell ke folder Program. Anda juga dapat membuat folder di folder Program dan menambahkan tautan ke folder tersebut.

Mengelola Tombol Bilah Tugas

Shell membuat tombol di taskbar setiap kali aplikasi membuat jendela yang tidak dimiliki. Untuk memastikan bahwa tombol jendela ditempatkan pada taskbar, buat jendela yang tidak dimiliki dengan gaya diperluas WS_EX_APPWINDOW. Untuk mencegah tombol jendela ditempatkan pada taskbar, buat jendela yang tidak disetujui dengan gaya WS_EX_TOOLWINDOW diperluas. Sebagai alternatif, Anda dapat membuat jendela tersembunyi dan menjadikan jendela tersembunyi ini sebagai pemilik jendela yang terlihat.

Shell akan menghapus tombol jendela dari taskbar hanya jika gaya jendela mendukung tombol taskbar yang terlihat. Jika Anda ingin mengubah gaya jendela secara dinamis menjadi gaya yang tidak mendukung tombol taskbar yang terlihat, Anda harus menyembunyikan jendela terlebih dahulu (dengan memanggil ShowWindow dengan SW_HIDE), ubah gaya jendela, lalu perlihatkan jendela.

Tombol jendela biasanya berisi ikon dan judul aplikasi. Namun, jika aplikasi tidak berisi menu sistem, tombol jendela dibuat tanpa ikon .

Jika Anda ingin aplikasi Anda mendapatkan perhatian pengguna saat jendela tidak aktif, gunakan fungsi FlashWindow untuk memberi tahu pengguna bahwa pesan sedang menunggu. Fungsi ini membuat tombol jendela berkedip. Setelah pengguna mengklik tombol jendela untuk mengaktifkan jendela, aplikasi Anda dapat menampilkan pesan.

Mengubah Isi Bilah Tugas

Versi 4.71 dan yang lebih baru Shell32.dll menambahkan kemampuan untuk mengubah konten taskbar. Dari aplikasi, Anda sekarang dapat menambahkan, menghapus, dan mengaktifkan tombol taskbar. Mengaktifkan item tidak mengaktifkan jendela; ini menunjukkan item seperti yang ditekan pada taskbar.

Kemampuan modifikasi taskbar diimplementasikan dalam objek Model Objek Komponen (COM) (CLSID_TaskbarList ) yang mengekspos antarmukaITaskbarList(IID_ITaskbarList). Anda harus memanggil metode ITaskbarList::HrInit untuk menginisialisasi objek. Anda kemudian dapat menggunakan metode antarmukaITaskbarList untuk memodifikasi konten taskbar.

Menambahkan, Memodifikasi, dan Menghapus Ikon di Area Pemberitahuan

Gunakan fungsi Shell_NotifyIcon untuk menambahkan, memodifikasi, atau menghapus ikon dari area pemberitahuan. Parameter dwMessage dari Shell_NotifyIcon adalah pesan kepada taskbar yang menetapkan tindakan yang harus dilakukan. Parameter pnid adalah penunjuk ke strukturNOTIFYICONDATA yang digunakan untuk mengidentifikasi ikon dan meneruskan informasi tambahan apa pun yang diperlukan sistem untuk memproses pesan.

Anda dapat melakukan tindakan berikut dengan ikon area pemberitahuan.

  • Untuk menambahkan ikon ke area pemberitahuan taskbar, panggil Shell_NotifyIcon dengan parameter dwMessage diatur ke NIM_ADD. StrukturNOTIFYICONDATA digunakan untuk menentukan handle dan pengidentifikasi ikon, serta teks tooltip apa pun. Jika pengguna telah memilih kotak centang Tampilkan Jam di properti taskbar, sistem menempatkan ikon ke kiri langsung jam. Jika tidak, ikon muncul di sisi kanan atau di bagian bawah taskbar. Ikon yang ada digeser ke kiri untuk memberi ruang bagi ikon baru.
  • Untuk mengubah informasi ikon, termasuk handle ikon, teks tooltip, dan pengidentifikasi pesan panggilan balik, panggil Shell_NotifyIcon dengan dwMessage diatur ke NIM_MODIFY.
  • Untuk menghapus ikon dari area pemberitahuan, panggil Shell_NotifyIcon dengan parameter dwMessage diatur ke NIM_DELETE.

Setelah Anda menyelesaikan operasi antarmuka pengguna, kembalikan fokus ke area pemberitahuan dengan memanggil Shell_NotifyIcon dengan dwMessage diatur ke NIM_SETFOCUS. Misalnya, Anda dapat melakukan ini ketika ikon taskbar menampilkan menu pintasan, tetapi pengguna membatalkannya dengan menekan tombol ESCAPE.

Menerima Pesan Callback di Area Notifikasi

Aplikasi biasanya menempatkan ikon di area pemberitahuan taskbar untuk berfungsi sebagai indikator status. Anda dapat memberikan informasi tambahan saat pengguna melakukan tindakan mouse, seperti memindahkan penunjuk mouse ke ikon atau mengklik ikon.

Sistem memberi tahu Anda tentang peristiwa mouse dan keyboard dengan mengirim pesan panggilan balik yang didefinisikan oleh aplikasi dan terkait dengan ikon tertentu. Dengan cara ini, sistem dapat memberi tahu aplikasi ketika pengguna, misalnya, mengklik ikon atau memilihnya dengan menekan tombol.

Anda menentukan pesan panggilan balik ikon saat menambahkan ikon ke taskbar. Pengidentifikasi pesan callback ditentukan dalam elemen uCallbackMessage dari struktur NOTIFYICONDATA yang diteruskan dengan NIM_ADD. Ketika sebuah peristiwa terjadi, sistem mengirim pesan panggilan balik ke prosedur jendela yang ditentukan oleh anggota hWnd. Parameter wParam pesan berisi pengidentifikasi ikon taskbar tempat peristiwa terjadi. Parameter lParam menyimpan pesan mouse atau keyboard yang terkait dengan peristiwa tersebut. Misalnya, saat penunjuk mouse bergerak ke ikon taskbar, lParam berisi WM_MOUSEMOVE.

Hasil dari berbagai peristiwa mouse dapat diringkas sebagai berikut:

  • Ketika pengguna memindahkan penunjuk mouse di atas ikon, sistem menampilkan teks tipsalat yang ditentukan dalam NOTIFYICONDATA.
  • Saat pengguna mengklik ikon, aplikasi Anda menerima pemberitahuan WM_LBUTTONDOWN.
  • Saat pengguna mengklik kanan ikon, aplikasi Anda menerima pemberitahuan WM_RBUTTONDOWN.
  • Saat pengguna mengklik dua kali ikon, aplikasi Anda menerima pemberitahuan WM_LBUTTONDBLCLK.

Biasanya, mengklik ikon menyebabkan aplikasi menampilkan jendela dengan informasi tambahan, mengklik kanan menampilkan menu pintasan, dan mengklik ganda menjalankan perintah menu pintasan default.

Untuk contoh cara mengubah teks tooltips yang berhubungan dengan ikon area pemberitahuan, lihat Balon Tooltips untuk Ikon Bilah Status.

Versi 5.0 dan yang lebih baru dari Shell menangani Shell_NotifyIcon peristiwa mouse dan keyboard dengan cara yang berbeda dari versi Shell sebelumnya yang ditemukan di Windows NT 4.0, Windows 95, dan Windows 98. Perbedaannya adalah sebagai berikut:

  • Jika pengguna meminta menu pintasan ikon pemberitahuan dengan keyboard, Shell versi 5.0 mengirim aplikasi terkait pesan WM_CONTEXTMENU. Versi sebelumnya mengirim pesan WM_RBUTTONDOWN dan WM_RBUTTONUP.
  • Jika pengguna memilih ikon beri tahu dengan keyboard dan mengaktifkannya dengan bilah spasi atau tombol ENTER, Shell versi 5.0 mengirimkan aplikasi terkait pemberitahuan NIN_KEYSELECT. Versi sebelumnya mengirim pesan WM_RBUTTONDOWN dan WM_RBUTTONUP.
  • Jika pengguna memilih ikon beri tahu dengan mouse dan mengaktifkannya dengan kunci ENTER, Shell versi 5.0 mengirimkan aplikasi terkait pemberitahuan NIN_SELECT. Versi sebelumnya mengirim pesan WM_RBUTTONDOWN dan WM_RBUTTONUP.
  • Jika pengguna menggerakkan penunjuk mouse pada ikon yang tooltip balon dikaitkan, Shell versi 6.0 (Windows XP) mengirimkan pesan berikut.
      • NIN_BALLOONSHOW - Dikirim saat balon ditampilkan (balon diantrekan).
      • NIN_BALLOONHIDE - Dikirim saat balon menghilang—misalnya, saat ikon dihapus. Pesan ini tidak dikirim jika balon dihentikan karena waktu habis atau klik mouse.
      • NIN_BALLOONTIMEOUT - Dikirim ketika balon diberhentikan karena waktu habis.
      • NIN_BALLOONUSERCLICK - Dikirim saat balon dihentikan karena klik mouse.

Anda dapat memilih dengan cara mana Shell harus berperilaku dengan memanggil Shell_NotifyIcon dengan dwMessage diatur ke NIM_SETVERSION. Atur anggota uVersion dari struktur NOTIFYICONDATA untuk menunjukkan apakah Anda menginginkan perilaku versi 5.0 atau versi sebelum 5.0.

Pemberitahuan Penambahan Bilah Tugas

Dengan Microsoft Internet Explorer 4.0 dan yang lebih baru, Shell memberi tahu aplikasi bahwa taskbar telah dibuat. Ketika taskbar dibuat, taskbar mendaftarkan pesan dengan string TaskbarCreated dan kemudian menyiarkan pesan ini ke semua jendela tingkat atas. Ketika aplikasi taskbar Anda menerima pesan ini, ia harus mengasumsikan bahwa ikon taskbar apa pun yang ditambahkannya telah dihapus dan menambahkannya lagi. Fitur ini umumnya hanya berlaku untuk layanan yang sudah berjalan saat Shell diluncurkan. Contoh berikut menunjukkan metode yang sangat disederhanakan untuk menangani kasus ini.

Pada Windows 10, taskbar juga menyiarkan pesan ini ketika DPI tampilan utama berubah.

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);
}

Menggunakan Taskbar

Bagian ini mencakup contoh yang menunjukkan cara menambahkan ikon ke area pemberitahuan taskbar dan cara memproses pesan panggilan balik untuk ikon taskbar.

Menambahkan dan Menghapus Ikon Bilah Tugas di Area Pemberitahuan

Anda menambahkan ikon ke area pemberitahuan taskbar dengan mengisi strukturNOTIFYICONDATA lalu meneruskan struktur ke Shell_NotifyIcon dengan dwMessage diatur ke NIM_ADD. Anggota struktur harus menentukan handle ke jendela yang menambahkan ikon, serta pengidentifikasi ikon dan handle ikon. Anda juga dapat menentukan teks tipsalat untuk ikon tersebut. Jika Anda perlu menerima pesan mouse untuk ikon tersebut, tentukan pengidentifikasi pesan panggilan balik yang harus digunakan sistem untuk mengirim pesan ke prosedur jendela.

Fungsi dalam contoh berikut menunjukkan cara menambahkan ikon ke taskbar.

// 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; 
}

Untuk menghapus ikon dari area pemberitahuan taskbar, isi struktur NOTIFYICONDATA dan panggil Shell_NotifyIcon dengan dwMessage diatur ke NIM_DELETE. Saat menghapus ikon taskbar, tentukan hanya anggota-anggota struktur cbSize, hWnd, dan uID. Misalnya:

// 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; 
}

Menerima Peristiwa Mouse

Jika Anda menentukan pesan panggilan balik untuk ikon taskbar, sistem mengirim pesan ke aplikasi Anda setiap kali peristiwa mouse terjadi di persegi panjang pembatas ikon. Parameter wParam dalam pesan menentukan pengidentifikasi ikon taskbar, dan parameter lParam dalam pesan menentukan pesan yang dihasilkan sistem sebagai akibat dari peristiwa mouse.

Fungsi dalam contoh berikut berasal dari aplikasi yang menambahkan ikon baterai dan printer ke taskbar. Aplikasi memanggil fungsi ketika menerima pesan panggilan balik. Fungsi menentukan apakah pengguna telah mengklik salah satu ikon dan, jika klik telah terjadi, memanggil fungsi yang ditentukan aplikasi untuk menampilkan informasi status.

// 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; 
 }