[C++ MFC] handler call dla CListBox unselect

0

Witam.

Pod MFC VC++ 6.0
CListBox nie obsługi kliknięcia prawym przyciskiem myszy.

Ponadto, przy wyłączonym stylu multiple-select nie działa odznaczanie (unselect) podczas wykonania CListBox::OnSelchangexxx() tj:

wg MSDN: Use this member function only with multiple-selection list boxes.


CListBox m_cFileLista;
nrSelectListPliki=-1;

// drugie kliknięcie na poprzednio zaznaczoną linię ma ją odznaczać 
void MyDlg::OnSelchangeMyListBox() 
{
	unsigned int i_pom=m_cFileLista.GetCurSel();

	if (nrSelectListPliki==-1)
	{
		nrSelectListPliki=i_pom; //first select
		return;
	}

	if (nrSelectListPliki==i_pom)
	{
		m_cFileLista.SetSel(i_pom,true); //unselect
		nrSelectListPliki=-1;
		return;
	}

	nrSelectListPliki=i_pom; //other select
	return;
}

Włączając styl multiple-select idzie zrobić unselect, ale jest to naginanie:

void MyDlg::OnSelchangeMyListBox() 
{
	unsigned int i_pom=m_cFileLista.GetCurSel(); 

	if (nrSelectListPliki==-1)
	{
		nrSelectListPliki=i_pom; //first select
		return;
	}

	if (nrSelectListPliki==i_pom)
	{
		//każda wersja robi to samo....
		//m_cFileLista.SelItemRange(false,0,m_cFileLista.GetCount());  //unselect
		//m_cFileLista.SetCurSel( -1 );  
		for (j_pom=0; j_pom<m_cFileLista.GetCount(); j_pom++) 
		              m_cFileLista.SetSel(j_pom,false);
		nrSelectListPliki=-1;
		return;
	}

	for (unsigned int j_pom=0; j_pom<m_cFileLista.GetCount(); j_pom++) //other select
	{
		if (i_pom!=j_pom)  m_cFileLista.SetSel(j_pom,false);
	}

	nrSelectListPliki=i_pom;
	return;
}

Działa, ale....

Znalazłem w sieci, że można do kontrolki CListBox dodać obsługę prawego kliku myszy:

in your OnRButtonDown handler call ( ( CListBox* )GetDlgItem( IDC_MYLISTBOX) )->SetCurSel( -1 );

tylko jak to dodać do aplikacji Dialog dla MFC [???]

0

probowales po prostu uzyc owego

( CListBox* )GetDlgItem( IDC_MYLISTBOX) )-> SetCurSel( -1 );

w metodzie OnSelchangeMyListBox
zamiast

        m_cFileLista.SetSel(i_pom,true); //unselect   //<----zamiast tego ??
        nrSelectListPliki=-1;

1 użytkowników online, w tym zalogowanych: 0, gości: 1