SDL frage



  • hallo.

    die frage schon in anderem forum gestellt, aber da weiss scheinbar keiner ne lösung, darum mein glück mal hier probieren.

    ich habe in meinem alten opengl programm die tastatur ereignisse per CALLBACK abgefragt.

    case WM_CHAR:
    		{
    			if ((wParam >= 0) && (wParam <= 255))
    			{
    				key.SetKeyCode((TCHAR)wParam);
    				return 0;
    			}
    			break;
    		}
    
    		case WM_KEYDOWN:
    		{
    			puts("a");
    			if ((wParam >= 0) && (wParam <= 255))
    			{
    				key.SetPressed(wParam);
    				key.SetKeyCodeDown(true);
    				return 0;
    			}
    			break;
    		}
    
    		case WM_KEYUP:
    		{
    			if ((wParam >= 0) && (wParam <= 255))
    			{
    				key.SetReleased(wParam);
    				key.SetKeyCodeDown(false);
    				return 0;
    			}
    			break;
    		}
    

    jetzt habe ich ein SDL programm was einmal wie eine consolen anwendung eine console anzeigt und meine SDL fenster für die grafik.
    die console ist super für ausgaben und sowas .. also das sollte wenn möglich bleiben.

    jetzt ist aber das problem das ich statt "main" eine "WinMain" brauche um CALLBACK nutzen zu können. geht das überhaupt in einer SDL anwendung, wenn ja wie? bzw wie bekomme ich den oberen CALLBACK inhalt in SDL konvertiert?
    ich brauch zum einen den wert des virtuellen keys .. das andere problem ist WM_CHAR, wo ich nicht weiss wie ich das in SDL hinbekommen soll. da es scheinbar dieses event dort nicht gibt.
    es gebe einen weg über die modifizierer. aber das funktioniert so nicht. da eng belegte tastaturen ganz andere tastenkombinaten haben und ich das somit nicht so abfragen kann.

    dieser code ist auch recht unnütz da ich den virtuellen tastencode benötige => key.SetPressed(wParam); und als WM_CHAR ist es auch total ungeeignet, da ich ob "1" oder "SHIFT+1" immer "1" bekomme und nie das "!"

    case SDL_KEYDOWN:
    								printf( " Name: %s\n", SDL_GetKeyName( event.key.keysym.sym));
    								break;
    

    falls jeamand schonmal das problem gelöst hat, wäre ich für hilfe dankbar 😉
    ich möchte praktisch eine 1:1 convertierung von meiner oberen CALLBACK 😎



  • jetzt ist aber das problem das ich statt "main" eine "WinMain" brauche um CALLBACK nutzen zu können.

    WTF hat eine Callback Funktion mit WinMain zu tun?

    Bye, TGGC \-/



  • nyaa~ bissle unglücklich ausgedrückt

    ist nur so das ich noch nie ein CreateWindowEx in einer "int main" gesehen habe.
    nur wie bekomme ich aus einer SDL anwendung nun das HWND um auf die LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); zuzugreifen zu können?



  • Hähh? Warum willst du denn diese Funktion aufrufen?

    Bye, TGGC \-/



  • eventuell verstehe ich nur bahnhof oder du 😉
    wo sonst fange ich das WM_CHAR etc ab?



  • Karsten schrieb:

    eventuell verstehe ich nur bahnhof oder du 😉
    wo sonst fange ich das WM_CHAR etc ab?

    Jedenfalls nicht indem Du diese Funktion aufrufst... 🤡



  • wo sonst fange ich das WM_CHAR etc ab?

    Gar nicht.

    Aber wie man nun mit der SDL eine normale Eingabe hinbekommt, weiß ich nicht. AFAIK hat die SDL da nichts und man müsste selbst händisch die Shift-Taste etc. abfragen. Nicht so schön.



  • Ah, von wegen.

    Guck dir dieses Beispiel an:
    http://sdldoc.csn.ul.ie/guideinputkeyboard.php#AEN373

    Man muss Unicode aktivieren, dann steht das in der KeyEvent-Struktur.



  • @DrGreenthumb

    wie garnicht? ich brauchs aber 😮

    und shift taste kann ich abfragen nur bringt mir das nicht wirklich viel da shift+taste im englischen wieder total woanders liegt. und selbst wenn nicht, die ganzen tastenkombis einzuarbeiten wäre echt mist aufgabe.



  • und shift taste kann ich abfragen nur bringt mir das nicht wirklich viel da shift+taste im englischen wieder total woanders liegt. und selbst wenn nicht, die ganzen tastenkombis einzuarbeiten wäre echt mist aufgabe.

    Ja genau. Sage ja, das kommt nicht gut 😉

    Aber guck dir meinen zweiten Post an. Das Beispiel, besonders die Ausgabe bei 'Unicode'...



  • Karsten schrieb:

    wie garnicht? ich brauchs aber 😮

    Das 'Gar nicht' war vor allem auf irgendwelches WinApi-Gedöns bezogen.



  • sorry war away 😉

    jo das klappt in der tat .. muss nur noch ne kleinigkeit verstehen dann sollte es funzen ... danke schön 😉


Anmelden zum Antworten