ComboBox



  • Hi @all

    wie kann ich eine combobox machen und darauf zugreifen??
    ich will es von hand, also nicht mit dem visual cpp "assistenten" machen.
    das problem liegt beim zugreifen:
    ich habe in der .rc die combobox bereits hinzugefügt und das geht auch, aber ich kann halt nicht drauf zugreifen...

    mfg
    L0rD_S3nn4



  • Suchst du GetDlgItem? 😕



  • was kann ich damit anstellen??

    EDIT: ich habe in der MSDN geschaut, habs aber net gecheckt...



  • Naja, aus deiner Frage ging nicht hervor, was du haben willst.
    GetDlgItem gibt dir einen Zeiger auf die ComboBox, aber als CWnd. Den musst du noch in CComboBox casten und dann kannst du z.B. AddString oder GetCurSel aufrufen.



  • ich wollte /will wissen was ich tun muss, um eine combobox zu erzeugen, in die ich items reinschreiben kann, und dann ein ereigniss auslösen kann, wenn ein item ausgelöst wurde...

    und wie caste ich das????

    mfg
    L0rD_S3nn4



  • Also, spätestens für das MassageHandling (es wurde was geklickt) brauchst du den Assistenten - oder jemanden hier, der dir genau das aufschreibt, was der erzeugt hätte.
    Bei Membervariablen sind das 2 Stellen, bei MessageHandlern 3.

    Weißt du, was ein Cast ist? Wenn nein, solltest du das mal nachholen, das ist was grundlegendes, was man schlecht nebenher erklären kann.



  • und wo kann ich das nachlesen??
    ich hab erst gerade mit MFC angefangen...

    kann ich nicht einfach mit mesagemap bestimmen, welches item ausgewählt wurde??

    mfg
    L0rD_S3nn4



  • Lord_Senna schrieb:

    und wo kann ich das nachlesen??
    ich hab erst gerade mit MFC angefangen...

    Am besten ist, du lässt den Assistenten das machen und guckst dann, was der gemacht hat. Danach guckst du in der MSDN, was die Befehle machen. Das ist der einfachste Weg. 🙂
    Wenn du das in der MSDN raussuchen willst, noch dazu, wenn du gerade erst anfängst... da verzweifeln Leute dran, die sich schon jahrelang mit der MFC rumschlagen. 😮

    kann ich nicht einfach mit mesagemap bestimmen, welches item ausgewählt wurde??

    mfg
    L0rD_S3nn4

    Nein, mit der MessageMap geht das nicht. In der Messagemap hast du nur das Ereignis "es wurde was anderes gewählt" - in der Funktion dazu kannst du mit GetCurSel gucken, welcher Eintrag gewählt wurde.



  • beim nachlesen meinte ich eigentlich, das casten...

    mfg
    L0rD_s3nn4



  • Das ist in C++ Büchern oft erklärt, ich hab mal bei Google geguckt:
    http://www.cl.uni-heidelberg.de/kurs/ws02/prog2/html/page012.html
    Aber so mal eben ist da irgendwie nichts schönes zu finden. 😞

    Im Prinzip ist das eine Typumwandlung.
    In deinem Fall würde die (einfachste aber nicht fehlersicherste Version) so aussehen:

    CComboBox* pCbx = (CComboBox*)GetDlgItem(IDC_iregndwas);
    

    Es gibt dann noch dynamic_cast, static_cast usw, aber die solltest du wirklich besser nachlesen. Wenn du magst, gucke ich mal, in welchem Buch die schöne Erklärung war. 🙂



  • danke... 👍

    wenn du mir ein gutes buch empfehlen kanst (wenn möglich auf deutsch) wäre das eine grose hilfe.. 🙂

    mfg
    L0rD_s3nn4

    EDIT
    habs gefunden: http://www.willemer.de/informatik/windows/mfccombo.htm

    ich frage mich jetzt nur noch, warum man das in der .rc nicht definieren muss???
    /EDIT



  • OOP mit C++ | ISBN: 3898423328S.483 ff
    Das ist die beste Erklärung, die ich kenne.
    Das Buch ist ein super Nachschlagewerk. 👍

    Ansonsten kommt es immer darauf an, was du lernen willst. Je nach Thema ist oft ein anderes Buch besser.
    Ich habe nach und nach immer wieder bei Angeboten zugeschlagen, und jedes Buch hat andere Glanzseiten. 🙂



  • danke...
    👍 👍 👍 👍 👍

    mfg
    L0rD_S3nn4



  • Lord_Senna schrieb:

    EDIT
    habs gefunden: http://www.willemer.de/informatik/windows/mfccombo.htm

    ich frage mich jetzt nur noch, warum man das in der .rc nicht definieren muss???
    /EDIT

    Deswegen:

    if (!m_StatusBox.Create(WS_CHILD|CBS_DROPDOWNLIST|WS_VISIBLE
            |CBS_AUTOHSCROLL|WS_VSCROLL|CBS_HASSTRINGS,
            rect, this, IDC_STATUSBOX))
       return false;
    

    PS: Nette Seite hast du da gefunden. 👍



  • estartu schrieb:

    Naja, aus deiner Frage ging nicht hervor, was du haben willst.
    GetDlgItem gibt dir einen Zeiger auf die ComboBox, aber als CWnd. Den musst du noch in CComboBox casten und dann kannst du z.B. AddString oder GetCurSel aufrufen.

    Ich habe an dieser Stelle genau das gleiche Problem. Ich bräuchte einen Zeiger auf meine ComboBox. Ich weiß jetzt aber nicht genau, wie der zu übergebende zweite Parameter HWND *phWnd der Funktion GetDlgItem() aussehen muß.
    Könntest Du mir vielleicht ein Beispiel zeigen.

    Danke, ein schon ziemlich ComboBox-geschädigter Verzweifelter yul97.



  • Ich habe an dieser Stelle genau das gleiche Problem. Ich bräuchte einen Zeiger auf meine ComboBox. Ich weiß jetzt aber nicht genau, wie der zu übergebende zweite Parameter HWND *phWnd der Funktion GetDlgItem() aussehen muß.
    Könntest Du mir vielleicht ein Beispiel zeigen.

    Danke, ein schon ziemlich ComboBox-geschädigter Verzweifelter yul97.



  • Wenn du in einem Dialog bist, hat GetDlgItem nur einen Parameter, nämlich die ID.


Anmelden zum Antworten