BG MVC Model View Controller eğitim serisi yayında...

Ana page > Programlama > Windows API Programlama > WinAPI ipuçları > winapi_ipuc00005

Windows API ipuçları

Bir ListView kontrolünde tıklanan satır ve sütun indeks değerini alma (LVHITTESTINFO yöntemi ile)

Aşağıdaki kodları ListView kontrolünün içinde tanımlandığı pencerenin fonksiyonu içinde kullanarak, bir ListView kontrolünde tıklanan satır ve sütun indeks değerlerini alabiliriz.


case WM_NOTIFY:
{
     switch (((LPNMHDR)lParam)->code) {
	    case NM_CLICK:
	    {
		   if (((LPNMHDR)lParam)->hwndFrom == hwndListView) {
			   LPNMITEMACTIVATE lpnmia = (LPNMITEMACTIVATE)lParam;
			   LVHITTESTINFO hti = { 0 };
			   char cdizi[60];

			   hti.pt = lpnmia->ptAction;
			   // ListView kontrolu LVS_EX_FULLROWSELECT özelliği ile tanımlanmadığında,
			   // NM_CLICK bildirim mesajında lpnmia->iItem ilk sütun dışındaki tıklamalarda daima -1 değeri aldığından
			   // seçilen Item değerini belirlemek için ListView_SubItemHitTest() fonksiyonu kullanılır.
			   ListView_SubItemHitTest(lpnmia->hdr.hwndFrom,  &hti);

               sprintf(cdizi, "Satır indeks değeri: %d, Sütun indeks değeri: %d", hti.iItem, hti.iSubItem);
               MessageBox(NULL, cdizi, "Satır ve sütun değerleri", MB_OK);
		   }
		}
}