SDL2 + WinAPI sind merkwürdig - SDL2 + X11 sind erfolgreich "eingebettet" ( Programmierung C++ / C# )
Hallo,

ich möchte wissen, wie kann Half-Life mit Benutzeroberfläche ( GUI inside SDL2 / GLFW 3 ) einbetten ( embed ).

Ich kenne schon mit X11 unter SDL2 / GLFW3 - Silk.NET - Ich habe selbst gemacht und habe geschafft.

Aber ich möchte wissen wie kann ich mit WinForms oder WinAPI inseitig SDL2 einbettern.

Ich benutze C#
Ein Beispiel MessageBox.Show() in SDL2 und klappt nicht zum Einbetten ( Can't embed inside SDL2 )

SDL_SysWMinfo sdl_info = new SDL_SysWMinfo(); SDL_GetWindowWMInfo(sdL_window, ref sdl_info); IntPtr winhandle = sdl_info.info.win.window; IWin32Window win32Window = Control.FromHandle(winhandle); MessageBox.Show(win32Window, "Hello WinForms");
Und Bild sieht aus.
https://drive.google.com/drive/folders/1rQcv2eKUfeZxn6rDvrE-ymzik__Rz1Fb?usp=sharing

Und ich nutze SDL2-CS und WinForm von Dotnet 5.

Können Sie mir etwas helfen?
< >
Showing 1-7 of 7 comments
Die Hand Gottes Sep 5, 2021 @ 3:21pm 
und du glaubst das du dafür hier richtig bist
ob das einer weiß im richtigen Forum solltest du mal versuchen
Baltika_9 Sep 6, 2021 @ 5:30am 
nice
ᚺᛒᛖαrco Sep 6, 2021 @ 6:18am 
17+4 ?¿?
Bodo Sep 6, 2021 @ 7:15am 
Hi Jens,

hast du die Frage schon auf stackoverflow gepostet? Dort sind die wahren Freaks :)

Möchtest du, dass die MessageBox innerhalb des SDL-Fensters erscheint? (Und nicht außerhalb, wie im Screenshot zu sehen)

EDIT: Meinst du mit einbetten, dass die Koordinaten + Größe des SDL-Fensters die Koordinaten der MessageBox bestimmen?

Last edited by Bodo; Sep 6, 2021 @ 7:16am
DeafMan1983 Sep 6, 2021 @ 12:01pm 
Originally posted by Bodo:
Hi Jens,

hast du die Frage schon auf stackoverflow gepostet? Dort sind die wahren Freaks :)

Möchtest du, dass die MessageBox innerhalb des SDL-Fensters erscheint? (Und nicht außerhalb, wie im Screenshot zu sehen)

EDIT: Meinst du mit einbetten, dass die Koordinaten + Größe des SDL-Fensters die Koordinaten der MessageBox bestimmen?
Hmm gute Idee, werde ich mit StackOverflow versuchen - Wenn es nicht klappt.

Genau ich meine dass ich MessageBox inseitig im SDL2 wie habe ich unter Linux mit X11 / XLib gemacht. X11 hat kein Problem mit eingebettenem SDL2- oder GLFW3-Window und ich zeige euch YouTube Resizing X11's Window in SDL2/GLFW3 https://www.youtube.com/watch?v=UdIxTSchgeg

Aber ich habe Problem mit WinAPI. Ich habe mit WinForms versucht. Es klappt nicht wenn CreateWindowEx() im SDl2 oder GLFW3 einbetten sollte und es stürzt ab.

Muss ich genau achten, wenn WinAPI eigene wichtige Instanzen hInstance, hDisplayController ( hDC ) für hWnd liefern soll?

z.B. Sieh Screenshot:
https://drive.google.com/file/d/15t8fVlN84Ab-ggAaOkG55igygkMwNuHx/view?usp=sharing

Ist es richtig oder falsch? Ich verstehe nicht wie haben Spielentwickler SDL2 oder GLFW3 mit system-eigenen Benutzeroberflächen geschafft? Wie ähnliche MDI-Window als "New Game Dialog" oder "Option Dialog". oder uraltes Spiel Unreal Engine Tron..... mit helblauer Menüleiste, habt ihr erinnert? Steuerelementen sind echt funktionsfähig. Aber ich glaube nicht, dass jemand Steuerelementen selbst gebastelt hat und jemand mit Hilfe von system-enginen Steuerelementen geliefert hat. Wie Beispiel Blender hat mit WinAPI, X11 oder Cocoa als Steuerelementen geliefert. Oder Godot hat system-engine Inhalt ohne SDL2 oder GLFW3. Ich hoffe, dass ihr mich versteht, was meine ich "system-eigene Steuerelementen".

