Input-Box



  • KXII: Ich habe in meinem ersten Post geschrieben dass sich pure WinAPI dazu am Besten eignet, was gibts daran nicht zu verstehen?

    Und schau Dir mal TGGCs Signatur an, da steht was drinnen was mit "http://" beginnt, könnte das uU ein URL sein?



  • wer lesen kann ist klar im vorteil!



  • nman als tggc, ihr beide habt es nicht geschafft auf meine antwort SINNVOLL zu antworten. stattdessen sucht ihr euch einfach ein thema aus, so wie es euch gerade passt egal ob es was mit dem zu tun hat, was ich gerade vorher gesagt habe und fangt dann an hysterisch rumzuschreien!

    aber das kann ja mal vorkommen. es sei euch verziehen!

    grüßchen

    KXII



  • TGGC ist ein Trottel. Ignoriert ihn.



  • @flexer john

    soweit würde ich nicht gehen 🙂



  • kleine korrketur oben. es heisst "nman und tggc" nicht "nman als tggc"



  • Worauf sich Dein "wer lesen kann ist klar im vorteil!" bezieht kann ich beim besten Willen nicht nachvollziehen, den Vorwurf des "hysterisch herumschreien"s betrachte ich hingegen einfach als rhetorische Unbeholfenheit.
    Die Qualität des Forums leidet auch unter Leuten die dermaßen schlechte Lösungen für einfache Probleme posten wie das bei Dir der Fall war und dann andere Leute die keine fertigen Lösungen sondern generelle Hinweise geben, angreifen und sich damit brüsten DASS sie ja immerhin irgendwas gepostet haben.
    (Muss ich noch erwähnen dass ich keinen gesteigerten Wert darauf lege dass Du mir verzeihst?)

    Fireface: Ich bin einfach davon ausgegangen dass jemand der ein DirectX-Programm (was impliziert dass es ein Windows-Programm ist) ausreichend mit der WinAPI vertraut ist um zu wissen wie man sowas macht. Wenn Du nicht verstehst was mit "Verwende lieber die WinAPI dafür" gemeint ist dann frag nach und Dir wird geholfen werden.

    [ Dieser Beitrag wurde am 12.05.2003 um 21:52 Uhr von nman editiert. ]



  • Mir kommen wieder die Tränen, diesmal vor Lachen...



  • @fireface

    es gibt zwei arten der abfragen, die man häufig braucht.
    
    a)
    
    als erstes eine direkt-abfrage einer taste, die folgendermaßen benutzt wird:
    
    if (KeyPressed(DIK_UP)) MoveUp();
    if (KeyPressed(DIK_DOWN)) MoveDown();
    if (KeyPressed(DIK_LEFT)) MoveLeft();
    if (KeyPressed(DIK_RIGHT)) MoveRight();
    if (KeyPressed(DIK_ESCAPE)) Quit();
    
    ...
    
    hier ist es nicht nötig, alle 256 einträge durchzulaufen oder sowas ähnliches, wie du es beschrieben hast.
    
    "KeyPressed" ist folgendermaßen definiert:
    
    bool CDIDisplay::KeyPressed(unsigned char KeyCode)
    {
        return((Keyboardstate[KeyCode] & 0x80));
    }
    
    wobei du vorher mit
    
    m_DIKeyboardDevice->GetDeviceState(sizeof(DIKEYBSTATE),&Keyboardstate);
    
    "Keyboardstate" aktualisieren musst. "Keyboardstate" ist das array mit den 256 einträgen.
    
    b)
    
    die zweite abfrage ist die einer "textbox-abfrage", bei der alle eingegebenen zeichen hintereinander in eienn puffer geschrieben werden
    
    auch hier ist es nicht notwendig eine schleife zu programmieren, die alles abfragat und irgendwo abbricht (so wie du es beschrieben hast)
    
    hier musst du mit
    
    DWORD              diza=1; //1= wir wollen nur eine einzige taste abfragen
    DIDEVICEOBJECTDATA dizp[1];
    
    m_DIKeyboardDevice->GetDeviceData(sizeof(DIDEVICEOBJECTDATA),dizp,&diza,0);
    
    dir gepufferte daten von directinput holen, und keine "schnappschussdaten" wie bei KeyPressed.
    
    in diza steht dann, ob du eine taste bekommen hast. man kann auch mehrere tasten auf einmal abfangen.
    in meinem beispiel wird aber immer nur eine abgefragt, so dass dann auch immer nur eine einzige zurückgebene werden kann,
    falls eine im puffer ist!
    
    der folgende code ist nur ein sehr kleiner ausschnitt aus meiner engine. versuche damit zurecht zu kommen und lies dir
     die directx doku durch (und wenns sein muss 10 mal). wenn ich alles posten würde, dann wird es zu unübersichtlich.
    ausserdem bin auch noch nicht ganz fertig, und manche teile sind noch im "baustellenzustand". aber das prinzip
     sollte klar werden. wenn nicht dann frag nach.
    
        if (diza) //eine taste war im puffer und steht nun in dizp[0]
        {
            scancode=dizp[0].dwOfs;
            codetype=dizp[0].dwData;
    
            if (codetype & 0x80) //makecode = taste wurde gedrückt
            {
                if (KeyPressed(DIK_LSHIFT) ||  KeyPressed(DIK_RSHIFT))
                    shift=true;
                else
                    shift=false;
    
                if (KeyPressed(DIK_RALT))
                    alt=true;
                else
                    alt=false;
    
                //hier werden dann alle scancode's abgefragt, so wie ich es schon einmal oben beschrieben habe.
                switch (scancode) 
                {
                    case DIK_A:
                        if (shift) AddCharacterToBuffer('A'); else AddCharacterToBuffer('a');
                    case DIK_B:
                        if (shift) AddCharacterToBuffer('B'); else AddCharacterToBuffer('b');
                }
            }
        }
    
    natürlich kannst du nicht erwarten, dass das da oben so in dieser form kompilierbar ist :)
    


  • @tggc und nman

    oh je, oh je!

    tut mir echt leid, dass ihr euch so angegriffen fühlt.

    ich glaube kaum dass meine vorschläge von minderer qualität sind, nur weil ich nicht den vollständigen code meine engine poste!

    nman, du bist nicht mal in der lage zu erkennen, dass es überhaupt eine möglichkeit gibt, das problem mit directx zu lösen! du hast geschrieben:

    "Dazu gab es schon ein paar Beiträge, mit DirectInput ist das demnach auch gar nicht möglich, dazu verwendet man WinAPI."

    also sei nicht so vorlaut. ganz nebenbei sehe ich noch immer keinen code der zeigt, wie man mit der winapi gepufferte daten von der tastatur abfragt!



  • @nman und tggc

    ich habe keine lust mehr mich mit eurer sinnlosen diskussion zu beschäftigen. es ist ja schlisslich nicht das erste mal dass (zumindest) tggc solche schwachsinnigen diskussionen führt, die nur davon zeugen, wie eingeängt er doch in seiner kleinen bescheidenen wissenswelt ist und nicht erkennen kann, dass das problem eigentlich wo anders liegt. versucht euch doch mal mit den eigentlichen problemen zu beschäftigen und nicht immer nur recht zu haben, egal um welchen preis.

    winapi hin, winapi her, firefire wollte nur einen lösungsansatz, den habe ich gegeben und nebenbei erwähnt, dass ihr ihm nicht helfen könnt, mit dem was ihr sagt. dass ihr dann gleich so ausrastet ist echt schrecklich! akzeptiert diese wahrheit und/oder fangt endlich an zu helfen!

    [ Dieser Beitrag wurde am 12.05.2003 um 22:43 Uhr von KXII editiert. ]



  • Dieser Beitrag wurde gelöscht!


  • Original erstellt von KXII:
    blabla böser nman böser TGGC blabla

    Ich hab auch keine Lust mehr den Thread zuzuspammen, ich muss morgen arbeiten und "O Brother Where Art Thou" beginnt gerade, wenn Du Probleme mit mir hast dann ignoriere mich bitte, ich werde ebendas mit Dir tun.



  • Original erstellt von KXII:
    ich habe keine lust mehr mich mit eurer sinnlosen diskussion zu beschäftigen.

    *LOL*



  • Original erstellt von KXII:
    **@nman und tggc

    ich habe keine lust mehr mich mit eurer sinnlosen diskussion zu beschäftigen. es ist ja schlisslich nicht das erste mal dass (zumindest) tggc solche schwachsinnigen diskussionen führt, die nur davon zeugen, wie eingeängt er doch in seiner kleinen bescheidenen wissenswelt ist und nicht erkennen kann, dass das problem eigentlich wo anders liegt. versucht euch doch mal mit den eigentlichen problemen zu beschäftigen und nicht immer nur recht zu haben, egal um welchen preis.**

    Naja, am Anfang war die Disko ja nicht sinnlos. 🕶
    Und daß TGGC in "seiner Wissenswelt eingeengt" ist, glaube ich nun wirklich nicht. Allerdings liegt er in einem riesengroßen schmierigen Kessel aus Arroganz, aus dem er nur für kurze Zeit raussteigt und auch nur, wenn alle 9 (10) Planeten gerade eine Gerade bilden... 😉 (welch' Wortspiel)
    Aber normalerweise formt die Umgebung (Gesellschaft) einen (zumindest mit), und vielleicht wurde er einfach von zu vielen immer gleichen n00b-Fragen genervt. 😡
    Klar, jeder fängt mal an... 🙄
    Naja, vielleicht is' er auch einfach als kleiner Junge in den Zaubertrank gefallen...

    Also lasst die Ankackerei jetzt bleiben - die Sonne strahlt doch 😃 - oder schreibt mir rechtzeitig 'ne SMS, damit ich mitflamen kann... 😃 😉

    Cheers, da Sarge



  • @sgt.nukem

    von mir aus glaub ich alles über tggc. eins hat er aber bewiesen; er kann manchmal nicht das problem erkennen, und redet sinnloses zeug daher und wundert sich, warum sich andere darüber aufregen; und voila, und schon hat man die perfekte schwachsinnsdiskussion! (das ist die direkte folge einer eingeängten sichtweise, resultierend aus übertriebener ichbezogeneheit)

    als beispiel hier folgendes:

    tggc schrieb:

    "

    Original erstellt von KXII:
    @nman und tggc
    na ihr superhelden, dann sagt fireface doch mal ein paar stichwörter/funktionen die ihm behilflich sein könnten. immer diese rumprahlerei! wenn winapi soviel besser ist, dann postet doch mal code aus euren engines.

    Den Code den ich benutze, kannst du dir auf meiner HP runterladen, doch dazu müsste man ja erstmal so'n Superheld sein, das man einen Browser bedienen kann. Ich sag immer: Dumm stellen gilt nicht.

    "

    ich habe vorher kein wort darüber gesagt, dass ICH hilfe benötige, ich sagte nur, dass ihr (die superhelden) doch mal code posten und vorallem FIREFACE helfen solltet. aber nein, tggc ignoriert es einfach und fangt an mich anzugreifen, das ich doch nicht in der lage sei einen browser zu bedienen... LOL!

    mein gott, wie oft hat er schon von seinem tollen xgame sdk geschrieben? 100 oder 1000 mal? als ob ich ihn noch nie hier im forum gesehen hätte!

    ach ja... wenn jemand genervt ist, dann sollte er das nicht an seinen mitmenschen auslassen. sowas macht sich schlecht auf dauer.

    [ Dieser Beitrag wurde am 13.05.2003 um 13:27 Uhr von KXII editiert. ]



  • Original erstellt von KXII:
    **Den Code den ich benutze, kannst du dir auf meiner HP runterladen, doch dazu müsste man ja erstmal so'n Superheld sein, das man einen Browser bedienen kann. Ich sag immer: Dumm stellen gilt nicht.

    ich habe vorher kein wort darüber gesagt, dass ICH hilfe benötige, ich sagte nur, dass ihr (die superhelden) doch mal code posten und vorallem FIREFACE helfen solltet. aber nein, tggc ignoriert es einfach und fangt an mich anzugreifen, das ich doch nicht in der lage sei einen browser zu bedienen... LOL!**

    Yo, mein Gott. Er meinte wohl, FIREFACE solle sich seinen Code runterladen, um mal zu schauen, wie es andere machen (generell keine schlechte Idee - man muß das Rad ja nicht 1.000 Mal neu erfinden, man sollte es höchstens verbessern!).
    Warum sollte man auch, wenn man schon irgendwo was im Internet hat, nicht auch einfach einen Verweis darauf anbieten?? Dafür sind Hyperlinks doch nun mal da.

    Klar könnt' ich, statt auf ogre.sourceforge.net zu verweisen, den kompletten Source auch mal eben als Forum-Thread hier rein donnern, aber ist das Sinn der Sache?!?

    Man sollte lieber auf Tuts etc. verweisen.

    Wenn man weitergehende Fragen zu den Sources hat, kann man sie ja wieder reinstellen (die Fragen). Etc. pp.

    Was MICH wirklich nervt sind Dinge wie "RTFM - guck' in die MSDN" oder "In der MSDN steht's doch!" ohne explizite Angaben. Denn man keinen Peil hat, WONACH man da suchen soll, dann kann man sich in der 2-CD-MSDN sicher auch totsuchen...

    Tschökes, und nichts für ungut...

    Da Sarge



  • Tja, KX2 verträgt wohl einfach nicht das Echo. Aber was geb ich mich überhaupt mit solchen Leuten ab...



  • Original erstellt von TGGC:
    Aber was geb ich mich überhaupt mit solchen Leuten ab...

    Weil du ein Idiot bist der anderen nicht vermag zu helfen!



  • Such im MSDN nach ToAsciiEx(), das konvertiert ScanCodes mittels eines KeyboardLayout in ein WORD, was 1 oder 2 chars enthalten kann. Du musst allerdings noch auf Dead Keys z.b. bei ^ o (was zu ô wird) achten, da das ^ nicht ausgegeben werden sollte. Liefert dir die Funktion aber alles zurück und steht in der Beschreibung. Bei einer Eingabe von ^ l z.b. enthält der Rückgabewert 2 chars, dann solltest du auch beide hinzufügen, sonst gehen dir Eingaben verloren...


Anmelden zum Antworten