Ortak Denetimlerden Bildirim Alma
Yaygın denetimler, denetimde kullanıcı girişi gibi olaylar gerçekleştiğinde üst pencereye bildirim iletileri gönderen alt pencerelerdir.
Uygulama, kullanıcının hangi eylemi gerçekleştirmesini istediğini belirlemek için bu bildirim iletilerine dayanır. Çoğu yaygın denetim, bildirim iletilerini WM_NOTIFY iletileri olarak gönderir. Windows denetimleri çoğu bildirim iletisini WM_COMMAND ileti olarak gönderir. CWnd::OnNotify , WM_NOTIFY iletisinin işleyicisidir. uygulamasında CWnd::OnCommand
olduğu gibi uygulaması OnNotify
, ileti eşlemelerinde işleme için bildirim iletisini adresine OnCmdMsg
sevk eder. Bildirimleri işlemek için ileti eşleme girdisi ON_NOTIFY. Daha fazla bilgi için bkz . Teknik Not 61: ON_NOTIFY ve WM_NOTIFY İletileri.
Alternatif olarak, türetilmiş bir sınıf "ileti yansıması" kullanarak kendi bildirim iletilerini işleyebilir. Daha fazla bilgi için bkz. Teknik Not 62: Windows Denetimleri için ileti Düşünceler.
Bildirim İletisinde İmleç Konumunu Alma
Bazen, belirli bildirim iletileri ortak bir denetim tarafından alındığında imlecin geçerli konumunu belirlemek yararlıdır. Örneğin, ortak bir denetim NM_RCLICK bildirim iletisi aldığında geçerli imleç konumunu belirlemek yararlı olabilir.
bunu çağırarak CWnd::GetCurrentMessage
gerçekleştirmenin basit bir yolu vardır. Ancak, bu yöntem yalnızca iletinin gönderildiği sırada imleç konumunu alır. İleti gönderildikten sonra imleç taşınmış olabileceğinden, geçerli imleç konumunu almak için aramanız CWnd::GetCursorPos
gerekir.
Dekont
CWnd::GetCurrentMessage
yalnızca bir ileti işleyicisi içinde çağrılmalıdır.
Bildirim iletisi işleyicisinin gövdesine aşağıdaki kodu ekleyin (bu örnekte NM_RCLICK):
CPoint cursorPos;
cursorPos.x = GetCurrentMessage()->pt.x;
cursorPos.y = GetCurrentMessage()->pt.y;
Bu noktada, fare imleci konumu nesnede cursorPos
depolanır.