Wie erstelle ich ein Willkommen in einen Windows-Fenster??



  • Hi C++-Freunde!! 🙂

    Mich würde gerne interessieren, wie man ein Windows-Fenster erstellen kann.
    Aber nicht in Visual C++, sondern in einen ANSI C++-Compiler. Wie zum Beispiel
    Bloodshed Dev-C++.



  • Nachtfalke 2002 schrieb:

    Hi C++-Freunde!! 🙂

    Mich würde gerne interessieren, wie man ein Windows-Fenster erstellen kann.
    Aber nicht in Visual C++, sondern in einen ANSI C++-Compiler. Wie zum Beispiel
    Bloodshed Dev-C++.

    In ANSI-C++ machst das dann so:

    #include <iostream>
    int main()
    {
      std::cout << "jetzt machen wir ein Windows Fenster auf..." << std::endl;
      system("cmd");
      return 0;
    }
    

    Für alles andere benötigst du eine API die nicht in ANSI-C++ enthalten ist. Zum Beispiel MFC, WinAPI, GTK, Qt, etc.



  • @Descartes:
    seit wann ist denn "cmd" ISO C++?

    @Nachtfalke:
    Stanard C++ kennt keine Fenster, Threads, Sockets,... das alles ist Plattformabhaengig - du musst also die Funktionen deines Betriebssystems dafuer verwenden. Unter Windows eben die WinAPI oder MFC, VCl, wxWindows,...



  • @Shade Of Mine:
    Hier hab ich ein Quellcode zu Erstellung einer Blanko Windows-Fenster.
    Aber wie kann ich es so ändern, damit ich draus ein Willkommen machen
    kann??

    #include <windows.h>         // Headerdatei der Windows-API
    
    // Prototypen
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message,
         WPARAM wParam, LPARAM lParam);
    
    // Hauptfunktion
    int APIENTRY WinMain(
               HINSTANCE hInstance,
               HINSTANCE hPrevInstance,
               LPSTR lpCmdLine,
               int nCmdShow)
    {
       WNDCLASSEX wndclass;             // Fensterklasse wndclass
       HWND hWnd;                       // Handle auf Fenster
       MSG msg;                         // Windows-Nachricht
    
       // Um ein Fenster zu erzeugen müssen wir zunächst einen
       // neuen Fenstertyp definieren. Dazu legen wir mit Hilfe
       // der Struktur WNDCLASSEX zunächst alle Eigenschaften
       // des neuen Fensters fest
    
       wndclass.cbSize = sizeof(WNDCLASSEX);
       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) COLOR_WINDOW;
       wndclass.lpszMenuName = NULL;
       wndclass.lpszClassName = "FirstWin";
       wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    
       // Mit der Funktion RegisterClassEx übergeben wir die
       // Struktur nun an Windows (Fensterklasse registrieren)
    
       RegisterClassEx(&wndclass);
    
       // Mit einem Aufruf von CreateWindowEx erzeugen wir ein
       // neues Fenster unserer soeben registrierten Fensterklasse
       // CreateWindoeEx gibt einen Handle (Zugriffsnummer zur
       // Identifizierung) auf unser Fenster zurück
    
       hWnd = CreateWindowEx(
              WS_EX_CLIENTEDGE,
              "FirstWin",
              "Unser erstes Fenster",
              WS_OVERLAPPEDWINDOW,
              CW_USEDEFAULT,
              CW_USEDEFAULT,
              CW_USEDEFAULT,
              CW_USEDEFAULT,
              NULL,
              NULL,
              hInstance,
              NULL);
    
       ShowWindow(hWnd, nCmdShow);           // Fenster anzeigen
       UpdateWindow(hWnd);                   // und neuzeichnen
    
       // Windows-Programme reagieren auf Nachrichten, die
       // Windows sendet. Neben dem anlegen der Fenster hat
       // eine WinMain-Funktion eigentlich nur die Aufgabe,
       // diese Nachrichten bei Windows abzufrufen und an
       // die Fenster zu verteilen
    
       while(GetMessage(&msg, NULL, 0, 0))
       {
          TranslateMessage(&msg);
          DispatchMessage(&msg);
       }
    
       return msg.wParam;
    }
    
    // WndProc ist die Nachrichtenbehandlungsroutine unseres
    // Fenstertyps "FirstWin". Für das Aufrufen dieser Funktion
    // ist Windows verantwortlich!
    
    LRESULT CALLBACK WndProc(
               HWND hWnd,
               UINT message,
               WPARAM wParam,
               LPARAM lParam)
    {
       // In unserem ersten Programm interessiert uns nur die
       // Nachricht WM_DESTROY, die gesendet wird wenn das
       // Fenster geschlossen wurde
    
       switch(message)
       {
           case WM_DESTROY:
                PostQuitMessage(0);            // Programm beenden
                return 0;
       }
    
    return DefWindowProc(hWnd, message, wParam, lParam);
    }
    


  • Hier bist Du völlig verkehrt. Du bist in den Tempel des C++-ISO-Standards geraten. 😃
    Bezüglich Fenster siehe hier:
    http://www.henkessoft.de/api1.htm
    Da wirst Du fündig. 🙂
    Das geht alles mit dem Dev-C++ .


Anmelden zum Antworten