WM_SYSCOMMAND pesan

Jendela menerima pesan ini ketika pengguna memilih perintah dari menu Jendela (sebelumnya dikenal sebagai sistem atau menu kontrol) atau ketika pengguna memilih tombol maksimalkan, minimalkan tombol, tombol pulihkan, atau tombol tutup.

#define WM_SYSCOMMAND                   0x0112

Contoh

 case WM_SYSCOMMAND:
        if (wParam == SC_CLOSE)
        {
            EndDialog (hDlg, TRUE);
            return(TRUE);
        }
        break;

Contoh dari Sampel Klasik Windows di GitHub.

Parameter

wParam

Jenis perintah sistem yang diminta. Parameter ini bisa menjadi salah satu nilai berikut.

Nilai Makna
SC_CLOSE
0xF060
Menutup jendela.
SC_CONTEXTHELP
0xF180
Mengubah kursor menjadi tanda tanya dengan penunjuk. Jika pengguna kemudian mengklik kontrol dalam kotak dialog, kontrol akan menerima pesan WM_HELP .
SC_DEFAULT
0xF160
Memilih item default; pengguna mengklik dua kali menu jendela.
SC_HOTKEY
0xF150
Mengaktifkan jendela yang terkait dengan hot key yang ditentukan aplikasi. Parameter lParam mengidentifikasi jendela untuk diaktifkan.
SC_HSCROLL
0xF080
Menggulir secara horizontal.
SCF_ISSECURE
0x00000001
Menunjukkan apakah pengaman layar aman.
SC_KEYMENU
0xF100
Mengambil menu jendela sebagai akibat dari penekanan tombol. Untuk informasi lebih lanjut, lihat bagian Keterangan.
SC_MAXIMIZE
0xF030
Memaksimalkan jendela.
SC_MINIMIZE
0xF020
Meminimalkan jendela.
SC_MONITORPOWER
0xF170
Mengatur status tampilan. Perintah ini mendukung perangkat yang memiliki fitur hemat daya, seperti komputer pribadi bertenaga baterai.
Parameter lParam dapat memiliki nilai berikut:
  • -1 (layar menyala)
  • 1 (layar akan ke daya rendah)
  • 2 (tampilan sedang dimatikan)
SC_MOUSEMENU
0xF090
Mengambil menu jendela sebagai hasil dari klik mouse.
SC_MOVE
0xF010
Memindahkan jendela.
SC_NEXTWINDOW
0xF040
Berpindah ke jendela berikutnya.
SC_PREVWINDOW
0xF050
Berpindah ke jendela sebelumnya.
SC_RESTORE
0xF120
Memulihkan jendela ke posisi dan ukuran normalnya.
SC_SCREENSAVE
0xF140
Menjalankan aplikasi pengaman layar yang ditentukan di bagian [boot] dari file System.ini.
SC_SIZE
0xF000
Mengukur jendela.
SC_TASKLIST
0xF130
Mengaktifkan menu Mulai .
SC_VSCROLL
0xF070
Menggulir secara vertikal.

lParam

Kata berurutan rendah menentukan posisi horizontal kursor, dalam koordinat layar, jika perintah menu jendela dipilih dengan mouse. Jika tidak, parameter ini tidak digunakan.

Kata berurutan tinggi menentukan posisi vertikal kursor, dalam koordinat layar, jika perintah menu jendela dipilih dengan mouse. Parameter ini adalah 1 jika perintah dipilih menggunakan akselerator sistem, atau nol jika menggunakan mnemonic.

Nilai kembali

Aplikasi harus mengembalikan nol jika memproses pesan ini.

Keterangan

Untuk mendapatkan koordinat posisi dalam koordinat layar, gunakan kode berikut:

xPos = GET_X_LPARAM(lParam);    // horizontal position 
yPos = GET_Y_LPARAM(lParam);    // vertical position

Fungsi DefWindowProc melakukan permintaan menu jendela untuk tindakan yang telah ditentukan sebelumnya yang ditentukan dalam tabel sebelumnya.

Dalam pesan WM_SYSCOMMAND , empat bit berurutan rendah dari parameter wParam digunakan secara internal oleh sistem. Untuk mendapatkan hasil yang benar saat menguji nilai wParam, aplikasi harus menggabungkan nilai 0xFFF0 dengan nilai wParam dengan menggunakan operator AND bitwise.

Item menu dalam menu jendela dapat dimodifikasi dengan menggunakan fungsi GetSystemMenu, AppendMenu, InsertMenu, ModifyMenu, InsertMenuItem, dan SetMenuItemInfo . Aplikasi yang mengubah menu jendela harus memproses WM_SYSCOMMAND pesan.

Aplikasi dapat melakukan perintah sistem apa pun kapan saja dengan meneruskan pesan WM_SYSCOMMAND ke DefWindowProc. Setiap pesan WM_SYSCOMMAND yang tidak ditangani oleh aplikasi harus diteruskan ke DefWindowProc. Nilai perintah apa pun yang ditambahkan oleh aplikasi harus diproses oleh aplikasi dan tidak dapat diteruskan ke DefWindowProc.

Jika perlindungan kata sandi diaktifkan oleh kebijakan, pengaman layar dimulai terlepas dari apa yang dilakukan aplikasi dengan pemberitahuan SC_SCREENSAVE bahkan jika gagal meneruskannya ke DefWindowProc.

Kunci akselerator yang ditentukan untuk memilih item dari menu jendela diterjemahkan ke dalam pesan WM_SYSCOMMAND ; semua penekanan tombol akselerator lainnya diterjemahkan ke dalam pesan WM_COMMAND .

Jika wParamSC_KEYMENU, lParam berisi kode karakter kunci yang digunakan dengan tombol ALT untuk menampilkan menu popup. Misalnya, menekan ALT+F untuk menampilkan popup File akan menyebabkan WM_SYSCOMMAND dengan wParam sama dengan SC_KEYMENU dan lParam sama dengan 'f'.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung
Windows 2000 Server [hanya aplikasi desktop]
Header
Winuser.h (termasuk Windows.h)

Lihat juga

Referensi

AppendMenu

DefWindowProc

GET_X_LPARAM

GET_Y_LPARAM

GetSystemMenu

InsertMenu

ModifikasiMenu

WM_COMMAND

Konseptual

Akselerator Keyboard