Edit-Box-Text abfragen, festlegen und Text beschränken



  • die msdn seite hab ich schon gelesen, aber ich versteh manche parameter nicht genau, ich kann leider net so gut englisch und c++ eben auch noch net so gut...

    das ist meine Edit-Box:

    hwndEditA = CreateWindow (      "edit",                                        // Edit Fenster für Welle A
                                            NULL,
                                            WS_CHILD | WS_VISIBLE | WS_BORDER | 
                                            ES_RIGHT | ES_NUMBER,
                                            96,
                                            36,
                                            30,
                                            20,
                                            hwnd,
                                            (HMENU) 12,
                                            ((LPCREATESTRUCT) lParam) -> hInstance,
                                            NULL);
    

    ich denk mal dass ich die parameter in GetDlgItemInt irgendwie noch net 100% richtig festgelegt habe:

    GetDlgItemInt(hwndEditA, l1, NULL, FALSE);
    

    "l1" (vorher als globale Integer-Variable deklariert) wird dann nämlich nicht geändert, sondern bleibt gleich

    und bei

    SetDlgItemInt(hwndEditA, ..., l1, FALSE);
    

    weiß ich nicht was ich als 2. Parameter schreiben muss und ob mein 3. und 4. parameter richtig sind.

    Das wäre mein problem, könnte mir jemand helfen?
    Danke schonmal Sirstefen



  • weiß ich nicht was ich als 2. Parameter schreiben muss

    lol. das ist ja wohl der wichtigste und offentsichtlichste Parameter. Da musst du die Zahl angeben.



  • ok und was muss dann der 3. parameter sein?



  • hmm.. 🙄 wenn du aus dem da: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/dialogboxes/dialogboxreference/dialogboxfunctions/setdlgitemint.asp
    nicht selber schlau wirst, hör auf zu programmieren!

    ps. (etwas konstruktiver): solltest du dringend noch etwas englisch / c++ lernen
    (haste ja schon selber geschrieben -> "erkenntnis ist der erste weg zur besserung!" 👍)



  • des problem is, dass ich grad erst angefangen hab und keinen kurs oder sowas vorher besucht hab... ich hab ein buch dazu, da wird auch vieles gut erklärt aber eben nicht alles, und sobald ich einmal wissen würde was ich da nunmal eintragen müsste (ich hab ja auch scho a weng rumprobiert so is es ja net), dann wärs auch kein problem...
    ich glaub es gibt nur wenige die des sich selber beibringen können und in dem einen fall gehts halt bei mir leider net und deswegen hab ich mich hier hingewandt und anstatt irgendwelche dummen kommentare abzugeben (tut mir leid aber ich seh deinen kommentar halt als dumm an), könntet ihr mal sagen was ich machen muss. ich bin ja dankbar wenn mir geholfen wird aber auf irgendeinen mist kann ich echt verzichten, auch wenns vlt net so gemeint oder so... des is mir vollkommen egal... des is ja wohl ne einfache frage die ich hab und wenn du so schlau bist und des alles so gut kannst, dann sag mir doch was ich machen muss...
    ich versteh echt nicht was dein problem ist... andere fragen werden doch auch konstruktiv beantwortet...wenn ich jedem kumpel der mich bei pc problemen etwas fragt, so dumm anmache, dann hätt ich glaub ich keine freunde mehr...

    und ich verlang ja wirklich nicht mehr als dass mir einfach jemand sagt was diese parameter bedeuten und was ich einsetzen muss... ich kann nunmal grad nix mit
    "nIDDlgItem
    [in] Specifies the control to be changed.
    uValue
    [in] Specifies the integer value used to generate the item text."

    anfangen...
    eins von den beiden wird nunmal die int variable sein die ich einsetzen will aber des andere is mir echt unklar...

    Sirstefen

    PS: ich denk jeder hat mal angefangen und weiß dass es am anfang net unbedingt so einfach ist...



  • Dann lern am besten englisch. Also wenn du sowas simples noch nicht mal verstehst.



  • ich versteh ja was es auf deutsch hast, das is ja überhaupt nicht das problem, blos weiß ich eben nicht was es bedeutet und was ich genau damit anfangen soll



  • Was soll man dazu noch sagen. Wenn du es wirklich verstehst was es heißt dann sollte es wirklich kein Problem sein.

    Beim 1. Parameter gibst du die ID des Controls an, beim 2. den Integer-Wert der angezeigt werden soll.



  • SendMessage(HANDLE_EDIT, EM_SETLIMITTEXT,(WPARAM)MAX_ANZAHL, MAKELPARAM(TRUE, 0));
    

    HANDLE_EDIT: HANDLE des EditControls
    MAX_ANZAHL: Limit. (DWORD-Wert, gib also keine Kommazahlen ein!)

    MfG.



  • Die ID des Fensters ist doch in dem Fall:

    ...
    int l6 = 20;          //  l6 = L6, nur klein geschrieben, nicht sechzehn
    
    		hwndEditF = CreateWindow (		"edit",										// Edit Fenster für Welle F
    										NULL,
    										WS_CHILD | WS_VISIBLE | WS_BORDER | 
    										ES_RIGHT | ES_NUMBER,
    										96,
    										356,
    										30,
    										20,
    										hwnd,
    										(HMENU) 17,
    										((LPCREATESTRUCT) lParam) -> hInstance,
    										NULL);
    

    "(HMENU) 17" oder lieg ich da falsch? Aber wenn ich das reinsetze

    SetDlgItemInt(hwndEditF, (HMENU) 17, l6, FALSE);
    

    gibts ne fehlermeldung dass der 2. Parameter kein int ist... wenn ich

    SetDlgItemInt(hwndEditF, 17, l6, FALSE);
    

    eingebe, wird zwar kompiliert, aber im programm funktioniert es nicht...
    ich glaub irgendwie, dass das mein problem ist... ich versteh auch nicht wieso ich die id der edit box noch angeben muss, wenn ich doch sowieso schon den handle der edit box im 1. parameter mit "hwndEditF" angebe...

    @Tolga: danke für deine hilfe... das ganze funktioniert, blos brauch ich des leider net, weil ich durch die größe meines edit fensters schon die anzahl der zahlen auf 3 beschränkt habe...

    Edit: mir fällt grad auf dass das l6 nicht mit "Sechzehn" unterscheidbar ist... ich meine L6 blos kleingeschrieben und das is ne int variable die ich weiter oben in meinem programm global deklariert und initialisiert hab... habs auch noch ins programm eingefügt



  • Der erste Parameter ist *nicht* das Handle auf die Edit-Box. Das hätte, wie du ja schon gemerkt hast, keinen Sinn.

    [in] Handle to the dialog box that contains the control.



  • hi,
    also was sagt diese funktion aus:

    BOOL SetDlgItemInt(HWND hDlg, int nIDDlgItem, UINT uValue, BOOL bSigned);

    rueckgabewert ist ein BOOL, da wird wohl drinstehen ob es funktioniert hat oder nicht.
    HWND ist ein Fensterhandle, falls deine Editbox in einem Dialogfenster drin ist.
    nIDDlgItem ist die ID der Editbox.
    uValue is der Wert der dort erscheinen soll.
    bSigned gibt an ob der Wert(uValue) ein vorzeichen hat, z.b. ein "-" (in Worten: MINUS)

    reicht dir das erstmal?

    gruss
    wir



  • Wie kann man mit so etwas 3 Seiten füllen?

    @Tolga: danke für deine hilfe... das ganze funktioniert, blos brauch ich des leider net, weil ich durch die größe meines edit fensters schon die anzahl der zahlen auf 3 beschränkt habe...

    Finde ich nicht wirklich überzeugend, dass man so lange rumprobieren muss, bis man die richtige Breite hat...



  • Anfänger14 schrieb:

    @Tolga: danke für deine hilfe... das ganze funktioniert, blos brauch ich des leider net, weil ich durch die größe meines edit fensters schon die anzahl der zahlen auf 3 beschränkt habe...

    Finde ich nicht wirklich überzeugend, dass man so lange rumprobieren muss, bis man die richtige Breite hat...

    Außerdem: Kann man dann nicht trotzdem mehr hineinschreiben 😕
    Imho brauchst du schon EM_SETLIMITTEXT 🙄



  • flenders schrieb:

    Außerdem: Kann man dann nicht trotzdem mehr hineinschreiben 😕

    Nur wenn ES_AUTOVSCROLL gesetzt ist!



  • Sicher das Du nicht ES_AUTOHSCROLL meinst?

    Denn Links->Rechts ist immer noch Horizontal...


Anmelden zum Antworten