ListBox



  • Hallo,

    Ich versuche gerade einen Taschenrechner zu schreiben, und dabei wollte ich eine ListBox machen, wo man die Operation auswählen kann:

    char ListBox[4] = {'*', '+', '-', '/'};
        hwndListBox   = CreateWindow ("listbox", "",
                                       WS_CHILD | WS_VISIBLE | LBS_STANDARD,
                                       135, 25, 50, 25,
                                       hwnd, HMENU(LIST_OPERATOR), hInst, NULL);
        for (int i = 0; i < 4; i++) {
            SendDlgItemMessage(hwndListBox, LIST_OPERATOR, LB_ADDSTRING, 0, ListBox[i]);
        }
    

    Aber es will einfach nicht klappen, alles was ich sehe ist eine leeres Rechteck.

    Bin für jede Hilfe dankbar! 😃



  • Guck dir doch einfach mal in der Hilfe die Parameter zu SendDlgItemMessage an.



  • Hallo!

    Danke für die Antwort!

    Das habe ich bereits getan (So bin ich ja auf die Funktion gekommen), sehe einfach meinen Fehler nicht 😣

    Der Compiler spuckt nämlich auch keinen Error aus.



  • lParam
    A pointer to the null-terminated STRING that is to be added.

    ... und kein char



  • Probier mal:

    const char* const ListBox[4] = {"*", "+", "-", "/"};
    


  • Alles andere als meine Originalversion gibt folgenden (oder so etwas in der Art) Error im Compiler:

    C++\windows_vorlage.cpp|73|error: invalid conversion from `char**' to `LPARAM'|
    


  • Weder:

    char ListBox[] = "Hallo";
    SendMessage(hwndListBox, LB_ADDSTRING, 0, ListBox);
    

    Noch

    char ListBox[] = "Hallo";
    SendMessage(hwndListBox, LB_ADDSTRING, 0, &ListBox);
    

    funkzt 😣



  • Ah, bin endlich mit experimentieren draufgestossen 😣

    Natürlich muss ich meinen String zu einem lParam umwandeln mit:

    LPARAM();

    😨



  • ListBox schrieb:

    Hallo!

    Danke für die Antwort!

    Das habe ich bereits getan (So bin ich ja auf die Funktion gekommen), sehe einfach meinen Fehler nicht 😣

    Der Compiler spuckt nämlich auch keinen Error aus.

    In der Hilfe steht:
    LRESULT SendDlgItemMessage(
    HWND hDlg,
    int nIDDlgItem,
    UINT Msg,
    WPARAM wParam,
    LPARAM lParam
    );
    Und was hast du als als Handle angegeben? Richtig, die Listbox. Aber was muss da angegeben werden? Richtig, das Fenster.


Anmelden zum Antworten