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

Visual C++ Discussion :

[débutant] Mes controles n'ent font qu'à leur tête!


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 44
    Par défaut [débutant] Mes controles n'ent font qu'à leur tête!
    En fait, j'ai deux soucis :
    le premier : j'essais de faire une fonction "add" qui ajoute une ligne dans une CListCtrl avec dans la 1ère colonne, le texte situé dans une CEdit et dans la deuxième colonne, le texte situé dans une deuxième CEdit :

    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
     
    void Cconfig::AddCalibration() 
    {
      CString str ;
      CListCtrl *listeCalib = static_cast<CListCtrl *>(GetDlgItem(IDC_LS_CONFG));	
     
      //création d'une structure LV_ITEM pour l'insertion des lignes
      LV_ITEM lvi;
     
      //colonne 1
      lvi.mask = LVIF_TEXT ;
      lvi.iItem = listeCalib->GetItemCount() + 1;
      lvi.iSubItem = 0;
      GetDlgItemText(IDC_ED_CALIB, str);
      lvi.pszText = (char*)LPCTSTR(str);
      listeCalib->InsertItem(&lvi);
     
      //colonne 2
      GetDlgItemText(IDC_ED_VALUE, str);
      lvi.iSubItem = 1;
      lvi.pszText = (char*)LPCTSTR(str);
      listeCalib->SetItem(&lvi);
    }
    Or, impossible d'afficher le texte de la deuxième colonne!

    mon deuxième problème est du même ordre:
    lorsque je sélectionne une ligne dans ma liste, j'affiche le contenu des deux colonnes de la ligne sélectionnée dans les CEdit correspondante. J'ai ensuite fait une fonction "remove" qui supprime la ligne sélectionnée et qui efface les deux CEdit... Or, impossible de les effacer. Voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    void Cconfig::RemovCalibration() 
    {
      CEdit *edCalib = static_cast<CEdit *>(GetDlgItem(IDC_ED_CALIB));
      CEdit *edValue = static_cast<CEdit *>(GetDlgItem(IDC_ED_VALUE));
      int iItem;
      CListCtrl *listeCalib = static_cast<CListCtrl *>(GetDlgItem(IDC_LS_CONFG));	
      iItem = listeCalib->GetSelectionMark();
     
      listeCalib->DeleteItem(iItem);
     
      edCalib->Clear();
      edValue->Clear();	
    }
    merci pour votre aide, parce que la, franchement, je sèche!

  2. #2
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    pr le premier truc essaie ca :

    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
     
    void Cconfig::AddCalibration() 
    {
      CString str ;
      CListCtrl *listeCalib = static_cast<CListCtrl *>(GetDlgItem(IDC_LS_CONFG));	
     
      //colonne 1
      int nIndex = listeCalib->GetItemCount() + 1;
      GetDlgItemText(IDC_ED_CALIB, str);
      char *strText = (char*)LPCTSTR(str);
      nIndex =  listeCalib->InsertItem(nIndex,strText);
     
      //colonne 2
      GetDlgItemText(IDC_ED_VALUE, str);
      strText = (char*)LPCTSTR(str);
      listeCalib->SetItemText(nIndex,strText);
    }
    PS : attention à l'unicode si tu es sous vc2005

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Tu cumules la perte de const et le forçage de TCHAR* en char*...

    Et le pire, c'est que d'après l'aide de CListCtrl::InsertItem() et de CListCtrl::SetItemText(), c'est inutile.
    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
    void Cconfig::AddCalibration() 
    {
      CString str ;
      CListCtrl *listeCalib = static_cast<CListCtrl *>(GetDlgItem(IDC_LS_CONFG));	
     
      //colonne 1
      int nIndex = listeCalib->GetItemCount() + 1;
      GetDlgItemText(IDC_ED_CALIB, str);
      LPCTSTR strText = str;
      nIndex =  listeCalib->InsertItem(nIndex,strText);
     
      //colonne 2
      GetDlgItemText(IDC_ED_VALUE, str);
      strText = str;
      listeCalib->SetItemText(nIndex,strText);
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 44
    Par défaut
    ok, merci!
    pensez juste à rajouter un 3ème param à SetItemText() : nSubItem...
    en tout les cas, ca marche beaucoup mieux comme ca!
    merci encore...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Des template qui n'en font qu'à leur tête
    Par Captain'Flam dans le forum Débuter
    Réponses: 12
    Dernier message: 20/01/2015, 18h40
  2. Onglets qui n'en font qu'à leur tête !
    Par bitou11 dans le forum Access
    Réponses: 2
    Dernier message: 01/08/2006, 16h45
  3. [C#]comment donner un style XP à mes controles (button,...)
    Par hassanibi dans le forum Windows Forms
    Réponses: 8
    Dernier message: 03/09/2005, 17h20
  4. Réponses: 5
    Dernier message: 10/06/2004, 21h00
  5. [Débutant] Utilisation de FOP - Register Fonts with FOP
    Par Johnbob dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 31/01/2004, 00h27

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