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

eugler

Frischling

  • »eugler« ist der Autor dieses Themas

Beiträge: 26

Beruf: Student

  • Private Nachricht senden

1

24.10.2007, 16:14

Status für CheckBox merken

Hi, nur ganz kurz. Ich habe eine DialogBox mit einer CheckBox. Funktioniert auch alles, allerdings sind gesetzte Häkchen nach nochmaligem Öffnen des Dialogs verschwunden. Wie kann ich denn den Status auch bei nochmaligem Öffnen beibehalten?

thnx & greetz

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

2

24.10.2007, 16:42

Den Checked Wert in ner boolschen Variable speichern und dann beim aufrufen des Dialogs setzen? Theoretisch sehr einfach, daher vermute ich, dass du bei was konkretem festhängst. Wo also?

eugler

Frischling

  • »eugler« ist der Autor dieses Themas

Beiträge: 26

Beruf: Student

  • Private Nachricht senden

3

24.10.2007, 16:49

Hey.. Ich glaube genau der Aufruf der DialogBox ist da mein Problem. Wie rufe ich denn die DialogBox auf, wenn ich möchte, das meine CheckBox einem vorher (z.b. durch boolsche variable) gesetzten zustand (als haker oder kein haken) entspricht? Leide glaub grad an Betriebsblindheit... :cry:

thnx & greetz

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

4

24.10.2007, 17:24

du musst sie dem dialog übergeben. am besten machst du das so:
- membervariable in der datei vom dialog erzeugen, meinetwegen m_bCheckOn (boolean)
- eine funktion, die Heist SetStartValues(bool bCheck), die dden paramterwert in die mebervar einträgt
- vor dem aufruf des dialogs die funktion aufrufen

musst natürlich auch dafür sorgen, dass der wert vom dilaog zurückkommen kann

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

5

24.10.2007, 17:26

@ das gurke: mir brennt das schon lange unter dem fingernägeln *schäm* wo wie was weshalb waurm weswegen hast du dieses ava? und vor allen woher hast du dass? hat das vileleicht tatsächlich was mit dem text bei jedem beitrag von dir zu tun?
es zermartet mir das hirn. die einzige parallele dazu ist dass es genauso abstrakt ist wie dein nick.

6

24.10.2007, 17:34

Bei der Initialisierung des Dialogs (z.B. bei WM_INITDIALOG)
je nach Wert deiner Booleschen Variable

SendMessage(HCONTROL, BM_SETCHECK, (WPARAM) BST_CHECKED, 0);

oder

SendMessage(HCONTROL, BM_SETCHECK, (WPARAM) BST_UNCHECKED, 0);

ausführen
fka tm

eugler

Frischling

  • »eugler« ist der Autor dieses Themas

Beiträge: 26

Beruf: Student

  • Private Nachricht senden

7

24.10.2007, 17:45

klappt - vielen dank!

Super, es klappt! Vielen Dank...ich hatte genau das gemacht, wie du, allerdings hab ich als versucht beim Aufruf des Dialogs (aus dem Menu) direkt den Wert zu setzen und nicht in der WM_InitDialog... war ja aber auch klar eigentlich...

habs dann so gelöst
CheckDlgButton(hWnd, IDC_CHECK1, BST_UNCHECKED);

Noch ne Frage: Bei den Radiobuttons geht das ganze ja sicher ähnlich, oder?
Hast Du eine Ahnung wie man bestimmte RadioButtons gruppieren kann?

greetz & thnx! :)

8

24.10.2007, 17:52

Na prima!
Bei Radiobuttons gehts genauso
Gruppieren kannst du die mit GROUPBOX in der Ressourcendatei (.rc)
Vor die Radiobuttons (BS_AUTORADIOBUTTON) setzen:
GROUPBOX "Gruppe", IDC_RADIOGROUP, x,y,w,h, WS_GROUP
fka tm

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

9

24.10.2007, 19:16

Zitat von »"TrommlBomml"«

@ das gurke: mir brennt das schon lange unter dem fingernägeln *schäm* wo wie was weshalb waurm weswegen hast du dieses ava? und vor allen woher hast du dass? hat das vileleicht tatsächlich was mit dem text bei jedem beitrag von dir zu tun?

"Avatar, Herr der Elemente - Buch 1 Kapitel 11 - Grabenkämpfe" ;)

Wei Jin & Jin Wei Rulez

eugler

Frischling

  • »eugler« ist der Autor dieses Themas

Beiträge: 26

Beruf: Student

  • Private Nachricht senden

10

25.10.2007, 13:23

hi, leider muss ich nochmal meinen code posten, denn irgendwie läufts doch nicht ganz rund. habe jetzt 2 checkboxen und leider beeinflusst der status der ersten immer den der zweiten... :( keine ahnung warum... sicher ist das nicht gut programmiert was ich da hab, aber denke es sollte laufen.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//Checkbox States

HWND    hCb1=NULL;
bool    cb1=TRUE;
int        state1;

HWND    hCb2=NULL;
bool    cb2=TRUE;
int        state2;

//Auszug aus dem DlgProc

switch(uMsg)
    {

    case WM_INITDIALOG:
            if(cb1==TRUE)
                CheckDlgButton(hWnd, IDC_CHECK1, BST_CHECKED);
            else if(cb1==FALSE)
                CheckDlgButton(hWnd, IDC_CHECK1, BST_UNCHECKED);
           
            if(cb2==TRUE)
                CheckDlgButton(hWnd, IDC_CHECK2, BST_CHECKED);
            else if(cb2==FALSE)
                CheckDlgButton(hWnd, IDC_CHECK2, BST_UNCHECKED);
           

        return TRUE;

    case WM_COMMAND:
        switch(LOWORD (wParam))
        {
        case IDC_CHECK1:
   
        //First get handle of checkbox by casting lParam to HWND

        hCb1 = (HWND)lParam;
        state1 = SendMessage(hCb1,BM_GETCHECK,0,0);

        if(state1 == BST_CHECKED)
        {
            //do something

            cb1=TRUE;
        }

        else if(state1 == BST_UNCHECKED)
        {
            //do something

            cb1=FALSE;
        }

        case IDC_CHECK2:
   
        //First get handle of checkbox by casting lParam to HWND

        hCb2 = (HWND)lParam;
        state2 = SendMessage(hCb2,BM_GETCHECK,0,0);

        if(state2 == BST_CHECKED)
        {
            //do something

            cb2=TRUE;
        }

        else if(state2 == BST_UNCHECKED)
        {
            //do something

            cb2=FALSE;
        }
        break;

Hat jemand eine vielleicht andere/geschicktere Lösung um sich die states zu merken, bzw eine idee, warum wenn der erste state angewählt wird, der zweite automatisch auch an ist?

thnx & greetz

Werbeanzeige