|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ProC++ Mini JLI'ler
Anmeldedatum: 27.04.2007 Beiträge: 11
Medaillen: Keine
|
Verfasst am: 20.08.2007, 20:19 Titel: Problem beim Resource Datei erstellen"error C2059 'cons |
|
|
Hallo erstmal!
Ich möchte mein WinAPI wissen erweitern, bzw aufbauen. Jetzt bin ich beim Erstellen von Resourcendateien angelangt, und da hörts dann auch schon auf.
Ich arbeite mit Code::Blocks, und(ja, ich..)habe den ResourceCompiler aus dem P-SDK in den Einstellungen angegeben.
Hier die Resource-Datei :
CPP: | #include <windows.h>
#include "resource.h"
IDD_DLG DIALOG 100,100,200,150
CAPTION "HALLO"
STYLE WS_POPUP|WS_SYSMENU|WS_VISIBLE
{
DEFPUSHBUTTON "Test" ,ID_FRAME,10,10,20,10
}
IDI_ICON ICON "f:\\programmieren\\Projekte\\WinAPI\\MyIcon.ico"
|
und hier die Resource-Headerdatei:
CPP: | #define IDD_DLG 27325
#define IDI_ICON 105
#define ID_FRAME 102
#define ID_FILLED 103
#define ID_FFRAME 104
|
und hier die Fehlermeldungen:
CPP: | (5) error C2059 :syntax error :'constant'
(9) error C2143 :syntax error :missing ";" before "{"
(9) error C2447 :"{":missing function header (old-style formal list)
(16)error C2059 :syntax error :'constant'
|
Ich könnte langsam ausrastn, weil mich bisher keine gegooglete Hilfe und auch die MSDN Hilfe nicht im geringsten voran gebracht hat....
[edit]
Ich habe eben gesehen, dass meine .exe aber das von mir erstellte Icon angenommen hat??? Habe zwar an den Einstellungen rumprobiert, aber nicht die leiseste Ahnung, wie ich das hinbekommen habe^^, und außerdem besteht das größte Problem : der ausbleibende Dialog ja immernoch ...hmpf
[/edit]
Schonmal im Voraus vielen Dank für Hilfe und Infos
MfG,
ProC++ |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 21.08.2007, 15:13 Titel: |
|
|
Die Blöcke in den Ressourcen-Dateien werden nicht per {} sondern per BEGIN und END gekennzeichnet.
window.h wird meines Wissens auch nicht (direkt?) eingebunden. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
ProC++ Mini JLI'ler
Anmeldedatum: 27.04.2007 Beiträge: 11
Medaillen: Keine
|
Verfasst am: 21.08.2007, 15:22 Titel: |
|
|
Erstmal vielen dank für die Antwort.
Aber sind in windows.h nicht die ganzen Resourcenconstanten definiert?
wie z.B. ICON CURSOR BITMAP DIALOG ??
Kann mich auch irren.....
das mit dem BEGIN und END hat schonmal den Fehler
CPP: | (9) error C2447 :"{":missing function header (old-style formal list?)
|
behoben. Ich Döschi...so war es da auch beschrieben .
Aber das HauptProblem, dass der Dialog-Bezeichner als 'constant' bemeckert wird, wurde dadurch leider nicht behoben.
Ich muss doch die Bezeichner in der .rc Datei vorher mit einem Zahlenwert definieren, oder nicht?
MfG
ProC++ |
|
Nach oben |
|
|
ProC++ Mini JLI'ler
Anmeldedatum: 27.04.2007 Beiträge: 11
Medaillen: Keine
|
Verfasst am: 21.08.2007, 19:04 Titel: |
|
|
Kann mir denn hier keiner weiterhelfen...ich bin am verzweifeln ... |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 22.08.2007, 01:06 Titel: |
|
|
Zunächst einmal brauchst du das Thema nicht pushen, wenn du innerhalb von 3,5 Stunden keine Antwort erhältst. Wir haben alle auch andere Dinge zu tun als 24/7 im Forum herumzuhängen
Ich bin mir mit der ganzen Sache nicht so sicher, weil ich bisher die Ressourcen immer mit einem Editor erstellt habe. Wenn ich in meine Ressourcendateien reinschau, dann wird dort nur die entsprechende Headerdatei und "afxres.h" eingebunden. Von windows.h keine Spur.
Ich weiß nicht, ob das dein Problem behebt, aber vllt. hilfts, wenn du anstatt DIALOG DIALOGEX nimmst.
Und ja, in der resource.h gibst du den Elementen IDs. Zeig den Code da vllt. mal. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
ProC++ Mini JLI'ler
Anmeldedatum: 27.04.2007 Beiträge: 11
Medaillen: Keine
|
Verfasst am: 22.08.2007, 15:37 Titel: |
|
|
Ja, sorry. war nunmal ungeduldig.... Außerdem wird man schon hibbelig, wenn auf einmal 3 Jahre alte Beiträge wieder aufgegriffen werden, aber sich das hier nichtmal jemand anschaut.
Also nicht übelnehmen, büdde.
So, mein Problem wurde soweit auch schon gebannt... ^^Man sollte nicht immer glauben, was einem Tutorials erzählen. Danach sollte ich nämlich die .rc Datei in die Main.cpp includen .... und mit windows.h hast du Recht... lieber aber n bisschen zuviel am anfang, als ein bisschen zu wenig und nur Verzweiflung .
So, soweit, sogut klappt auch alles, nur habe ich jetzt gleich die nächste Frage. Weiss nicht ob ich dafür n neues Thema erstellen sollte?
Auf jeden Fall soll der Dialog nach dem Klick auf einen Button erzeugt werden. Aber wenn ich nun den Button drücke, beendet sich auf einmal das Programm????
Hier CreateDialog:
CPP: | if(lParam==(LPARAM)hButtonRect)
{
hDlg=CreateDialog(g_hInstance,MAKEINTRESOURCE (IDD_DLG),hWnd, (DLGPROC)DlgProc);
}
|
Hier DialogProc:
CPP: | BOOL CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_INITDIALOG: MessageBox(0,"Hallo, Dialog","Dialog",MB_OK);
return (TRUE);
break;
case WM_DESTROY : EndDialog(hDlg,0);
break;
default: return DefDlgProc(hDlg,msg,wParam,lParam);
}
}
|
Oder muss der Dialog vorher bereiz erzeugt worden sein, und dann nur mit ShowWindow() angezeigt werden??....
Naja,
Greetz,
ProC++ |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 22.08.2007, 15:56 Titel: |
|
|
naja sowas könntest du eigtl. gut mit dem debugger rausfinden. Du setzt z.B. einen breakpoint in DlgProc an und kontrollierst dann alle Nachrichten die gesendet werden und bei welcher nachricht er abstürzt. Beim VC++Dbg machst du z.B. mit F9 den breakpoint, mit F5 startest du das Programm (im debug, nicht release modus) damit es am breakpoint anhält, dann kontrolierst du die nachricht und ggf. die Reaktion / Rückgabewert und dann drückst du erneut F5 um das Programm fortzuführen und es am nächsten Breakpoint wieder zu stoppen.
Gruß DXer |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|