Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

25.10.2007, 14:35

Es sollte eigentlich genügen, wenn du beim Schließen des Dialogs die Werte speicherst (analog zu WM_INITDIALOG), anstatt bei WM_COMMAND. Dann fehlen da bei der Switch-Anweisung glaube ich geschweifte Klammern und ein Break. Kann auch nicht schaden, LRESULT statt int bei state1 und state2 zu verwenden.
Ansonsten empfehle ich dir, den Debugger anzuwerfen, bzw. ne Messagebox oä. zum Anzeigen der aktuellen Werte...
fka tm

eugler

Frischling

  • »eugler« ist der Autor dieses Themas

Beiträge: 26

Beruf: Student

  • Private Nachricht senden

12

25.10.2007, 14:40

passt

hi. hast natürlich recht, ganz klar.. habe das break voll uebersehen... vielen dank...
warum ist LRESULT sinnvoller als Int?

greetz & thnx

13

25.10.2007, 15:06

Meinte nur, kann nicht schaden, da LRESULT der Rückgabewert von SendMessage ist... (according to MSDN)
fka tm

14

25.10.2007, 16:20

innerhalb einer WinAPI Callback sollten die Handles zu Steuerelementen immer statisch sein sonst garantier ich dir interessante Ergebnisse wenn du ne Checkbox abfragst! Was du ja mit Sicherheit tun wuillst sonst wären die Checkboxen ja total überflüssig...
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

eugler

Frischling

  • »eugler« ist der Autor dieses Themas

Beiträge: 26

Beruf: Student

  • Private Nachricht senden

15

25.10.2007, 16:24

ok, habe es in LRESULT, den Rückgabewert von SendMessage geändert. funktioniert. nochmal was anderes...ich habe noch eine EditBox und versuche den eingegbenen integerwert mit einem rot-farbwert eines objekts in meiner gl-klasse zu verknüpfen, damit man also letztendlich die RGB-Werte der objekte selbst bestimmen kann.

habe das mit

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
HWND    hEditBox;

//// ... /////

case IDC_EDIT1:

            char Text[256];
                        hEditBox = (HWND)lParam;
            
                        // Text aus der Editbox holen

            GetWindowText (hEditBox, Text, 256);
                        //Text in Int wandeln

            EditBox_Val = atoi(Text);   
                        //Setzen des R-Wertes in gl-klasse

            EditBox_Val = gl.iCol_R;

         return (0);


Eine Idee, warum das nicht klappt? Hab ich wieder irgendwas sinnvolles vergesssen? ;)

greetz

16

25.10.2007, 16:26

schreib mal:

C-/C++-Quelltext

1
static HWND    hEditBox;


Hatte ich aber schon vor 4 Minuten erwähnt ...
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

eugler

Frischling

  • »eugler« ist der Autor dieses Themas

Beiträge: 26

Beruf: Student

  • Private Nachricht senden

17

25.10.2007, 16:49

daran lags leider nicht. auch mit static ändert sich der wert in meiner gl-klasse nicht. :cry: eine andere idee?

habs auch schon mit GetDlgItemInt(hWnd,atoi(Text), NULL, TRUE); probiert, aber leider auch nix...

noch ne frage, wie kann ich in einer messagebox z.b. eine variable ausgeben lassen? quasi als rückmeldung, was und ob in der variable steht...

C-/C++-Quelltext

1
MessageBox(hWnd,EditBox_Val, "Ausgabe", MB_OK);

funktioniert ja so nicht...

greetz

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

18

25.10.2007, 16:58

Was für ein Typ hat "EditBox_Val"? Und was soll das ominöse Codefragment da unten denn genau tun?
@D13_Dreinig

19

25.10.2007, 17:01

Wenn du die Variablen global, also außerhalb der DlgProc definiert hast, ist static wohl auch nicht fehlerrelevant.
Der MessageBox kannst du z.B. einen String (char) übergeben, den du vorher mit mit sprintf (sprintf_s) gefüllt hast:

char Meldung[100];
sprintf_s( Meldung, "Wert von neVariable %d", neVariable);
MessageBox(hWnd, Meldung, "Ausgabe", MB_OK);
fka tm

eugler

Frischling

  • »eugler« ist der Autor dieses Themas

Beiträge: 26

Beruf: Student

  • Private Nachricht senden

20

25.10.2007, 17:06

Zitat von »"David_pb"«

Was für ein Typ hat "EditBox_Val"? Und was soll das ominöse Codefragment da unten denn genau tun?


EditBox_Val ist als Integer initialisiert. Falls Du mit Codefragment
EditBox_Val = gl.iCol_R;
meinst - dies soll den wert der aus dem eingabefeld ( -> EditBox_Val) an eine Varaiable in meiner gl-klasse übergeben... hast du das gemeint?

danke, ich werde das mit den messageboxen gleich mal austesten.

greetz & thnx

Werbeanzeige