Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » edit box mit GetDlgItemInt und SetDlgItemInt

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.01.2005, 01:58 Uhr
~Gast123456
Gast


ich hab in meinen programm eine edit box in der ich nur max 3 zahlen (keine anderen zeichen) zulasse (durch ES_NUMBER und durch die größe der edit box).

und jetzt hab ich zwei fragen zu den beiden (ich sag etz mal) funktionen GetDlgItemInt und SetDlgItemInt:

und zwar versteh ich nicht genau, was ich bei SetDlgItemInt und GetDlgItemInt als 2. und 3. parameter in die klammer einsetzen muss. ich komm auch mit der msdn hilfe net so recht weiter, weil ich nix damit anfangen kann was als erklärung für den 2. und 3. parameter dasteht.

zu SetDlgItemInt: was müsste ich genau für das hier

int nIDDlgItem, // identifier of control
UINT uValue, // value to set

schreiben wenn ich meine int variable x in der edit box speichern will.

ich denk mal ich schreib "SetDlgItemInt(hwndEdit,...,...,FALSE)" aber was eben in der mitte reinkommt weiß ich nicht...


zu GetDlgItemInt: was müsste ich genau für das hier

int nIDDlgItem, // control identifier
BOOL *lpTranslated,
// points to variable to receive success/failure
// indicator

schreiben, damit der wert in der edit box in der variable y gespeichert wird? und mach ich das ganze mit "y = GetDlgItemInt(hwndEdit,...,...,FALSE)" schreiben oder reicht "GetDlgItemInt(hwndEdit,...,...,FALSE)"
beides funktioniert bisher in meinem programm nicht und ich hab echt keine ahnung wieso...


könnte mir jemand weiterhelfen? ich bin leider noch sehr unerfahren und des wär echt wichtig für mein programm, da ich zurzeit deswegen nicht mehr weiterkomm.

Vielen Dank schonmal im Vorraus Gast123456
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.01.2005, 13:22 Uhr
Oliver
S2-Pixelgeneral


nIDDlgItem ist der Identifier von deinem Editfeld also die Konstante die du dafür definiert hast z.B. IDC_EDIT1 oder wie du es genannt hast. Beim 3. parameter musst du deinen Wert übergeben, also in diesem Fall y. Der 1. Parameter ist NICHT das HWND vom Control sondern vom Dialog in dem sich dein Editfeld befindet. Also sieht ein Aufruf dann ungefähr so aus:


C++:
SetDlgItemInt(hDlg,IDC_EDIT1,y,0);



Bei GetDlgItemInt ist das eigentlich genauso. Der Wert wird zurückgegeben und mit lpTranslated kannst du einen Pointer übergeben, ob es gutgegangen (true) oder fehlgeschlagen(false) ist. Kannst du aber auf NULL setzen, falls du es nicht brauchst. Sieht dann z.B. so aus:


C++:
y=GetDlgItemInt(hDlg,IDC_EDIT1,NULL,0);


--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.01.2005, 14:34 Uhr
~Gast123456
Gast


vielen dank schon mal für die gute hilfe
SetDlgItemInt funktioniert wunderbar
aber GetDlgItemInt leider nicht...

ich hab mein programm folgendermaßen aufgebaut: erst kommt mein hauptfenster, in dem die editboxen und ein child fenster deklariert werden (alles in WM_CREATE) und bei den editboxen setze ich auch

C++:
SetDlgItemInt(hwnd,17,x,0);


im child fenster (heißt bei mir hChild) will ich nun den Wert für y abfragen (unter WM_PAINT) weil ich je nach wert was anderes zeichnen muss


C++:
y=GetDlgItemInt(hwnd,17,NULL,0);


aber leider funktioniert des nicht... kann des daran liegen dass ich im child fenster bin, die editboxen sich aber im hauptfenster (=hwnd) befinden oder macht das keinen unterscheid und ich hab irgendetwas falsch hingeschrieben?
Wär dankbar für Hilfe Gast123456
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.01.2005, 14:41 Uhr
~Gast123456
Gast


also ich hab grad gestgestellt, dass y immer den wert 0 bekommt, egal was in der edit box drinsteht...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.01.2005, 14:51 Uhr
Oliver
S2-Pixelgeneral


Ist eigentlich egal, wo du dich befindest. Du darfst dann bloß nicht das Handle vom Child in der Child-Proc übergeben.


C++:

[...] ChildProc(HWND hWnd [...]
{
switch(msg)
{
case WM_PAINT:

GetDlgItem(hWnd [...]




Das wäre dann z.B. falsch, weil du ja dann das Handle vom Child übergibst und nicht von dem, wo sich dein Editfeld befindet.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
05.01.2005, 14:56 Uhr
~Gast123456
Gast


Wie müsste ich das dann z.b. machen? Ich hab jetzt das Child hwnd in hWnd umgewandelt, aber dann kommt ne fehlermeldung, dass "hwnd" von

GetDlgItemInt(hwnd ...)

sei ein nichtdeklarierter bezeichner...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
05.01.2005, 15:07 Uhr
Oliver
S2-Pixelgeneral


Z.B. eine globale Variable nehmen, in der du dann das Mainwindow speicherst.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
05.01.2005, 15:26 Uhr
~Gast123456
Gast


super vielen dank für dich echt kompetente hilfe... es funzt...
in nem andern forum hat man mich erst 10mal angemault und mir net wirklich gesagt was mein problem ist... ich weiß ja dass des für erfahrene immer recht dumme fragen sind... geht mir ja in anderen sachen genauso wo ich mich gut auskenn, wenn mich dann jemand fragt wie des geht...
umso löblicher dass du mir geholfen hast!!!

Gast123456
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: