c winapi kein menu aus resource datei



  • Das icon funktioniert.wird angezeigt als exe icon.der code ist wie aus allen online tutorials.hab die syntax gecheckt.trotzdem kein menu.hat einer n code der funzt bitte


  • Mod

    Zeig mal was DU hast.
    Du kannst tausendmal sagen, dass alles richtig und gechecked wurde.

    Bei Deiner Orthographie Und Stil glaube ich Dir nicht. 😉



  • was n jetz ortographie.ne man bin newb.also check ma einer von euch wenn ihr zeit habt den code:

    unbnannt.c

    #include "main.h"
    
    /////////////////////////////////////////////////////////////////
    //
    // Menü Deutsch
    //
    
    IDR_MENU1 MENU
    BEGIN
        POPUP "Datei"
        BEGIN
            MENUITEM "Öffnen",           ID_FILE_OPEN
            MENUITEM "Speichern",        ID_FILE_SAVE   GRAYED
            MENUITEM SEPARATOR
            MENUITEM "Ende",             ID_FILE_EXIT
        END
        POPUP "Sprache"
        BEGIN
            POPUP "Sprachen"
            BEGIN
         MENUITEM "Deutsch",      ID_OPTIONS_OPTIONS_OPTION1  CHECKED
         MENUITEM "Englisch",     ID_OPTIONS_OPTIONS_OPTION2
            END
        END
        MENUITEM "Über",                 ID_ABOUT
    END
    
    /////////////////////////////////////////////////////////////////
    //
    // Menü Englisch
    //
    
    IDR_MENU2 MENU
    BEGIN
        POPUP "File"
        BEGIN
            MENUITEM "Open",             ID_FILE_OPEN
            MENUITEM "Save",             ID_FILE_SAVE   GRAYED
            MENUITEM SEPARATOR
            MENUITEM "Exit",             ID_FILE_EXIT
        END
        POPUP "Languages"
        BEGIN
            POPUP "Languages"
            BEGIN
         MENUITEM "German",       ID_OPTIONS_OPTIONS_OPTION1
         MENUITEM "English",      ID_OPTIONS_OPTIONS_OPTION2  CHECKED
            END
        END
        MENUITEM "About",                ID_ABOUT
    END
    
    /////////////////////////////////////////////////////////////////
    //
    //Icon
    //
    
    My_ICON              ICON        "console.ico"
    
    /////////////////////////////////////////////////////////////////
    //
    //Stringtabelle Deutsch
    //
    STRINGTABLE
    BEGIN
            ID_STRING_OPEN,      "Der Dialog Öffnen"
            ID_STRING_SAVE,      "Der Dialog Speichern"
            ID_STRING_ABOUT,     "Ein Menü-Beispiel\nCoded by J.Wolf"
    END
    
    /////////////////////////////////////////////////////////////////
    //
    //Stringtabelle Englisch
    //
    STRINGTABLE
    BEGIN
            ID_STRING_OPEN_E,      "The Dialog Open"
            ID_STRING_SAVE_E,      "The Dialog Save"
            ID_STRING_ABOUT_E,     "A Menu-Example\nCoded by J.Wolf"
    END
    

    resource.c

    #if defined(UNICODE) && !defined(_UNICODE)
        #define _UNICODE
    #elif defined(_UNICODE) && !defined(UNICODE)
        #define UNICODE
    #endif
    
    #include <windows.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    #include <main.h>
    
    LPCSTR MainClassName = "Ein Menü-Beispiel";
    
    LRESULT CALLBACK WndProc(HWND hWnd,UINT iMsg,HINSTANCE hInst,
                             WPARAM wParam, LPARAM lParam);
    
    //Globale Variable fuer Programm-Instanz
    HINSTANCE hInst;
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                       LPCSTR szCmdLine, int iCmdShow)
    {
       WNDCLASSEX wcex;
       MSG imsg;
       HWND hWnd;
    
       wcex.cbSize = sizeof(WNDCLASSEX);
       wcex.style = 0;
       wcex.lpfnWndProc = WndProc;
       wcex.cbClsExtra = 0;
       wcex.cbWndExtra = 0;
       wcex.hInstance = hInstance;
       wcex.hIcon = LoadIcon(GetModuleHandle(NULL),
                                    MAKEINTRESOURCE(MY_ICON));
       wcex.hCursor         = LoadCursor(NULL, IDC_ARROW);
       wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
       wcex.lpszMenuName  = MAKEINTRESOURCE(IDR_MENU1);
       wcex.lpszClassName = MainClassName;
       wcex.hIconSm         = (HICON)LoadImage(GetModuleHandle(NULL),
                                            MAKEINTRESOURCE(MY_ICON),
                                            IMAGE_ICON, 16, 16, 0);
    
       if(!RegisterClassEx(&wcex))
          {
           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);
    
    //globale Programm-Instanz initialisieren
    hInst = hInstance;
    
        if(hWnd == NULL)
        {
              MessageBox(NULL, "Fehler beim Erstellen des Fensters!",
              "Error!",        MB_ICONEXCLAMATION | MB_OK);
              return 0;
        }
    
    while(GetMessage(&imsg,NULL,0,0))
       {
          TranslateMessage(&imsg);
          DispatchMessage(&imsg);
       }
       return wmsg.wParam;
    }
    
    LRESULT CALLBACK WndProc(HWND hWnd,UINT iMsg,
                             WPARAM wParam, LPARAM lParam)
    {
       char string[255];
       HMENU hMenu = GetMenu(hWnd);
       UINT uState = GetMenuState(hMenu,
                                  ID_OPTIONS_OPTIONS_OPTION1,
                                  MF_BYCOMMAND);
    
    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:
                     if(uState & MFS_CHECKED){
                     LoadString(GetModuleHandle(NULL),
                                ID_STRING_OPEN,
                                string, sizeof(string));
                                }
                     else{
                     LoadString(GetModuleHandle(NULL),
                                ID_STRING_OPEN_E,
                                string, sizeof(string));
                     }
                     MessageBox(hWnd,string,
                                "Dialog",MB_ICONINFORMATION);
                     break;
                     case ID_FILE_SAVE:
                     if(uState & MFS_CHECKED){
                     LoadString(GetModuleHandle(NULL),
                                ID_STRING_SAVE,
                                string, sizeof(string));
                                }
                     else{
                     LoadString(GetModuleHandle(NULL),
                                ID_STRING_SAVE_E,
                                string, sizeof(string));
                     }
                     MessageBox(hWnd,string,
                                "Dialog",MB_ICONINFORMATION);
                     break;
                     case ID_OPTIONS_OPTIONS_OPTION1:
                   SetMenu(hWnd, LoadMenu(hInst,
                           MAKEINTRESOURCE(IDR_MENU1)));
                   break;
                   case ID_OPTIONS_OPTIONS_OPTION2:
                   SetMenu(hWnd, LoadMenu(hInst,
                           MAKEINTRESOURCE(IDR_MENU2)));
                  break;
                   case ID_\1:
                     if(uState & MFS_CHECKED){
                     LoadString(GetModuleHandle(NULL),
                                ID_STRING_ABOUT,
                                string, sizeof(string));
                                }
                     else{
                     LoadString(GetModuleHandle(NULL),
                                ID_STRING_ABOUT_E,
                                string, sizeof(string));
                     }
                   MessageBox(hWnd,string,"Dialog",
                              MB_ICONINFORMATION);
                   break;
                   case ID_FILE_EXIT:
                      DestroyWindow(hWnd);
                      break;
             }
            break;
          }
       return DefWindowProc(hWnd,iMsg,wParam,lParam);
    }
    

    main.h

    #include <windows.h>
    
    //Stringtabelle: Deutsch
    #define ID_STRING_OPEN                  1
    #define ID_STRING_SAVE                  2
    #define ID_STRING_ABOUT                 5
    //Stringtabelle: Englisch
    #define ID_STRING_OPEN_E                 6
    #define ID_STRING_SAVE_E                 7
    #define ID_STRING_ABOUT_E                8
    //Menü: Deutsch
    #define IDR_MENU1                       101
    //Menü: Englisch
    #define IDR_MENU2                       102
    
    #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
    

    icon wird als exe datei symbol gezeigt aber menu nicht.ich will bloss das endlich mal die sch... resourcendatei mal funktioniert.wie gesagt.icon wird angezeigt ,ist aber nicht im c code also muss der pc doch doch was erkennen.helt mir bitte



  • Lerne erstmal deinen Code vernünftig zu formatieren (ist keine Raketenwissenschaft). Dann liest es evtl. auch Einer.



  • code formatieren.was.scheiss drauf hab n menu das auf rc basis funktioniert in den examples im devcpp gefunden


Anmelden zum Antworten