Ressource Datei geht nicht



  • Hi!
    Also ich bin jetzt ganz neu bei WinApi und hänge gerade am Fenstermenü fest...
    also hab halt meine cpp datei, fürs Fenster und dann die ressource.h und dann meine menu.rc ...
    in meiner menu.rc hab ich folgendes geschrieben:

    #include <windows.h>
    #include "resource.h"
    
    /////////////////////////////////////////////////////////////////
    //
    // Menü
    //
    
    IDR_MENU1 MENU
    BEGIN
        POPUP "Datei"
        BEGIN
            MENUITEM "Öffnen" ,        ID_FILE_OPEN
        END
        POPUP "Optionen"
        BEGIN
            POPUP "Optionen"
            BEGIN
                MENUITEM "Option1",    IP_FILE_OPTION1
            END
        END
    END
    

    Hab dann noch die Datei zum Projekt hinzugefügt und wollte compilen, aber dann kam der Fehler, dass in Zeile 13 ein Syntaxfehler wäre...in meinem Tut steht, der Syntax ist "Ressource Namen, Idenfikationsnummer"...in meinen Augen passt das da oben also, aber woran liegts?
    Weiß jemand Rat?

    PS: Kann mir noch jemand erklären, warum beim ersten Menüpunkt nur POPUP "Datei" geschrieben werden muss und bei jedem weiteren Menüpunkt

    POPUP "Optionen"
    BEGIN
        POPUP "Optionen"
    


  • Ah hat sich erledigt...kommt im übernächsten Kapitel vom tutorial 😛



  • Hm...den obigen Fehler konnt ich jetzt durchs tutorial beseitigen, aber iregendwie klappts trotzdem nicht...
    hier mal meine Dateien:
    main.cpp:

    #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);
    }
    

    resource.h:

    //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
    

    menu.rc:

    //main.rc - Ressourcen-Skriptdatei
    
    #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
    //
    //Sollte Sie dieses oder ein anderes Icon zur Verfügung haben,
    //entfernen Sie bitte die Auskommentierung.
    //
    //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"
    END
    

    Weil meine net funktioniert haben, hab ich mal genau die ausm tutorial genommen...alle 3 dateien sind zum Projekt hinzugefügt!
    Aber wenn ich jetzt compile kommt folgender fehler:
    resource.rc Zeile 12: Syntax Error!

    aber resource.rc hab ich ja garnit geschrieben 😕
    Oder erzeugts die automatisch? Bzw. muss ich die selber noch verändern?
    Hier der Code der resource.rc:

    #include "resource.h"
    
    DLG_MAIN DIALOGEX 6, 5, 194, 106
    
    CAPTION "Code::Blocks Template Dialog App"
    
    FONT 8, "MS Sans Serif", 0, 0, 1
    
    STYLE 0x10CE0804
    
    BEGIN
      CONTROL "&Test", IDC_BTN_TEST, "Button", 0x10010000, 138,  5, 46, 15
      CONTROL "&Quit", IDC_BTN_QUIT, "Button", 0x10010000, 138, 29, 46, 15
    END
    

    Hoffe ihr könnts mir erklären !



  • Weiß keiner Rat? 😞



  • Naja hat sich von selbst gelöst...lag am Compiler...hatte Code::Blocks und bin jetzt aber auf dev umgestiegen und da gings dann auf einmal 😛



  • Warum zurück auf eine veralterte und nicht mehr zeitgemäße IDE?
    Probier doch einfach mal die Express Edition von Visual Studio. Umsonst und meiner Meinung nach weitaus besser geeignet für WinAPI-Entwicklung.
    Näheres nebst Installationsanleitung: http://www.c-plusplus.net/forum/viewtopic-var-t-is-143003.html


Anmelden zum Antworten