【解決方法】clistctrl で行を選択

[ad_1]

<pre>
void CDlgCorrection::RowSelected()
{
	m_bInizio = false;
	for (int i = 0; i < m_astrPathFustelle.GetSize(); i++)
	{
		m_lista.SetItemState(i, 0, LVIS_SELECTED);
	}

	m_lista.SetItemState(m_nRow, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
	m_nRowSelected = m_nRow;
	m_lista.SetFocus();
	m_lista.SetSelectionMark(m_nRow);
}

このコードを使用して CListCtrl の行を選択しましたが、CListCtrl をクリックすると行が選択されるため、2 行が選択されたことになります。リストをクリックする前に行の選択を解除するにはどうすればよいですか?

私が試したこと:

私は書いてみました:

m_lista.SetItemState(m_nRow, ~LVIS_SELECTED | ~LVIS_FOCUSED, ~LVIS_SELECTED | ~LVIS_FOCUSED);

私も試してみました

if(m_nRow!= -1)
	m_lista.SetItemState(m_nRow, ~LVIS_SELECTED, LVIS_SELECTED);

	

	POSITION			pos = NULL;
	INT_PTR				nPos;

	pos = m_lista.GetFirstSelectedItemPosition();
	if (pos)
	{
		nPos = m_lista.GetNextSelectedItem(pos);
	}
	else
	{
		nPos = -1;
	}

しかし、とにかく2行が選択されています

解決策 1

試す:

C++
m_lista.SetItemState(m_nRow, 0, LVIS_SELECTED | LVIS_FOCUSED);

これにより、2 つの状態ビットがゼロに設定されます。

[ad_2]

コメント

タイトルとURLをコピーしました