menu mit *.rc date wird nicht angezeigt



  • ich auch.

    Ergebnis: funktioniert nicht!



  • da hast du auch keine Header mit den defines, bzw. "mymenu" besitzt keinen wert
    den der compiler identifizieren kann.
    Lese mal diesen FAQ-Beitrag so ab der mitte, verwendung von Resourcen, klappt
    beim Dev so wie es da steht, ich verwende diesen auch.
    Wenn doch mal dann was nicht klappt oder verstehst, dann Fragen, aber bitte mit Compiler-fehlermeldung, ist einfacher dann.



  • Es geht aber trotzdem. Man muss dann aber eben mymenu als String benutzen und nicht als ID. Ich habs ja getestet und bei mir wurde das Menü angezeigt.



  • Mic.. du bist geil^^.

    und über die Projekt-Optionen sollte
    sichergestellt werden das diese auch in die Kompilation einbezogen ist

    Project/Project Options/Files/mymenu.rc
    ->include in compilation

    Muss man des auch bei dem mfc++ einstellen?
    - weil es da auch nicht funktionierte



  • klappt nun auch mit mvc++.
    Aber kann es sein das diese *.h datei immer "resource.h" heißen muss?
    - weil wenn ich diese anders nenne, kommt eine fehlermeldung in der *.rc Datei:

    fatal error RC1004: unexpected end of file found



  • Hört sich eher nach einem Syntax-Fehler an 🙄



  • wieso funktioniert LoadMenu() nicht?:

    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)
    {
     static TCHAR szAppName[] = TEXT ("dasmenu") ;
         HWND         hwnd ;
         MSG          msg ;
         WNDCLASS     wndclass ;
    
         wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
         wndclass.lpfnWndProc   = WndProc ;
         wndclass.cbClsExtra    = 0 ;
         wndclass.cbWndExtra    = 0 ;
         wndclass.hInstance     = hInstance ;
         wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
         wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
         wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
         wndclass.lpszMenuName  = /*"mymenu"*/NULL;
         wndclass.lpszClassName = szAppName ;
    
         if (!RegisterClass (&wndclass))
         {    // UNICODE-Compilierung ist die einzige realistische Fehlermöglichkeit 
              MessageBox (NULL, TEXT ("Programm arbeitet mit Unicode und setzt Windows NT voraus!"), 
                          szAppName, MB_ICONERROR) ;
              return 0 ;
         }
    
          hwnd = CreateWindow (szAppName,                 // Name der Fensterklasse
                      TEXT ("Das erste echte Programm"),  // Fenstertitel
                      WS_OVERLAPPEDWINDOW,                // Fensterstil
                      CW_USEDEFAULT,                      // X-Position des Fensters
                      CW_USEDEFAULT,                      // Y-Position des Fensters
                      CW_USEDEFAULT,                      // Fensterbreite
                      CW_USEDEFAULT,                      // Fensterhöhe
                      NULL,                               // übergeordnetes Fenster
                      0,                               // Menü
                      hInstance,                          // Programm-Kopiezähler (Programm-ID)
                      NULL) ;                             // zusätzliche Parameter
    
         ShowWindow (hwnd, iCmdShow) ;
         UpdateWindow (hwnd) ;
    
    	 LoadMenu(hInstance,"mymenu");//<<<<<<<<<<<<<
         while (GetMessage (&msg, NULL, 0, 0))
         {
              TranslateMessage (&msg) ;
              DispatchMessage (&msg) ;
         }
         return msg.wParam ;
    }
    


  • wndclass.lpszMenuName  = "mymenu";
    

    müsste eigentlich funktionieren
    und loadmenu lässt du komplett weg.



  • ich will es aber mit loadmenu machen!
    -> viele wege führennach rom, nicht nur einer..wäre ja schlimm 😮



  • dann müsstest du beim dritt letzten parameter von createwindow dein loadmenu schreiben. (nicht getestet und weis auch nicht ob es funktioniert)



  • glaube kaum das es dahin kommt, da loadmenu für dynamisches zeugs da ist



  • SetMenu


Anmelden zum Antworten