2009-11-13 9 views
10

ClistCtrl किसी भी शीर्षलेख के साथ रिपोर्ट दृश्य में एकल चयन & एकल कॉलम पर सेट है।चयनित के रूप में CListCtrl में कोई आइटम कैसे सेट करें?

मैंने SetItemState(0,LVIS_SELECTED,LVIF_STATE) और
SetSelectionMark(int index) की कोशिश की है लेकिन ये काम नहीं करते हैं।

उत्तर

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

बस सेट गुण> उपस्थिति> हमेशा दिखाएँ चुनावको सही

+3

यह मेरे लिए हल किया गया, हालांकि जीयूआई के माध्यम से नहीं। यदि आप अपनी सूची दृश्य नियंत्रण प्रोग्रामेटिक रूप से बना रहे हैं, तो सेट करने वाली शैली 'LVS_SHOWSELALWAYS' है। –

1

मुझे लगता है कि SetItemState समारोह के एक गैर-दस्तावेजी सुविधा जहां बनाने के लिए अपनी nItem तर्क के रूप में -1 पारित कर सकते हैं नहीं है समारोह कार्य सभी आइटम पर कार्य करता है।

इसलिए, यदि आप केवल चयन करना चाहते हैं सिर्फ एक ही, मेरा सुझाव कर सकते हैं:

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

अद्यतन:

( http://www.verycomputer.com/417_11fcb075491b88c9_1.htm#p3 देखने के बाद)

SetItemState फ़ंक्शन LVM_SETITEMSTATE संदेश भेजता है, और nItem = -1 सुविधा message's reference documentation पर 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 
संबंधित मुद्दे