GUI außerhalb von Windows



  • Wie funktionieren GUIs auf anderen BS z.B. Linux? Auch mit Messages, Window-Handles usw. so ähnlich wie WinAPI oder ganz anders?



  • Das grundsätzliche Message-System ist überall gleich, nennt sich teilweise anders.

    Bei Windows liefen unter WinAPI die Nachrichten (messages) über die berühmte Nachrichtenpumpe:

    // Nachrichten-Schleife
    MSG msg;
    while (GetMessage (&msg, NULL, 0, 0))
    {
      TranslateMessage (&msg);
      DispatchMessage (&msg);
    }
    return msg.wParam;
    

    und

    // Windows-Nachrichten-Prozedur
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
      HDC hdc;
      PAINTSTRUCT ps;
    
      switch (message)
      {
      case WM_PAINT:
        hdc = BeginPaint (hwnd, &ps);
            TextOut (hdc, 20, 20, "Ich bin ein Fenster.", 20);
        EndPaint (hwnd, &ps);
      return 0;
    
      case WM_DESTROY:
        PostQuitMessage (0);
      return 0;
      }
    
      return DefWindowProc (hwnd, message, wParam, lParam);
    }
    

    http://www.henkessoft.de/C++/WinAPI/WinAPI Kapitel 1 bis 6/api4.htm



  • fensterler schrieb:

    Wie funktionieren GUIs auf anderen BS z.B. Linux? Auch mit Messages, Window-Handles usw. so ähnlich wie WinAPI oder ganz anders?

    Unter Linux wird in der Regel das X-Window-System benutzt. Das arbeitet mit Messages und Window-Handles. Es ist sogar strikt nach einem Client-Server-Prinzip aufgebaut (wobei das strikt nur noch bedingt stimmt). Aber X11 (zB xlib) programmiert man direkt eh nicht. Das ist viel zu aufwendig und man benutzt lieber ein GUI-Framework ala Qt oder GTK+.

    Unter OSX funktioniert das ganze mit Quartz.



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Andere GUIs - Qt, GTK+, wxWidgets verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Log in to reply