IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[ATL] Compter les valeurs d'une listBox


Sujet :

MFC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 84
    Points : 46
    Points
    46
    Par défaut [ATL] Compter les valeurs d'une listBox
    Bonjour, j'essaye de faire un controle ATL basé sur une listbox, pour une page Web, mais j'ai des soucis pour compter les valeurs.

    Voici mon constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DnDZone()
    		: m_ctlListBox(_T("ListBox"), this, 1)
    	{
    		m_bWindowOnly = TRUE;
    	}
    Voici comment j'ajoute une ligne à ma ListBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    STDMETHODIMP DnDZone::addString(BSTR bstrItem)
    {
    	AFX_MANAGE_STATE(AfxGetStaticModuleState());
     
    	if (!::IsWindow(m_hWnd)) {
    		return Error (OLESTR ("Invalid or NULL window handler for the ListBox control"),
    			IID_IDnDZone, E_FAIL);
    	}
     
    	long count = 0;
    	HRESULT hRes = S_OK;
     
    	hRes = get_length (&count);
    	if (FAILED (hRes)) {
    		return hRes;
    	}
     
    	// If the count number is one of the indcies, then add a blank line and then add the text
    	// string.
     
    	USES_CONVERSION;
     
    	if (::SendMessage (m_ctlListBox.m_hWnd, LB_ADDSTRING, 0, reinterpret_cast<LPARAM>(W2CT (bstrItem)))
    		== LB_ERR) {
    		return Error (OLESTR ("Failed to add text string in ListBox control"),
    				IID_IDnDZone, E_FAIL);
    	}
     
    	return S_OK;
    }
    et voici comment je compte les valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    STDMETHODIMP DnDZone::get_length(LONG* pVal)
    {
    	AFX_MANAGE_STATE(AfxGetStaticModuleState());
     
    	// Do some initial checks.
     
    	if (!::IsWindow(m_hWnd)) {
    		return Error (OLESTR ("Invalid or NULL window handler for the ListBox control"),
    			IID_IDnDZone, E_FAIL);
    	}
     
    	if (pVal == NULL) {
    		return Error (OLESTR ("NULL pointer passed in to return the value"),
    			IID_IDnDZone, E_POINTER);
    	}
     
    	*pVal = (int)::SendMessage(m_ctlListBox.m_hWnd, CB_GETCOUNT, 0, 0L);
    	if (*pVal == LB_ERR) {
    		return Error (OLESTR ("Error getting number of items from ListBox control"),
    			IID_IDnDZone, E_FAIL);
    	}
    	return S_OK;
    }
    Le problème est que je reçois toujours 0 au GETCOUNT. Est ce que je dois mettre quelque chose à jour pour avoir la bonne valeur ? Est ce qu'il y a une méthode que je devrais implementer et qu'il me manque (genre OnDrawItem) ?

    Merci d'avance.

  2. #2
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    c'est quoi comme type m_ctlListBox ? si c'est CListBox, pourquoi ne pas utiliser GetCount(); directement ?
    il y a du linge sur la corde à linge

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 84
    Points : 46
    Points
    46
    Par défaut
    m_ctlListBox est un CContainedWindow. Il a été crée automatiquement par VC avec l'assistant qui crée les contrôles ATL.

Discussions similaires

  1. [AC-2003] Compter les valeurs d'une zone de texte dans un état
    Par Tyria dans le forum IHM
    Réponses: 2
    Dernier message: 24/06/2009, 21h48
  2. Recuperer les valeur d'une listbox sur un page web
    Par will97 dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 02/03/2009, 04h39
  3. Graphique utilisant les valeurs d'une Listbox
    Par fermat dans le forum Débuter
    Réponses: 2
    Dernier message: 19/09/2008, 12h21
  4. [VBA-E] compter les item d'une listbox
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/07/2006, 15h29
  5. requete pour compter les valeurs ds une colonne
    Par smariteau dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/02/2006, 17h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo