CComboBox .. AddString ..



  • In einer Dialogvorlage, habe ich ein Combobox Steuerelement angeordnet.
    Dazu habe ich eine zugehörige Klasse mit Namen CMeinDialog erstellt.
    Der Combobox gab ich den Variablenname m_combo.
    Folgender Text:

    ...Click Handler .. :

    CMeinDialog dlg;
    dlg.m_combo.AddString("Stringle ..."); //Hier stürtzt das Programm ab, wieso ?
    dlg.DoModal();

    Bei einem ListBox Steuerelement geschied das selbe. Wieso ?


  • Mod

    Weil Du nur die Wrapper Klasse erzeugt hast. Die Combobox existiert erst nach Aufruf von DoModal. Du kannst Die Box am Besten im OnInitDialog Handler Deines Dialoges füllen.



  • Nochmals zu der DialogBar. Diese erzeuge ich in MainFrame, und enthält,
    eine Combobox mit der ID: IDC_COMBO1.

    In class CMeinFrame:

    CDialogBar dbr;

    In MainFrame.cpp .. OnCreate .. :

    dbr.Create(this, IDD_DIALOG1, CBRS_TOP, 0xE80A);
    CComboBox* cmb = (CComboBox*)GetDlgItem(IDC_COMBO1);
    cmb.AddString("Stringle ...");

    Und stürzt ab ...

    Die Nachrichten der DialogBar fange ich in CMainFrame ab. In Mainframe
    will ich aber auch auf die Steuerelemente zugreifen. Eventuell mit
    CComboBox* cmb = (CComboBox*)GetDlgItem(IDC_COMBO1);
    Mit der Dialog-Klasse selber möchte ich gar nicht arbeiten.



  • Wenn Du das in Deiner Klasse MeinFrame aufrufst, ist doch klar, warum das abkachelt. Die ComboBox gehört doch gar nicht zu MeinFrame, sondern zur CDialogBar. Wenn überhaupt, dann sowas wie

    CComboBox* cmb = (CComboBox*)[b]dbr.[/b]GetDlgItem(IDC_COMBO1);
    

    Hier kommt dann allerdings wieder die Argumentation von Martin zum Zuge....



  • Danke! das mit dbr.GetDlgItem .. ging.
    Jetzt habe ich noch ein kleines Problem:
    Mit dbr->InsertString ... habe ich mehrere Strings in die
    Combobox eingefügt. Wenn ich das Programm starte und die
    Combobox herunterklappe, erscheint nicht die Liste der Einträge, sondern
    eine einzige Zeile mit zwei kleinen Scroll-Fenstern.
    Mir ist unklar wie ich das Problem beseitige. Irgendetwas mit den
    Eigenschaften der Combobox. Dann gibt es auch noch die CComboBox
    Member-Funktion ShowDropDown ...


  • Mod

    Klick im Resource Editor aufdie Drop Down Box und ziehedas Fenster auf die gewünschte Größe!



  • Vielen Dank! Das hat geklappt!
    Ich habe immer ein schlechtes Gewissen, wenn ich weniger Fragen
    beantworte als Fragen stelle, es wäre schön wenn ich auch mal helfen
    könnte. Warscheinlich kommt die nächste Frage bald ...


Anmelden zum Antworten