2013-10-30 80 views
0

我在我的MFC對話框的報告視圖中爲我的列表控件做了一個搜索功能。它看起來像這樣SetItemState不會自動標記

m_List.SetItemState((m_List.FindItem(&Finde)),LVIS_SELECTED,LVIS_SELECTED); 

它將搜索是在變量Finde並將其標記的內容。現在它應該標記該行。但我首先必須點擊程序中的某個地方。它不會在函數被調用後直接標記行。

任何人都可以幫助我嗎?

這裏是全功能

LVFINDINFO Finde; 
Finde.flags = LVFI_PARTIAL|LVFI_STRING; 
Finde.psz = _T("Siffert"); 
if ((m_List.FindItem(&Finde)) != -1) 
{ 
    m_List.SetItemState((m_List.FindItem(&Finde)),LVIS_SELECTED,LVIS_SELECTED); 
    //m_List.SetSelectionMark((m_List.FindItem(&Finde))); 
} 
else 
{ 
    MessageBox(_T("No Results")); 
} 

回答

0

您需要使用的樣式LVS_SHOWSELALWAYS Otheriwse選擇只顯示當控件具有焦點並處於活動狀態。

編輯:另外請記住,還有一個LVIS_FOCUSED風格,也強制滾動此項目。

+0

有沒有辦法激活它? – user2675121

+0

要激活什麼?樣式可以在對話框編輯器中設置。或者您在CreateWindow(Ex)代碼中使用該樣式。 – xMRi