2014-07-08 3 views
1

Je travaille sur un projet win32 (visual studio 2012). L'utilisateur peut entrer plusieurs marqueurs avec leurs coordonnées et leurs noms; Maintenant, je veux ajouter tous les noms des marqueurs dans la liste en tant qu'élément séparé; mais avec le code ci-dessous, je ne vois rien dans listbox:Comment puis-je ajouter plusieurs éléments à une zone de liste dans Win32 Project C++?

string MarkerNames[10]; 
CMarkerList *Modeless; 

    if (!Modeless) 
     Modeless = new CMarkerList; 

    if (!::IsWindow(Modeless->GetSafeHwnd())) 
     Modeless->Create(IDD_DIALOG2,NULL); 

    Modeless->ShowWindow(SW_SHOW); 
    HWND hdlg = FindWindow(NULL,_T("Dialog")); 


    int index1 = SendDlgItemMessage(hdlg, IDC_LIST2, LB_ADDSTRING, 0, (LPARAM)(MarkerNames[0].c_str())); 

qui Modeless est un objet de mon dialogue et MarkerNames est un tableau que je sauvé le nom du marqueur; si j'entre une chaîne explicite telle que "TEST" cela fonctionne mais il y a un problème avec le passage du paramètre;

Quel est le problème et comment puis-je corriger cela?

Merci beaucoup pour votre aide :)

Répondre

0

Votre utilisation de _T suggère que vous construisez le programme pour le jeu de caractères unicode, ce qui est la valeur par défaut. Si tel est le cas, vous devriez utiliser wstring au lieu de string.

+0

Je dois utiliser la fonction GetDlgItemText() pour obtenir le texte du contrôle d'édition sur la boîte de dialogue et il doit être de type TCHAR et je ne trouve pas de conversion appropriée pour basculer entre ces types; – user3811565

+0

Une conversion n'est pas nécessaire: les contrôles d'édition et les contrôles Listbox utilisent le même type de texte. Mais std :: string ne fonctionne que pour les caractères de 8 bits et std :: wstring ne fonctionne que pour les caractères de 16 bits. Quelle est la taille de TCHAR dans votre programme? (Cela change selon que vous construisez pour Unicode ou non.) –

Questions connexes