Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Jendela menerima pesan ini ketika pengguna memilih perintah dari menu Jendela (sebelumnya dikenal sebagai sistem atau menu kontrol) atau ketika pengguna memilih tombol maksimalkan, meminimalkan tombol, tombol pulihkan, atau tombol tutup.
#define WM_SYSCOMMAND 0x0112
Example
case WM_SYSCOMMAND:
if ((wParam & 0xFFF0) == SC_CLOSE)
{
EndDialog (hDlg, TRUE);
return(TRUE);
}
break;
Contoh dari Sampel Klasik Windows
Parameter-parameternya
-
wParam
-
Jenis perintah sistem yang diminta. Empat bit berurutan rendah dari parameter wParam digunakan secara internal oleh sistem. Bit 4-15 berisi kode perintah yang bisa menjadi salah satu nilai berikut.
Nilai Meaning - 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 mengeklik dua kali menu jendela. - SC_HOTKEY
- 0xF150
Mengaktifkan jendela yang terkait dengan kunci panas yang ditentukan aplikasi. Parameter lParam mengidentifikasi jendela untuk diaktifkan. - SC_HSCROLL
- 0xF080
Menggulir secara horizontal. - SC_KEYMENU
- 0xF100
Mengambil menu jendela sebagai akibat dari penekanan tombol. Untuk informasi selengkapnya, 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 (tampilan menyala)
- 1 (tampilan 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. Jika kode perintah SC_SCREENSAVE, maka bendera berikut tersedia di empat bit berurutan rendah:
Flag Meaning - SCF_ISSECURE
- 0x0001
Pengaman layar aman. -
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.
Mengembalikan nilai
Aplikasi harus mengembalikan nol jika memproses pesan ini.
Komentar
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 kode perintah dari nilai wParam , aplikasi harus menggabungkan nilai 0xFFF0 dengan nilai wParam dengan menggunakan operator BITWISE AND, seperti yang ditunjukkan pada contoh di atas.
Item menu dalam menu jendela dapat dimodifikasi dengan menggunakan fungsi GetSystemMenu, AppendMenu, InsertMenu, ModifyMenu, InsertMenuItem, dan SetMenuItemInfo . Aplikasi yang mengubah menu jendela harus memproses pesan WM_SYSCOMMAND .
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. Setiap nilai perintah 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 didefinisikan untuk memilih item dari menu jendela diterjemahkan ke dalam pesan WM_SYSCOMMAND ; semua penekanan kunci akselerator lainnya diterjemahkan ke dalam pesan WM_COMMAND .
Jika wParamSC_KEYMENU, lParam berisi kode karakter kunci yang digunakan dengan kunci 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 |
|
Lihat juga
-
Referensi
-
Konseptual