Edit-Box-Text abfragen, festlegen und Text beschränken
-
...
-
GetWindowText / SetWindowText
-
...
-
ES_NUMBER und dann GetDlgItemInt - wenn du jetzt noch die Länge begrenzen willst kommst du afaik um subclassing nicht herum

-
gibts auch die möglichekeit den wert einer int variable in eine edit box zu schreiben?
-
Hättest du mal ein bisschen nachgedacht hättest du vielleicht mal SetDlgItemInt gefunden.

-
...
-
"es funktioniert nicht" ist die genaueste Fehlerbeschreibung, die Dir einfällt?

-
hi,
was verstehst du nicht? kannst du etwas englisch dann sieh dir das doch mal genauer an:
GetDlgItemInt
The GetDlgItemInt function translates the text of a specified control in a dialog box into an integer value.UINT GetDlgItemInt(
HWND hDlg, // handle to dialog box
int nIDDlgItem, // control identifier
BOOL *lpTranslated,
// points to variable to receive success/failure
// indicator
BOOL bSigned // specifies whether value is signed or unsigned
);Parameters
hDlg
Handle to the dialog box that contains the control of interest.
nIDDlgItem
Dialog item identifier that specifies the control whose text is to be translated.
lpTranslated
Pointer to a Boolean variable that receives a function success/failure value. TRUE indicates success, FALSE indicates failure.
This parameter is optional: it can be NULL. In that case, the function returns no information about success or failure.bSigned
Specifies whether the function should examine the text for a minus sign at the beginning and return a signed integer value if it finds one. TRUE specifies that this should be done, FALSE that it should not.
Return Values
If the function succeeds, the variable pointed to by lpTranslated is set to TRUE, and the return value is the translated value of the control text.If the function fails, the variable pointed to by lpTranslated is set to FALSE, and the return value is zero. Note that, since zero is a possible translated value, a return value of zero does not by itself indicate failure.
If lpTranslated is NULL, the function returns no information about success or failure.
If the bSigned parameter is TRUE, specifying that the value to be retrieved is a signed integer value, cast the return value to an int type. To get extended error information, callGetLastError.
Remarks
The GetDlgItemInt function retrieves the text of the given control by sending the control a WM_GETTEXT message. The function translates the retrieved text by stripping any extra spaces at the beginning of the text and then converting the decimal digits. The function stops translating when it reaches the end of the text or encounters a nonnumeric character.If the bSigned parameter is TRUE, the GetDlgItemInt function checks for a minus sign (–) at the beginning of the text and translates the text into a signed integer value. Otherwise, the function creates an unsigned integer value.
The GetDlgItemInt function returns zero if the translated value is greater than INT_MAX (for signed numbers) or UINT_MAX (for unsigned numbers).
damit sollte es eigentlich klar sein oder?
gruss
msp
-
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