2009-11-13 29 views

答えて

4

使用SetItemState(0、LVIS_SELECTED、LVIS_SELECTED)のハイライトを消しために強調表示し、 SetItemState(0、〜LVIS_SELECTED、LVIS_SELECTED)します。

+0

私はこのようにそれを使用して、それが作品を! – sergiol

8

また、アイテム状態を更新した後にSetSelectionMarkを呼び出す必要があります。

SetItemState(prev_item, ~LVIS_SELECTED, LVIS_SELECTED); 
SetItemState(new_selected_item, LVIS_SELECTED, LVIS_SELECTED); 
SetSelectionMark(new_selected_item); 
2

セットだけプロパティ - > Appearance->常に表示選択にTRUE

+3

これはGUIではありませんが、私のために解決しました。プログラムでリストビューコントロールを作成する場合、設定するスタイルは 'LVS_SHOWSELALWAYS'です。 –

1

私はあなたが作るために、そのnItem引数として-1を渡すことができSetItemState機能の文書化されていない機能があると思います機能はすべてにあります。

だから、あなただけ一つだけを選択したい場合は、私がお勧めすることができます:

SetItemState(-1, 0, LVIS_SELECTED); 
    SetItemState(index, LVIS_SELECTED, LVIS_SELECTED); 

UPDATE:

http://www.verycomputer.com/417_11fcb075491b88c9_1.htm#p3を見た後)

SetItemState関数はLVM_SETITEMSTATEメッセージを送信し、nItem = -1機能はのwParam引数として文書化されています。

+1

ありがとうございます。[マクロ](https://msdn.microsoft.com/en-us/library/windows/desktop/bb775102(v = vs.85).aspx)にも詳しい情報があります。 –

0

あなたはOnInitialDialogに設定され、選択した項目を文句を言わない場合は、このコードを使用マスト:

m_pSPSMapList->EnsureVisible(nItem, FALSE); 
m_pSPSMapList->SetFocus(); 
m_pSPSMapList->SetItemState(nItem, LVIS_FOCUSED | LVIS_SELECTED, 
            LVIS_FOCUSED | LVIS_SELECTED); 

return FALSE; // OnInitialDialog necessarily must return false 
関連する問題