Bagikan melalui


Bilah Tugas

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

Catatan

Untuk informasi tentang perubahan yang dibuat pada taskbar per Windows 7, lihat Ekstensi Taskbar.

 

Topik ini berisi bagian berikut.

Tentang Bilah Tugas

Taskbar mencakup hal-hal berikut:

  • Menu mulai
  • Bilah Luncur Cepat (Windows Vista dan 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 Cari program dan file.

Mulai di versi Windows yang lebih lama berisi item seperti Temukan dan Jalankan, fungsionalitas yang disertakan dalam Program pencarian dan file di Windows Vista dan yang lebih baru.

Bilah Luncur Cepat, yang tersedia di versi Windows yang lebih lama dari Windows 7, berisi pintasan ke aplikasi. Windows menyediakan entri default, seperti Windows Internet Explorer, dan pengguna bisa menambahkan pintasan lebih lanjut yang mereka pilih. Ikon di area ini merespons satu klik. 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 berperingkat—yaitu, jendela yang tidak memiliki induk dan yang memiliki bit gaya yang diperluas yang sesuai (lihat Mengelola Tombol Taskbar, di 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 ini ditemukan sebagai:

  • Windows 7 dan yang lebih baru: Daftar drop-down Jam di halaman Aktifkan atau nonaktifkan ikon sistem dari aplikasi Panel Kontrol Ikon Area Pemberitahuan (juga dapat diakses melalui properti area pemberitahuan).
  • Windows Vista: Kotak centang Jam di halaman Area Pemberitahuan jendela properti Taskbar dan Menu Mulai .
  • Windows XP: Kotak centang Perlihatkan 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 bertingkat, jendela tumpukan, menampilkan jendela berdampingan, memperlihatkan desktop, memulai Task Manager, dan mengatur properti taskbar. Menu pintasan juga menyediakan opsi untuk menambahkan atau menghapus sekumpulan toolbar dari taskbar. Anda dapat menambahkan bilah alat baru ke menu ini dengan mendaftarkannya di bawah kategori CATID_DeskBand. Untuk informasi selengkapnya, lihat Menerapkan 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 memilih atau mengosongkan kotak centang Sembunyikan otomatis bilah tugas 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 saat 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 menutupi taskbar dengan secara eksplisit mengatur ukuran persegi panjang jendela yang 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 berukuran sehingga area klien mencakup seluruh layar. Juga khusus untuk sistem tersebut, jika taskbar diatur ke Always On Top, itu akan tetap tersembunyi hanya sementara aplikasi adalah 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 antarmuka IShellLink .
  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 pada taskbar setiap kali aplikasi membuat jendela yang tidak dimiliki. Untuk memastikan bahwa tombol jendela ditempatkan pada taskbar, buat jendela yang tidak berperingkat dengan gaya WS_EX_APPWINDOW diperluas. Untuk mencegah tombol jendela ditempatkan pada taskbar, buat jendela yang tidak berpegangan 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 tampilkan 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 mem-flash tombol jendela. 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 antarmuka ITaskbarList (IID_ITaskbarList). Anda harus memanggil metode ITaskbarList::HrInit untuk menginisialisasi objek. Anda kemudian dapat menggunakan metode antarmuka ITaskbarList 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 dwMessagedari Shell_NotifyIcon adalah pesan ke taskbar yang menentukan tindakan yang akan diambil. Parameter pnid adalah penunjuk ke struktur NOTIFYICONDATA yang digunakan untuk mengidentifikasi ikon dan meneruskan informasi tambahan 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. Struktur NOTIFYICONDATA digunakan untuk menentukan handel dan pengidentifikasi ikon, dan teks tipsalat 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 handel ikon, teks tipsalat, 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.

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

Menerima pesan panggilan balik area pemberitahuan

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 ditentukan aplikasi yang 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 panggilan balik ditentukan dalam anggota uCallbackMessage dari struktur NOTIFYICONDATA yang diteruskan dengan NIM_ADD. Ketika suatu peristiwa terjadi, sistem mengirim pesan panggilan balik ke prosedur jendela 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. Misalnya, ketika penunjuk mouse bergerak ke ikon taskbar, lParam berisi WM_MOUSEMOVE.

Hasil dari berbagai peristiwa mouse dapat dirangkum sebagai berikut:

  • Ketika pengguna memindahkan penunjuk mouse ke 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 dua kali menjalankan perintah menu pintasan default.

Untuk contoh cara mengubah teks tipsalat yang terkait dengan ikon area pemberitahuan, lihat TipsAlat Balon untuk Ikon Bilah Status.

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

  • Jika pengguna meminta menu pintasan ikon pemberitahuan dengan keyboard, Shell versi 5.0 mengirimkan pesan WM_CONTEXTMENU kepada aplikasi terkait. 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 melewati penunjuk mouse di atas ikon yang terkait dengan tipsalat balon, 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 dimatikan karena waktu habis atau klik mouse.
      • NIN_BALLOONTIMEOUT - Dikirim ketika balon diberhentikan karena waktu habis.
      • NIN_BALLOONUSERCLICK - Dikirim saat balon dimatikan karena klik mouse.

Anda dapat memilih 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 pra-versi 5.0.

Pemberitahuan Pembuatan Bilah Tugas

Dengan Microsoft Internet Explorer 4.0 dan yang lebih baru, Shell memberi tahu aplikasi bahwa taskbar telah dibuat. Ketika taskbar dibuat, ia mendaftarkan pesan dengan string TaskbarCreated dan kemudian menyiarkan pesan ini ke semua jendela tingkat atas. Ketika aplikasi taskbar Anda menerima pesan ini, aplikasi ini 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 struktur NOTIFYICONDATA lalu meneruskan struktur ke Shell_NotifyIcon dengan dwMessage diatur ke NIM_ADD. Anggota struktur harus menentukan handel ke jendela yang menambahkan ikon, serta pengidentifikasi ikon dan handel 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 cbSize, hWnd, dan uID struktur. Contohnya:

// 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 pesan menentukan pengidentifikasi ikon taskbar, dan parameter lParam pesan menentukan pesan yang dihasilkan sistem sebagai hasil dari peristiwa mouse.

Fungsi dalam contoh berikut adalah 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; 
 }