fehlermeldung: fatal error RC1004: unexpected end of file found??????
-
hallo zusammen,
ich bin neu bei winapi. ich habe versucht ein beispielprojekt umzusetzten.
ich habe das ganze unten mal rein gestellt.
wenn ich das ganze nun laufen lassen möchte, erhalte ich folgenden fehler:
resource.h(18) : fatal error RC1004: unexpected end of file found
ichweiß da nicht weiter.
ich habe nun eine menu.cpp, eine menu.rc und eine resource.h.
wäre toll, wenn mir da jemand weiterhelfen könnte.gruß
marcohier mal der komplette code:
//Ressourcen-Skriptedatei *.rc
#include <windows.h>
#include "resource.h"/////////////////////////////////////////////////////////////////
//
// Menü
//IDR_MENU1 MENU
BEGIN
POPUP "Datei"
BEGIN
MENUITEM "Öffnen", ID_FILE_OPEN
MENUITEM "Speichern", ID_FILE_SAVE
MENUITEM "Ende", ID_FILE_EXIT
END
POPUP "Optionen"
BEGIN
POPUP "Optionen"
BEGIN
MENUITEM "Option&1", ID_OPTIONS_OPTIONS_OPTION1
MENUITEM "Option&2", ID_OPTIONS_OPTIONS_OPTION2
END
END
MENUITEM "Über", ID_ABOUT
END/////////////////////////////////////////////////////////////////
//
//Icon
//
ID_ICON ICON "goofy.ico"/////////////////////////////////////////////////////////////////
//
//Stringtabelle
//
STRINGTABLE
BEGIN
ID_STRING_OPEN, "Der Dialog Öffnen"
ID_STRING_SAVE, "Der Dialog Speichern"
ID_STRING_OPTION1, "Erste Option im Untermenü"
ID_STRING_OPTION2, "Zweite Option im Untermenü"
ID_STRING_ABOUT, "Ein Menü-Beispiel\nCoded by J.Wolf"
ENDDie Resource-Datei dürfte Ihnen noch aus
//resource.h - Headerdatei
#define ID_STRING_OPEN 1
#define ID_STRING_SAVE 2
#define ID_STRING_OPTION1 3
#define ID_STRING_OPTION2 4
#define ID_STRING_ABOUT 5#define IDR_MENU1 101
#define ID_ICON 111
#define ID_FILE_OPEN 40001
#define ID_FILE_SAVE 40002
#define ID_FILE_EXIT 40003
#define ID_OPTIONS_OPTIONS_OPTION1 40004
#define ID_OPTIONS_OPTIONS_OPTION2 40005
#define ID_ABOUT 65535#include <windows.h>
#include "resource.h"LPCSTR MainClassName = "Ein Menü-Beispiel";
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMsg,
WPARAM wParam, LPARAM lParam);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
WNDCLASSEX wc;
MSG wmsg;
HWND hWnd;wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(GetModuleHandle(NULL),
MAKEINTRESOURCE(ID_ICON));
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);
wc.lpszClassName = MainClassName;
wc.hIconSm = (HICON)LoadImage(GetModuleHandle(NULL),
MAKEINTRESOURCE(ID_ICON),
IMAGE_ICON, 16, 16, 0);if(!RegisterClassEx(&wc))
{
MessageBox(NULL, "Windows Registrations Fehler", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}hWnd = CreateWindowEx(WS_EX_CLIENTEDGE, MainClassName,
"Menü Beispiel",
WS_OVERLAPPEDWINDOW|WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT,
300,150,NULL,NULL,hInstance, NULL);if(hWnd == NULL)
{
MessageBox(NULL, "Fehler beim Erstellen des Fensters!",
"Error!", MB_ICONEXCLAMATION | MB_OK);
return 0;
}while(GetMessage(&wmsg,NULL,0,0))
{
TranslateMessage(&wmsg);
DispatchMessage(&wmsg);
}
return wmsg.wParam;
}LRESULT CALLBACK WndProc(HWND hWnd,UINT iMsg,
WPARAM wParam, LPARAM lParam)
{
char string[255];switch (iMsg)
{
case WM_CLOSE:
DestroyWindow(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case ID_FILE_OPEN:
LoadString(GetModuleHandle(NULL),ID_STRING_OPEN,
string, sizeof(string));
MessageBox(hWnd,string,
"Öffnen",MB_ICONINFORMATION);
break;
case ID_FILE_SAVE:
LoadString(GetModuleHandle(NULL),ID_STRING_SAVE,
string,sizeof(string));
MessageBox(hWnd,string,
"Speichern",MB_ICONINFORMATION);
break;
case ID_OPTIONS_OPTIONS_OPTION1:
LoadString(GetModuleHandle(NULL),ID_STRING_OPTION1,
string,sizeof(string));
MessageBox(hWnd,string,
"Option 1",MB_ICONINFORMATION);
break;
case ID_OPTIONS_OPTIONS_OPTION2:
LoadString(GetModuleHandle(NULL),ID_STRING_OPTION2,
string,sizeof(string));
MessageBox(hWnd,string,"Option 2",
MB_ICONINFORMATION);
break;
case ID_\1:
LoadString(GetModuleHandle(NULL),ID_STRING_ABOUT,
string,sizeof(string));
MessageBox(hWnd,string,"Über",MB_ICONINFORMATION);
break;
case ID_FILE_EXIT:
DestroyWindow(hWnd);
break;
}
break;
}
return DefWindowProc(hWnd,iMsg,wParam,lParam);
}
-
Marco P schrieb:
hier mal der komplette code:
Du sagst es selbst: Code dafür gibts die Code-Tags, direkt neben dem Quote-Tag. Aber weil du neu bist und nicht registriert sei dir verziehen
Deine Headerdatei sieht gut aus, aber ist das auch die, die du kompiliert hast? In der Resourcendatei steht ganz unten auch noch was, das dort nicht hingehört.
-
Hallo,
tut mir leid, das mit dem code.
das ist eigentlich alles das, was ich auch compiliert habe. ich habe die ein neus projekt gemacht, die dateien *.h, *.rc und *.cpp hinzugefügt. Lässt sich alles prima compilieren und der linker bringt dann eben die eine fehlermeldung.
kann man die *.rc datei einfach aus einer textdatei erstellen und dann speichern unter oder muss die gesondert compiliert werden oder so?
gruß
marc
-
Dieser Text steht am Ende deiner Ressourcedatei:
Marco P schrieb:
Die Resource-Datei dürfte Ihnen noch aus
Das muss weg. Achte darauf, dass die Ressourcedatei mit einer Leerzeile endet.
Marco P schrieb:
Lässt sich alles prima compilieren und der linker bringt dann eben die eine fehlermeldung.
Sicher nicht der Linker. Eher der Ressourcencompiler.
kann man die *.rc datei einfach aus einer textdatei erstellen und dann speichern unter oder muss die gesondert compiliert werden oder so?
Beides.
-
hallo,
der text
Die Resource-Datei dürfte Ihnen noch aus
ist nur beim kopieren mit hier rein gerutscht, in meiner datei steht er nicht.
die resourcedatei habe ich nun aus einer textdatei erstellt und am ende eine leerzeile gelassen. der fehler tritt leider immer noch auf.
sind denn die dateien wohl überhaupt richtig oder fehlt da irgendetwas? nicht, dass ich versuche das beispiel zu bearbeiten und das kann gar nicht laufen.gruß
-
Endet die Datei resource.h mit einer Leerzeile?
-
habe am ende der datei eine leerzeile eingefügt.
ich habe jetzt mal ein anderes beispiel versucht. da bekomme ich den gleich fehler.gibts hier vielleicht eine möglichkeit dateien hochzuladen? dann würde ich mal meine dateien *.h *.cpp und *.rc hochladen und es könnte vielleicht mal jemand anders testen, bos bei ihm läuft.
ich komme da nicht weiter.