2013-02-06 2 views
0

J'ai ajouté une liste déroulante à ma liste personnalisée et j'essaie de définir le texte de la liste déroulante dans le sous-menu listview actuel.listview combobox

  case CBN_SELCHANGE: 
       { 
        char txt[200]; 
        ComboBox_GetText(hCombo, txt, 256); 
        int i = SendMessage(hListView, LVM_GETHOTITEM,0, 0); 
        ListView_SetItemText(hListView, i, 2, txt); 
       } 

Qu'est-ce que je fais mal?

+0

Voulez-vous dire "définir le texte du sous-élément listview dans le texte de la liste déroulante sélectionnée"? Parce que c'est ce que le code semble faire. En outre, vous passez 256 à ComboBox_GetText() mais la taille de la mémoire tampon est seulement 200 caractères. –

Répondre

1

L'élément "hot" de listview est l'élément sur lequel le curseur a survolé et uniquement lorsque le suivi à chaud et la sélection à chaud sont activés. Les documents SDK pour LVM_GETHOTITEM font un travail médiocre expliquant ce qu'est réellement un article chaud. Les docs CListCtrl::GetHotItem donnent un peu plus de détails.

Au moment où vous effectuez la sélection dans la zone de liste déroulante, le curseur ne survole aucun élément de la zone de liste et aucun texte ne sera défini.

Vous voulez probablement obtenir l'élément sélectionné à la place:

int i = ListView_GetNextItem(hListView, -1, LVNI_SELECTED); 

This post a un peu plus d'informations.