CListbox und InsertString
-
hi,
Ich habe folgendes Problem:
Ich habe einen Dialog(EingabeDialog) den ich der unter anderem eine Listbox enthält. Mittels "Klassen-Assistent" habe ich dieser eine Variable vom dem Typ CListBox hinzugefügt(m_list) und wollte nun in der OnInitDialog Methode die Liste (zum Test mal mit "Daten")initialisieren.BOOL EingabeDialog::OnInitDialog() { m_list.ResetContent(); m_list.InsertString(-1,"Daten"); UpdateData(); return 1; }
Doch die Listbox bleibt leer.
Ich bin ein anfänger in Sachen MFC, bitte darum um Hilfe...
-
bei einer listbox brauchst du kein update data, nur bei eingabefelder
schau mal in der msdn nach lsitbox oder drück z.b. F1 auf dem wort insertstring. da ich nur eigene listboxen verwende( da heisst es AddIem( string, farbe ), heissen die methoden anders und die entwicklungsumgebung hab ich nciht grad vorliegen. aber warum ( -1, "daten" )
was ist der erste paramenter?
-
Der Aufruf ist korrekt @ newkid. Einfach mal den eigenen Tip verwenden: MSDN
@Archon: Was gibt InsertString denn zurück?
Hast du vielleicht irgendwo anders nochmals einen ResetContent?
Alternativ versuch mal die Methode AddString.
-
dEUs schrieb:
Der Aufruf ist korrekt @ newkid. Einfach mal den eigenen Tip verwenden: MSDN
@Archon: Was gibt InsertString denn zurück?
Hast du vielleicht irgendwo anders nochmals einen ResetContent?
Alternativ versuch mal die Methode AddString.jep, da kannst du auch nachschauen was InsertString zurückliefert, wenn dich das so heiss interessiert
-
hier z.b.
dein -1 muesste stimmen
Specifies the zero-based index of the position to insert the string. If this parameter is –1, the string is added to the end of the list.
aber
wichtig:This method inserts a string into the list box. Unlike the AddString method, InsertString does not cause a list with the LBS_SORT style to be sorted.
versuch mal AddString
-
newkid_ schrieb:
dEUs schrieb:
Der Aufruf ist korrekt @ newkid. Einfach mal den eigenen Tip verwenden: MSDN
@Archon: Was gibt InsertString denn zurück?
Hast du vielleicht irgendwo anders nochmals einen ResetContent?
Alternativ versuch mal die Methode AddString.jep, da kannst du auch nachschauen was InsertString zurückliefert, wenn dich das so heiss interessiert
Du bist ein Idiot. Guck einfach mal in die MSDN, da siehst du, dass diese Funktion mehrere Werte zurückgeben kann. Bitte halte dich aus diesem Thread fern.
-
Gar nicht gewusst, das kleine flameKiddies auch Mods ein können
-
mit AddString geht's auch nicht.
InsertString hat den Rückgabetyp von int.
Hier mal Eingabedialog.h#if !defined(AFX_EINGABEDIALOG_H__9D97316B_2202_4375_8986_0CAEF1DB1F40__INCLUDED_) #define AFX_EINGABEDIALOG_H__9D97316B_2202_4375_8986_0CAEF1DB1F40__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // EingabeDialog.h : Header-Datei // #include "MfcGeruest.h" ///////////////////////////////////////////////////////////////////////////// // Dialogfeld EingabeDialog class EingabeDialog : public CDialog { // Konstruktion public: EingabeDialog(CWnd* pParent = NULL); // Standardkonstruktor // Dialogfelddaten //{{AFX_DATA(EingabeDialog) enum { IDD = IDD_DIALOG1 }; CListBox m_list; CString m_Text; //}}AFX_DATA // Überschreibungen // Vom Klassen-Assistenten generierte virtuelle Funktionsüberschreibungen //{{AFX_VIRTUAL(EingabeDialog) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV-Unterstützung //}}AFX_VIRTUAL // Implementierung protected: // Generierte Nachrichtenzuordnungsfunktionen //{{AFX_MSG(EingabeDialog) virtual BOOL OnInitDialog(); virtual void OnOK(); afx_msg void OnRadio1(); afx_msg void OnRadio2(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ fügt unmittelbar vor der vorhergehenden Zeile zusätzliche Deklarationen ein. #endif // AFX_EINGABEDIALOG_H__9D97316B_2202_4375_8986_0CAEF1DB1F40__INCLUDED_
Und hier EingabeDialog.cpp
// EingabeDialog.cpp: Implementierungsdatei // #include "EingabeDialog.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // Dialogfeld EingabeDialog EingabeDialog::EingabeDialog(CWnd* pParent /*=NULL*/) : CDialog(EingabeDialog::IDD, pParent) { //{{AFX_DATA_INIT(EingabeDialog) m_Text = _T("Tierart:"); //}}AFX_DATA_INIT } void EingabeDialog::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(EingabeDialog) DDX_Control(pDX, IDC_LIST1, m_list); DDX_Text(pDX, IDC_EDIT1, m_Text); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(EingabeDialog, CDialog) //{{AFX_MSG_MAP(EingabeDialog) ON_BN_CLICKED(IDC_RADIO1, OnRadio1) ON_BN_CLICKED(IDC_RADIO2, OnRadio2) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // Behandlungsroutinen für Nachrichten EingabeDialog void EingabeDialog::OnOK() { // TODO: Zusätzliche Prüfung hier einfügen CDialog::OnOK(); } BOOL EingabeDialog::OnInitDialog() { m_list.ResetContent(); m_list.InsertString(-1,"Daten"); return 1; } void EingabeDialog::OnRadio1() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen } void EingabeDialog::OnRadio2() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen }
die beiden wurden vom Klassen-Assistent erstellt bis auf das OnInitDialog() und OnRadio1+2 und ("Tierart:"). Falls sich wer fragt wo das stdafx.h includiert ist, ich habe dies mit vs 6.0 kompiliert.
-
Archon schrieb:
InsertString hat den Rückgabetyp von int.
Aha. Das wusste ich auch schon. Ich meinte den Wert......
-
der hat den wert 0, sry