Problem mit Exe(oder so)



  • moin zusammen,

    ich habe hier ein kleines Problem mit meinen Exe-Dateien.
    Also das compilern läuft ohne Probleme, keine einziger Fehlerund auch keine Warnung.
    Wenn ich die Exe jedoch starte, dann wird sie zwar in den Speicher geladen, ich bekomme aber nichts zu sehen. Sie läuft praktisch im Hintergrund.
    Könnte das vielleicht daran liegen, dass mein Compiler das ganze als Konsolen Anwendung ansieht, und es falsch kompilert?
    Glaub ich eher nicht, da ich das Projekt als Win32-Anwendung erstellt habe.
    Hier mal mein Code:

    #include <windows.h>
    #include "resource.h"
    
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)
    {
         static TCHAR szAppName[] = "Menu-Demo" ;
         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  = "MENUDEMO" ;
         wndclass.lpszClassName = "MENUDEMO" ;
    
         if (!RegisterClass (&wndclass)) return 0;
    
          hwnd = CreateWindow (szAppName,                 // Name der Fensterklasse
                      "Menu-Demo",                        // 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
                      NULL,                               // Menü
                      hInstance,                          // Programm-Kopiezähler (Programm-ID)
                      NULL) ;                             // zusätzliche Parameter
    
         ShowWindow (hwnd, iCmdShow) ;
         UpdateWindow (hwnd) ;
    
         while (GetMessage (&msg, NULL, 0, 0))
         {
              TranslateMessage (&msg) ;
              DispatchMessage (&msg) ;
         }
         return msg.wParam ;
    }
    
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
         HDC         hdc ;
    
         switch (message)
         {
    
         case WM_DESTROY:
              PostQuitMessage (0) ;
              return 0 ;
         }
         return DefWindowProc (hwnd, message, wParam, lParam) ;
    }
    

    Weiß jemand von euch Rat?
    Hatt jemand das gleiche Problem?

    PS: Das Programm soll lediglich ein Menü anzeigen!



  • die registrierte fensterklasse muss gleich sein
    [cpp]
    // ..
    wndclass.lpszClassName = szAppName ;
    // ..
    hwnd = CreateWindow (szAppName, // Name der Fensterklasse
    // ..
    [/cpp]



  • stimmt, das wars.
    Danke für die schnelle Antwort!!!


Anmelden zum Antworten