Kullanıcının TreeView denetimindeki bir onay kutusuna ne zaman tıkladığında nasıl bilgi edinersiniz?
Bu makalede, kullanıcının TreeView denetimindeki bir onay kutusuna ne zaman tıkladığı açıklanır.
Orijinal ürün sürümü: Visual C++
Özgün KB numarası: 261289
Özet
TVS_CHECKBOXES stiline sahip bir TreeView denetiminde, öğenin denetlenen durumunun değiştirildiğine dair bir bildirim yoktur. Ayrıca öğenin durumunun değiştiğini belirten bir bildirim de yoktur. Ancak, kullanıcının öğenin durum simgesine tıkladığını belirleyebilir ve bunun üzerinde işlem yapabilirsiniz.
TreeView onay kutusunun durumunu nasıl değiştirir?
Kullanıcı bir TreeView öğesinin onay kutusuna tıkladığında, üst pencereye bir NM_CLICK
bildirim gönderilir. Bu gerçekleştiğinde TVM_HITTEST
, ileti döndürür TVHT_ONITEMSTATEICON
. TreeView denetimi, onay kutusunun durumunu değiştirmek için aynı koşulu kullanır. Ne yazık ki, TreeView denetimi bildirim gönderildikten sonra NM_CLICK
durumu değiştirir.
Kullanıcıların bir onay kutusuna tıkladığında bilmeniz gereken örnek kod
Kullanıcı tanımlı bir iletiyi bildirimi işleyen NM_CLICK
pencereye gönderebilir ve bu kullanıcı tanımlı iletiyi, denetlenen durumun değiştiğini belirten bir bildirim olarak değerlendirebilirsiniz. Aşağıdaki örnek kod, bunun nasıl gerçekleştirilebileceğini gösterir.
#define UM_CHECKSTATECHANGE (WM_USER + 100)
case WM_NOTIFY:
{
LPNMHDR lpnmh = (LPNMHDR) lParam;
TVHITTESTINFO ht = {0};
if(lpnmh->code == NM_CLICK) && (lpnmh->idFrom == IDC_MYTREE))
{
DWORD dwpos = GetMessagePos();
// include <windowsx.h> and <windows.h> header files
ht.pt.x = GET_X_LPARAM(dwpos);
ht.pt.y = GET_Y_LPARAM(dwpos);
MapWindowPoints(HWND_DESKTOP, lpnmh->hwndFrom, &ht.pt, 1);
TreeView_HitTest(lpnmh->hwndFrom, &ht);
if(TVHT_ONITEMSTATEICON & ht.flags)
{
PostMessage(hWnd, UM_CHECKSTATECHANGE, 0, (LPARAM)ht.hItem);
}
}
}
break;
case UM_CHECKSTATECHANGE:
{
HTREEITEM hItemChanged = (HTREEITEM)lParam;
/*
Retrieve the new checked state of the item and handle the notification.
*/
}
break
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin