[WTL] CCheckListBox | jenyay.net

[WTL] CCheckListBox

Файлы

Скачать

Используемые библиотеки

WTL

Скриншоты

Описание

Суть этого компонента видно на картинке (это пример из реальной программы, которая использует этот контрол). Думаю, что описывать тут особо нечего - это довольно простой контрол. Все его описание приведено в заголовочном файле в виде подробных комментариев.


Users 16.03.2012 - 12:18

Исправление небольшой ошибки с флагом LBS_MULTICOLUMN

enum
{

  LEFTBORDERCHECK = 2,	// Отступ от флажка слева
  SIZEBORDERCHECK = 18,	// Размер	

};

Проблемный код:

	RECT FrameRect = pDIS->rcItem;
	FrameRect.left += LEFTBORDERCHECK;
	FrameRect.right = 18;

Должно быть:

        RECT FrameRect = pDIS->rcItem;
	FrameRect.left += LEFTBORDERCHECK;
	FrameRect.right = FrameRect.left + SIZEBORDERCHECK;

Users 16.03.2012 - 13:44

Еще одно изменение

void CCheckListBox::OnLButtonDown (UINT key, CPoint point)
{

   BOOL out = FALSE;
   unsigned int CurrItem = ItemFromPoint(point, out);
   unsigned int Size     = GetCount();

   if(CurrItem >= 0 && CurrItem < Size)
   {
	RECT ItemRect;
	GetItemRect(CurrItem, &ItemRect);
	int Offset = ItemRect.left + LEFTBORDERCHECK;
	if (
            (point.x >= Offset) && 
            (point.x <= (Offset + SIZEBORDERCHECK))
        )
	{
	     ATLASSERT (m_Flags.size() == Size);
	     m_Flags[CurrItem] = !m_Flags[CurrItem];

	     InvalidateRect (&ItemRect);
	     ::SendMessage(GetParent(), 
             m_CheckMessage, WPARAM(CurrItem),        
             LPARAM(m_Flags[CurrItem]));
	}
  }	
  DefWindowProc(WM_LBUTTONDOWN, key, MAKELPARAM(point.x, point.y));

}


Подписаться на комментарии
Автор:
Тема:
 Ваш комментарий
 
 
Введите код 654