Aracılığıyla paylaş


WM_SYSCOMMAND iletisi

Kullanıcı Pencere menüsünden (eski adıyla sistem veya denetim menüsü) bir komut seçtiğinde veya kullanıcı ekranı kapla düğmesini, simge durumuna küçült düğmesini, geri yükleme düğmesini veya kapat düğmesini seçtiğinde bir pencere bu iletiyi alır.

#define WM_SYSCOMMAND                   0x0112

Example

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

GitHub'da Windows Klasik Örnekleri örneği.

Parametreler

wParam

İstenen sistem komutunun türü. wParam parametresinin dört düşük sıralı biti sistem tarafından dahili olarak kullanılır. Bit 4-15, aşağıdaki değerlerden biri olabilecek bir komut kodu içerir.

Değer Meaning
SC_CLOSE
0xF060
Pencereyi kapatır.
SC_CONTEXTHELP
0xF180
İmleci bir işaretçiyle soru işaretine değiştirir. Kullanıcı iletişim kutusunda bir denetime tıklarsa, denetim bir WM_HELP iletisi alır.
SC_DEFAULT
0xF160
Varsayılan öğeyi seçer; kullanıcı pencere menüsüne çift tıkladı.
SC_HOTKEY
0xF150
Uygulama tarafından belirtilen kısayol anahtarıyla ilişkili pencereyi etkinleştirir. lParam parametresi etkinleştirecek pencereyi tanımlar.
SC_HSCROLL
0xF080
Yatay olarak kayar.
SC_KEYMENU
0xF100
Tuş vuruşunun bir sonucu olarak pencere menüsünü alır. Daha fazla bilgi için Açıklamalar bölümüne bakın.
SC_MAXIMIZE
0xF030
Pencerenin ekranı kaplamasını sağlar.
SC_MINIMIZE
0xF020
Pencereyi simge durumuna küçültür.
SC_MONITORPOWER
0xF170
Ekranın durumunu ayarlar. Bu komut, pille çalışan kişisel bilgisayar gibi güç tasarrufu özelliklerine sahip cihazları destekler.
lParam parametresi aşağıdaki değerlere sahip olabilir:
  • -1 (ekran açılıyor)
  • 1 (ekran düşük güç olacak)
  • 2 (ekran kapatılıyor)
SC_MOUSEMENU
0xF090
Fare tıklaması sonucunda pencere menüsünü alır.
SC_MOVE
0xF010
Pencereyi taşır.
SC_NEXTWINDOW
0xF040
Sonraki pencereye geçer.
SC_PREVWINDOW
0xF050
Önceki pencereye gider.
SC_RESTORE
0xF120
Pencereyi normal konumuna ve boyutuna geri yükler.
SC_SCREENSAVE
0xF140
System.ini dosyasının [boot] bölümünde belirtilen ekran koruyucu uygulamasını yürütür.
SC_SIZE
0xF000
Pencereyi boyutlandırıyor.
SC_TASKLIST
0xF130
Başlat menüsünü etkinleştirir.
SC_VSCROLL
0xF070
Dikey olarak kayar.

Komut kodu SC_SCREENSAVE, aşağıdaki bayraklar dört düşük sıralı bitte kullanılabilir:

Flag Meaning
SCF_ISSECURE
0x0001
Ekran koruyucu güvenlidir.

lParam

Düşük sıralı sözcük, fareyle bir pencere menüsü komutu seçilirse ekran koordinatlarında imlecin yatay konumunu belirtir. Aksi takdirde, bu parametre kullanılmaz.

Yüksek sıralı sözcük, fareyle bir pencere menüsü komutu seçilirse ekran koordinatlarında imlecin dikey konumunu belirtir. Komut bir sistem hızlandırıcısı kullanılarak seçilirse bu parametre 1, anımsatıcı kullanılıyorsa sıfırdır.

Dönüş değeri

Bir uygulama bu iletiyi işlerse sıfır döndürmelidir.

Açıklamalar

Ekran koordinatlarında konum koordinatlarını almak için aşağıdaki kodu kullanın:

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

DefWindowProc işlevi, önceki tabloda belirtilen önceden tanımlanmış eylemler için pencere menü isteğini gerçekleştirir.

WM_SYSCOMMAND iletilerde, wParam parametresinin dört düşük sıralı biti sistem tarafından dahili olarak kullanılır. Komut kodunu wParam değerinden almak için uygulamanın yukarıdaki örnekte gösterildiği gibi bit tabanlı AND işlecini kullanarak 0xFFF0 değerini wParam değeriyle birleştirmesi gerekir.

Pencere menüsündeki menü öğeleri GetSystemMenu, AppendMenu, InsertMenu, ModifyMenu, InsertMenuItem ve SetMenuItemInfo işlevleri kullanılarak değiştirilebilir. Pencere menüsünü değiştiren uygulamaların WM_SYSCOMMAND iletileri işlemesi gerekir.

Bir uygulama, WM_SYSCOMMAND iletisini DefWindowProc'a geçirerek herhangi bir zamanda herhangi bir sistem komutunu gerçekleştirebilir. Uygulama tarafından işlenmeyen tüm WM_SYSCOMMAND iletileri DefWindowProc'a geçirilmelidir. Bir uygulama tarafından eklenen tüm komut değerleri uygulama tarafından işlenmelidir ve DefWindowProc'a geçirilemez.

Parola koruması ilke tarafından etkinleştirildiyse, uygulamanın SC_SCREENSAVE bildirimini DefWindowProc'a geçiremese bile ne yaptığına bakılmaksızın ekran koruyucu başlatılır.

Pencere menüsünden öğe seçmek için tanımlanan hızlandırıcı tuşları WM_SYSCOMMAND iletilere çevrilir; diğer tüm hızlandırıcı tuş vuruşları WM_COMMAND iletilere çevrilir.

wParamSC_KEYMENU ise, lParam açılır menüyü görüntülemek için ALT tuşuyla birlikte kullanılan anahtarın karakter kodunu içerir. Örneğin, Dosya açılan penceresini görüntülemek için ALT+F tuşlarına basıldığında wParamdeğeri SC_KEYMENU ve lParam değeri 'f' olan bir WM_SYSCOMMAND neden olur.

Gereksinimler

Gereksinim Değer
Desteklenen en düşük düzeydeki istemci
Windows 2000 Professional [yalnızca masaüstü uygulamaları]
Desteklenen en düşük sunucu
Windows 2000 Server [yalnızca masaüstü uygulamaları]
Header
Winuser.h (Windows.h dahil)

Ayrıca bakınız

Referans

AppendMenu

DefWindowProc

GET_X_LPARAM

GET_Y_LPARAM

GetSystemMenu

InsertMenu

ModifyMenu

WM_COMMAND

Kavramsal

Klavye Hızlandırıcıları