|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
SuiSa Mini JLI'ler
Anmeldedatum: 21.09.2005 Beiträge: 4
Medaillen: Keine
|
Verfasst am: 22.09.2005, 11:48 Titel: compilerfehler in directxclass |
|
|
so, ich hab noch ein paar dumme fragen. und ich dachte mir, damit ich das forum nicht für jede frage mit nem neuen thema zumülle, pack ich einfach alles in einen thread.
ich hab inzwischen versucht die directx-klasse nachzubasteln. leider kommen da immer noch fehlermeldungen, obwohl ich mich ganz eng ans buch gehalten hab. kann sein, dass es wieder nur son dummer tippfehler is, aber wenn dem so is, dann find ich ihn einfach nicht. vllt findet ihn ja einer von euch.
hier ist die directxgraphics.cpp:
CPP: | #include "Direct3DClass.h"
// Anwendungsgfenster erzeugen
HWND CreateMainWindow(HINSTANCE hInstance);
// Callback-Funktion zur Nachrichtenbehandlung
LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
// globale Variable für das Fenster-Handle
HWND hWnd = 0;
// Instanz der Klasse CDirect3D
CDirect3D Direct3D;
// Main-Funktion
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// Fenster erzeugen und Handle speichern
hWnd = CreateMainWindow(hInstance);
// Wenn der Rückgabewert 0 ist, ist ein Fehler aufgetreten
if(0 == hWnd)
{
MessageBox(0,"Fenster konnte nicht erzeugt werden","Fehler",MB_OK);
return -1;
}
if(!Direct3D.Init(hWnd))
{
// Fehler beim Initialisieren von D3D
return -1;
}
// Farbe die beim Löschen verwendet werden soll
Direct3D.SetClearColor(D3DCOLOR_XRGB(0,0,0xFF));
// In dieser Struktur werden Nachrichteninformationen gespeichert
MSG msg;
// Diese Schleife läuft so lange, bis die Nachricht WM_QUIT
// empfangen wird
while(GetMessage(&msg,NULL,0,0))
{
// Nachricht an die Callback-funktion senden
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// Rückgabewert an Windows
return 0;
}
// Fenster erzeugen
HWND CreateMainWindow(HINSTANCE hInstance)
{
WNDCLASSEX wndClass = {
sizeof(WNDCLASSEX), // Größe angeben
CS_DBLCLKS | CS_OWNDC | // Standardstile
CS_HREDRAW | CS_VREDRAW,
MessageHandler, // Callback-Funktion
0, // Zusätzliche Angaben
0, // nicht benötigt
hInstance, // Anwendungsinstanz
LoadIcon(NULL, IDI_WINLOGO), // Windows-Logo
LoadCursor(NULL, IDC_ARROW), // Normaler Cursor
(HBRUSH)GetStockObject(WHITE_BRUSH),// Weisser Pinsel
NULL, // kein Menü
"WindowClass", // Der Name der Klasse
LoadIcon(NULL, IDI_WINLOGO) // Windows-Logo
};
// Fensterklasse registrieren, damit sie von
// CreateWindowEx() verwendet werden kann
RegisterClassEx(&wndClass);
// Der Rückgabewert von CreateWindowEx() ist auch der
// Rückgabewert der Funktion
return CreateWindowEx(
NULL, // Ohne erweiterte Stile
"WindowClass", // Klassenname
"DirectXGraphics", // Fenstertitel
WS_OVERLAPPEDWINDOW | // Fenster
WS_VISIBLE, // Eigenschaften
0, 0, // Anfangsposition
SCR_WIDTH, SCR_HEIGHT, // Größe
NULL, // Handle des Elternfensters
NULL, // Handle des Menüs
hInstance, // Anwendungsinstanz
NULL); // nicht benötigt
}
// Diese Funktion wird von Windows aufgerufen, wenn eine Nachricht für das Programm vorliegt
LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
// Farbe für die Füllung des BackBuffers und den Text festlegen
D3DCOLOR ClearColor = D3DCOLOR_XRGB(0,0,0xFF);
// testen, um welche Nachricht es sich handelt
switch(msg)
{
// wenn das Fenster geschlossen wird, wird WM_QUIT gesendet,
// um das Programm zu beenden
case WM_DESTROY:
PostQuitMessage(0);
return 0;
break;
case WM_KEYDOWN:
switch(wParam)
{
// Wenn ESC gedrückt, Anwendung beenden
case VK_ESCAPE:
DestroyWindow(hWnd);
break;
}
break;
case WM_PAINT:
Direct3D.BeginScene();
Direct3D.DrawText("Hallo Direct3D",100,100,D3DCOLOR_XRGB(0xFF,0,0));
Direct3D.EndScene();
break;
}
// Wenn wir uns nicht um die Nachricht gekümmert haben,
// wird sie an die Standardnachrichtenverarbeitung von
// Windows weitergeleitet
return (DefWindowProc(hwnd, msg, wParam, lParam));
}
|
und hier die fehlermeldungen:
Code: |
Kompilierung läuft...
DirectXGraphics.cpp
S:\Projekte\DirectXGraphics\DirectXGraphics.cpp(87) : error C2143: Syntaxfehler : Fehlendes ')' vor ';'
S:\Projekte\DirectXGraphics\DirectXGraphics.cpp(87) : error C2660: 'CreateWindowExA' : Funktion akzeptiert keine 7 Parameter
S:\Projekte\DirectXGraphics\DirectXGraphics.cpp(87) : error C2143: Syntaxfehler : Fehlendes ';' vor ','
S:\Projekte\DirectXGraphics\DirectXGraphics.cpp(87) : error C2143: Syntaxfehler : Fehlendes ';' vor ','
S:\Projekte\DirectXGraphics\DirectXGraphics.cpp(91) : error C2059: Syntaxfehler : ')'
Fehler beim Ausführen von cl.exe.
DirectXGraphics.exe - 5 Fehler, 0 Warnung(en) |
(sry für die dumme formatierung, ich hoffe man kanns lesen )
btw: was macht die funktion ZeroMemory? da man ne adresse einer struktur und deren größe angibt, vernute ich, dass damit irgendwie speicherplatz zur verfügung gestellt wird. lieg ich da richtig?
[EDIT by AFE-GmdG]
Zuletzt bearbeitet von SuiSa am 01.10.2005, 11:40, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 22.09.2005, 12:13 Titel: Re: SuiSas Dumme-Fragen-Thread |
|
|
SuiSa hat Folgendes geschrieben: | btw: was macht die funktion ZeroMemory? da man ne adresse einer struktur und deren größe angibt, vernute ich, dass damit irgendwie speicherplatz zur verfügung gestellt wird. lieg ich da richtig? |
Patrick hat Recht, bitte editiere deinen Post und nutze bitte tags, dann kann man das auch lesen. Ansonsten resverivert ZeroMemory keinen Speicher sondern setzt den Speicher ab der übergebenen Adresse auf 0. Der zweite Parameter legt dabei fest wieviele Bytes aber der Adresse auf 0 gesetzt werden.
C. |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 22.09.2005, 14:39 Titel: |
|
|
und bitte bitte kein so dämlichen Namen. Wenns den wenigstens "Compilerfehler bei DirectX Klasse" wäre, aber sowas???
ZeroMemory sollte auch im Buch stehen, wahrscheinlich haste das irgendwo überlesen.
Und die Fehler sollten nun wirklich leicht zu lösen sein, wie man sieht haste zum Beispiel die Funktion falsch aufgerufen und Klammern vergessen also nix wildes. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 22.09.2005, 17:37 Titel: |
|
|
Mal ehrlich, also sorry wenn ich das sage, aber das ist nun echt lächerlich:
Dein Compiler sagt Dir folgendes:
S:\Projekte\DirectXGraphics\DirectXGraphics.cpp(87) : error C2660: 'CreateWindowExA' : Funktion akzeptiert keine 7 Parameter
Darin steht:
1. Die Datei wo der Fehler ist
2. Die Zeile wo der Fehler ist
3. Der Fehler ID-Code
4. Welche Funktion betroffen ist
5. Was nicht korrekt ist.
Denk 5cm voraus und du weißt was du zu tun hast. Achja: Solche "Dumme Fragen Thread"-Titel hasse ich. Schreib doch wenigstens "Fehlerausgabe beim Compilieren, komme nicht weiter"
Aber sowas? Jesus... _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 22.09.2005, 19:17 Titel: |
|
|
Patrick hat Folgendes geschrieben: | Mal ehrlich, also sorry wenn ich das sage, aber das ist nun echt lächerlich:
Dein Compiler sagt Dir folgendes:
S:\Projekte\DirectXGraphics\DirectXGraphics.cpp(87) : error C2660: 'CreateWindowExA' : Funktion akzeptiert keine 7 Parameter |
um ehrlich zu sein (ich geh mal davon aus, dass Zeile 87 der aufruf von CreateWindowEx ist) sehe ich da den fehler auf anhieb nicht. er übergibt keine 7 parameter, und ich finde auf anhieb auch keine groben syntax fehler, die den compiler zu solch einer aussage bringen könnten.
PS: Jeder macht mal fehler, aber muss man dann als anfänger direkt 4 standpauken auf einmal bekommen? Ich finde das ehrlich gesagt ziemlich abschreckend. |
|
Nach oben |
|
|
Blubb-Tec JLI'ler
Alter: 33 Anmeldedatum: 29.03.2005 Beiträge: 171 Wohnort: Düsseldorf Medaillen: Keine
|
Verfasst am: 23.09.2005, 11:55 Titel: |
|
|
mhh... also ich wollte sie nich anmeckern, nur mit syntax-highlighting sieht's gleich vieeel schöner aus
mmhmh... vll ne alte windows.h version, bei der die Funktion keine 7 parameter aktzeptierst? _________________ www.planlos.de |
|
Nach oben |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 23.09.2005, 14:05 Titel: |
|
|
Er übergibt genau 12 parameter, und wenn ich das gerade richtig vergleiche sollten die alle am richtigen ort sein.
das sieht mir nach einem unsichtbares-symbol-welches-der-compiler-nicht-kennt fehler aus.
SuiSa:
versuche doch einfach mal den funktionsaufruf, dort wo der fehelr angezeigt wird komplett selbst neu abzutippen. vielleicht hast du beim kopieren oder so ein zeichen mit kopiert, welches da nicht hin gehört (passiert selten, aber es kommt vor, hatten wir im off topic bereich letztens erst).
- xardias, denn die klügere Zahnbürste gibt nach. |
|
Nach oben |
|
|
SuiSa Mini JLI'ler
Anmeldedatum: 21.09.2005 Beiträge: 4
Medaillen: Keine
|
Verfasst am: 01.10.2005, 11:50 Titel: |
|
|
so, nach einer kleinen frustrationspause bin ich wieder da. hab das thema jetzt umbenannt. danke übrigens xardias, dass du mich verteidigst .
ich möchte nochmal anmerken dass der fehler tatsaechlich nicht so trivial war, hab ihn naemlich inzwischen entdeckt:
ich hab in der global.h die define-anweisungen versehentlich mit nem semikolon abgeschlossen. als ich die entfernt hatte, lief alles.
die fehlermeldungen hab ich uebrigens schon verstanden, es ist ja nich so dass ich sie mir net durchlese, bevor ich hier was poste, ich hab vorher wirklich lang vor dem code gesessen und gegruebelt. aber wie man sieht hat der compiler mich glatt an der falschen stelle suchen lassen. bitte seid nich gleich so fies, ich bin eben echt nochn anfaenger.
aber trotzdem danke fuer die hilfe |
|
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
|