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

05.04.2004, 08:28

was sind eigentlich diese komischen resourcen?

ja wie gesagt hab ich das prob mit dem nebel ja in den griff bekommen wie man auch in dem topic nachlesen kann...allerdings hab ich jetzt mal versucht einfach das fenster in dem resourcen-editor ein bisschen zu verändern (nur die konstellation - keine IDs oder was dazugemacht oder weggenommen) aber sobald ich dass dann kompilieren will steht da "undefinierter bezeichner IDC_QUIT" ich bin mir aber 100% sicher dass die richtige resource.h eingebunden is...woran liegt das nu????

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

2

05.04.2004, 12:06

naja, um das zu verstehen muss man sich die Konstruktion von windows Programmen ankucken. Wenn du in einem Fenster etwas anklickst z.b. einen Button, auf dem steht "start", wir eine Nachricht -eine Windows Message durch das System geschickt. Wenn du z.B. einen Button anklickst wird eine WM_COMMAND Botschaft geschickt. Dann wird eine Identlifizierung dazu geschickt, welcher Button gedrückt wurde. Diese ID legst du fest, du als Programmierer muss ja wissen, welcher Button gedrückt wurde, um aus dieser Aktion ein Resultat zu machen.

Also wenn du die ID's der Button löscht, oder umbenennst, weiss ja "Davids Code" nicht mehr, was er nun tun soll, weil die ID die der Button hat nicht im Code vorgesehen ist:

ein Beispiel: du hast die ID unseres StartButtons (vorher IDC_START) in IDC_END umbennannt. IDC_START ist damit ja nicht mehr bekannt un der folgende Code kann nicht mehr kompiliert werden:
Diese Konstanden sind in der HeaderDatei deiner Resource z.B. resource.h deklariert.

z.B.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
INT_PTR CALLBACK DlgProc(HWND hDlg, unsigned int uiMsg, WPARAM WParam, LPARAM LParam)  {        
    switch(uiMsg)  {
    case WM_COMMAND:
        switch (LOWORD(WParam))  {
        case IDC_START:
            // hier starten wir etwas, wir führen eine Aktion durch
        break;
        case IDC_NOTHING:
            // diser Codeabschnitt wird nie erreicht, weil unsere Buttons keine ID mit dem Namen IDC_NOTHING haben
        break;
        }
    default:
        return false;
    };
    return true;
}


Diese ID's gibt es aber nicht nur bei Buttons, Windows schickt bei jedem Mist eine Meldung z.B. auchz beim Aktivieren des Fensters, beim Minimieren, maximieren u.s.w.

Sinn von den Resourcen ist, wichtige Daten für den Benutzer des Programmes "unsichtbar" zu machen. Es gibt ja auch externe Resourcen, wie zum Beispiel irgendwelche INI's oder Bilder. Diese könnte der Benutzer verändern (wenn sie nicht dekodiert sind), interne Resourcen nicht, weil diese mitcompiliert sind. ;D und so im eigentlichen Code mit enthalten.

@Sk!p -> das nächste mal aber bitte in ein anderes Forum ;)

3

11.04.2004, 18:03

ja also erst mal danke für die umfassende antwort :)

2: dass das ganze nicht funktioniert wenn man die titel der resourcen ändert is mir schon klar aber die fehlermeldung erscheint schon wenn ich die resource nur öffne und neu speichere

3: das problem hat durchaus bezug auf das buch also finde ich es is hier richtig aufgehoben

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

4

12.04.2004, 08:47

naja, um das Problem zu lösen würd ich folgendermaßen vorgehen:

als erstes, suchst du in deinem Programmtext, nach IDC_QUIT. Nim dafür am besten die suchen - Funktion ;) (STRG + F) bei den meisten Windows Programmen.

Dann kommentiere erstmal den Code mit dem IDC_QUIT aus.

Quellcode

1
2
3
4
5
6
7
...
/*
case IDC_QUIT:
  Close_Application();
break;
*/
...


Wenn kein IDC_QUIT in deinem Programmtext definiert ist:

... öffnest du die Headerdatei deiner Resource, also die .h Datei, die den Namen deiner Resource trägt. Dann schaust du ob da IDC_QUIT definiert ist. Wenn nicht, definierst du es erstmal.

Quellcode

1
#define IDC_QUIT 10000


Die Zahl dahinter ist unwichtig, es sollte nur nicht schon so eine exestieren.
Dann müsste es zumindest zu Kompilieren gehen...

Dann gehst du noch alle Objekte deiner Resourcenskript Datei durch (die mir .rc) Und suchst jedes Objekt durch, das eine IDC_QUIT besitzt, entfernst es. Wenn du nichts findest. Kann es esin, das du ein Obket besitzt, das so klein ist, das es nicht mehr angeziegt wird. Dann erstelle am besten noch mal eine neue Resource. Oder suche das Objekte in der ComboBox in der ToolBar, wo du z.B. buttons erstellen kannst.

:huhu:

5

13.04.2004, 16:45

öhm kleine peinliche frage...

wie komm ich eigentlich in den resourcen code? %-)

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

6

17.04.2004, 13:39

hi, ne so ne dumme Frage ist das doch gar nicht ;). Die ID's sind der Headerdatei der Resource. also z.B. resource.h

Der "CODE" steht in der eigentlichen .rc Datei, diese Datei wird, wenn du VS geöffnet hast glaich mit VS geöffnet. Wenn du die mit dem Notepad öffnest siehst du den "Code".

Aus alteren Quellen, wo noch Resourcen gescriptet wurden, hab ich auch ein kleines Berispiel. Dieses Beispiel funktioniert auf UNIX, DOS und evtl. MS-Windows (ich denke mal 3.1). Auf neueren System könnte es funktionieren, muss aber nicht.

Quellcode

1
2
3
4
5
6
7
Dialog1 DIALOG 30, 30, 215, 100 ; ... definiert den Dialog
STYLE WS_POPUP | WS_DLGFRAME ; ... Windows Style
{
  LTEXT "Das ist ein Label Text", 100, 12, 10, 150, 13
  EDITTEXT 110, 160, 9, 40; ... EditBox
  PUSHBUTTON "OK", IDOK, 50, 70, 40, 14
}


So in etwa sieht das dann aus, aber aus Effizizeins und Zeitgründen würd ich dir den editor empfehlen ;)

7

18.04.2004, 17:20

warum hab ich nur irgendwie das gefühl ich kann gar nix X-D

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

8

18.04.2004, 20:17

Ach Quatsch :-D

Den Code weiter unten benutzt heute sowieso doch kein Mensch mehr, aber man sollte schon mal wissen wo das herkommt

9

21.04.2004, 17:56

ja wenn ich mal ein richtig geiles spiel programmieren will...so mit dem gameplay von counter-strike und der grafik von unreal tournament 2k4 dann bin ich aber glaub ich noch ein winziges schrittchen (was man auch mit 99% bezeichnen kann) entfernt :D

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

10

21.04.2004, 18:09

naja, man sollte sich die Ziele nicht zu hoch stecken, ein Quake III Graphik dürfte auch erstmal ausreichen, daraus kann man ja dann in Richtung Doom III weiterentwickeln ;). Übrigens, die haben es auch nicht in einer Woche erlernt ;)

Werbeanzeige