Ich dachte, dass sie manchmal nicht mit Renderer von SDL2 oder Hilfe mit Cairo oder GDI als Grafik-Aussicht für GLFW3 und SDL2 gemacht haben.

Wie ImGUI oder andere spezielle Nebenteil für SDL2 und GLFW3 und ich möchte wissen wie hat Valve Software geschafft, wenn sie mit Steam-Version von alter WON-Version umprogrammiert haben? Ich bin verzweifelt dass ich im Internet gesucht habe. Wenn ich nicht falsch bin. Wenn ich Half-Life SDK mit Steam-Version unter Github gesehen habe. Ist es richtig oder falsch mit VGUI ( Valve's Graphical Userinterface ) wie Half-Life SDK/utils/vgui//vgui_*.h aber ich habe SDL2-Teil nicht gefunden, wo ist SDL_GetWindowWMInfo() im Half-Life SDK Inhalt? Ist SDL_GetWindowWMInfo() wirklich im cl_dll-Inhalten oder?

Vielen Dank!
Last edited by DeafMan1983; Sep 6, 2021 @ 12:14pm
Bodo Sep 6, 2021 @ 12:17pm 
Ah, ich glaube ich verstehe. Es ist nicht möglich ein Child-Element in das SDL Fenster zu bekommen.

Habe ein bisschen gegoogelt: "sdl create child window"

Bei manchen steht dabei, dass mit SDL kein GUI möglich ist. Achtung: Die Beiträge sind 13 Jahre alt!
https://www.gamedev.net/forums/topic/515261-sdl-creating-a-child-window/

Vielleicht muss man sich da wirklich mit blitting auseinandersetzen. Habe dazu ein kleines Beispiel gefunden:
https://stackoverflow.com/questions/9469850/how-to-properly-use-sdl-blitsurface-with-sdl-creatergbsurface

Vielleicht liege ich auch komplett falsch. Habe bis zum Nachmittag noch nichts mit SDL zu tun gehabt :)

EDIT:
Nur um bei dem MessageBox-Beispiel zu bleiben:

Die SDL hat eine eigene MessageBox!

Habe in SDL_messagebox.h SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid); gefunden, im Kommentar:
* This function should be called on the thread that created the parent
* window, or on the main thread if the messagebox has no parent.
Last edited by Bodo; Sep 6, 2021 @ 12:27pm
DeafMan1983 Sep 6, 2021 @ 1:07pm 
Oh ich sehe richtig, dass du Child Steuerelemente unter SDL2 Window gesagt hast. Dass es nicht gut für Windows 10 ist. Ich finde doof dass Pinguin immer überheblich ist, Grund X11 hat kein Problem mit Child Steuerelementen. Darum ist X11/Xlib Sieger. Wie sieht VGUI aus? Wie kann ich VGUI in SDL2 Window einbinden? Dann werde ich auch Google suchen.

// EDIT Ich finde keine standalone vgui wenn ich mit SDL2 in C++ and Valve's vgui einbinden will. Aber es benötigt für hud.h Ich habe gerade gefunden Valve Developer Community aber liegt bisschen knapp aber ich möchte dass ich einfach erstellen will, ohne Half-Life oder Counter Strike?

// UPDATE:
Das ist tolle Neuigkeit für SDL2 mit Menü. Leider finde ich Sch**ß weil es nur "Szene-Wechsler" ist. Wie ähnliches klassisches Computerspiel wie Jazz Jackrabbit, Half-Life by Serria oder andere Scene-Menu-Switcher-Games
Schau mal ein Beispiel: https://gist.github.com/DeafMan1983/86934b03b701de37a39acb0163ce391a
Game, Option und Return.

Ich werde mich mit echten Steuerelementen als Child-Mode in SDL2 von Renderer + Texture + Surface basteln. Ich weiß dass es sehr kompliziert ist. Aber ich muss konzentrieren.
Last edited by DeafMan1983; Sep 8, 2021 @ 2:46am
< >
Showing 1-7 of 7 comments
Per page: 1530 50

Date Posted: Sep 5, 2021 @ 2:21pm
Posts: 7