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

1

20.12.2003, 12:15

Problem mit Nachrichtenbehandlung

Kann mir einer erklären, warum dies hier nicht funktioniert?!

Quellcode

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
    case TB_GMT_SELECTION:
            switch(iID)
            {
            case OM_ADAPTER_LIST:
                MainMenuEnumDeviceTypes(pGUI);
                MainMenuEnumVideoModes(pGUI);
                MainMenuEnumBackBufferFormats(pGUI);
                MainMenuEnumZStencilBufferFormats(pGUI);
                MainMenuEnumMultiSamplingTypes(pGUI);
                MainMenuEnumMultiSamplingQualities(pGUI);
                break;
            case OM_DEVICE_LIST:
                MainMenuEnumVideoModes(pGUI);
                MainMenuEnumBackBufferFormats(pGUI);
                MainMenuEnumZStencilBufferFormats(pGUI);
                MainMenuEnumMultiSamplingTypes(pGUI);
                MainMenuEnumMultiSamplingQualities(pGUI);
                break;
            case OM_VIDEOMODE_LIST:
                MainMenuEnumBackBufferFormats(pGUI);
                MainMenuEnumZStencilBufferFormats(pGUI);
                MainMenuEnumMultiSamplingTypes(pGUI);
                MainMenuEnumMultiSamplingQualities(pGUI);
                break;
            case OM_BACKBUFFER_LIST:
                MainMenuEnumZStencilBufferFormats(pGUI);
                MainMenuEnumMultiSamplingTypes(pGUI);
                MainMenuEnumMultiSamplingQualities(pGUI);
                break;
            case OM_ZSTENCILBUFFER_LIST:
                MainMenuEnumMultiSamplingTypes(pGUI);
                MainMenuEnumMultiSamplingQualities(pGUI);
                break;
            case OM_MULTISAMPLINGTYPE_LIST:
                MainMenuEnumMultiSamplingQualities(pGUI);
                break;
            }
        break;
    }


Das ganze befindet sich in einer Nachrichtenfunktion, die ansonsten auch einwandfrei funktioniert.
Die ganzen Funktionen wurden vorher in einer Load Funktion aufgerufen und dort verursachten sie keine fehler.
Achja die Funktion MainMenuEnumDeviceTypes kann ohne probleme aufgerufen werden, nur die anderen nicht. Der Fehler tritt auf, sobald ich das Programm starte, obwohl die Seite, auf der sich die Schaltflächen befinden garnicht angezeigt wird.

Fehlermeldung:
Die Anweisung "0x0040449d" verweist auf Speicher in "0x00000000". Der Vorgang
"read" konnte nicht auf den Speicher durchgeführt werden.

Edit: wie bekomm ich die Position eines angeklickten Elementes in einer Liste raus, GetCursor() liefert mir ja nur die id.
In a world without fences and walls - who needs windows and gates ?

http://www.Paid4Mailer.de/?refid=8422

NoName

Treue Seele

Beiträge: 118

Beruf: Student

  • Private Nachricht senden

2

20.12.2003, 13:41

1. Meines Wissens liefert SendMessage (Dialog, Item, CB_GETCURESL, 0, 0) die Position des ausgewählten Elementes in einer Liste.

2. Vielleicht hast du irgendwo einen Nullzeiger?

3. Der "Switch"-Block lässt sich auch vereinfachen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
case TB_GMT_SELECTION: 
         switch(iID) 
         { 
         case OM_ADAPTER_LIST: 
            MainMenuEnumDeviceTypes(pGUI); 
         case OM_DEVICE_LIST: 
            MainMenuEnumVideoModes(pGUI); 
         case OM_VIDEOMODE_LIST: 
            MainMenuEnumBackBufferFormats(pGUI); 
         case OM_BACKBUFFER_LIST: 
            MainMenuEnumZStencilBufferFormats(pGUI); 
         case OM_ZSTENCILBUFFER_LIST: 
            MainMenuEnumMultiSamplingTypes(pGUI); 
         case OM_MULTISAMPLINGTYPE_LIST: 
            MainMenuEnumMultiSamplingQualities(pGUI);
         } 
      break; 
   }

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

20.12.2003, 14:42

Zitat von »"NoName"«

1. Meines Wissens liefert SendMessage (Dialog, Item, CB_GETCURESL, 0, 0) die Position des ausgewählten Elementes in einer Liste.

Es geht aber hier um die TriBase-GUI-Klasse, nicht um WinAPI.
Die Methode heißt tbGUIList::GetEntryOrder.

Werbeanzeige