SetWindowText



  • hi
    gibt es da alternativen?
    ich möchte ein zeichen auslesen, dass in chars zerlegen und bspweise im textfeld ausgeben als einziges bit.

    beispiel: das erste zeichen ist ein "=". (61)Dezimal, dieses byte möchte ich mir im Textfeld anzeigen lassen.

    thx



  • Meinst du, dass du den dezimalen ASCII-Code in deinem Textfeld anzeigen lassen willst? Das könntest du z.B. mit CString::Format machen (printf-Syntax).

    char c='=';
    CString str;
    str.Format("%d",c);  //jetzt sollte die 61 in deinem String stehen; den kannst du dann mit CString::GetBuffer an SetWindowText übergeben
    


  • ja schon mal gut...also eigentlich wollte ich das in meinem Textfeld: 0011 1101 steht 😛


  • Mod



  • Das hat mit der WinApi wenig zu tun. SetWindowText erwartet einen Text als String. Wie du den vorher mit ANSI-C oder anders bekommst, ist deine Sache. Frage weiter in den Unterforen ANSI-C oder C++.



  • ok ich frage mal anders:

    gibt es etwas ähnliches wie printf("%c", zeichen);
    das einfach das in den editor eingibt was ich möchte?

    beispiel ich habe einen char. 0011 1101 mit diesm wert

    wie kann ich mir den im Editor ausgeben lassen?

    mit SetWindowText (hFile, char), wird das ja nicht gehen da der zweite Parameter ja z.b LPCTSTR sein muss.



  • noPeil schrieb:

    gibt es etwas ähnliches wie printf("%c", zeichen);
    das einfach das in den editor eingibt was ich möchte?

    Nein, denn printf() kann nur dezimale, hexadezimale oder oktale Zahlen als String ausgeben.
    Eine Ausgabe von binären Zahlen ist mit printf() & Co. nicht möglich.

    Siehe "printf Type Field Characters": http://msdn.microsoft.com/en-us/library/hf4y5e3w.aspx

    Dir bleibt somit nichts anderes übrig, als aus dieser Zahl einen String mit '0'- und '1'-Zeichen zu bilden.
    Dazu kann Dir _ultoa() helfen.
    Oder natürlich auch selbst Bit für Bit ein Zeichen erzeugen.

    Und diesen String dann an SetWindowText() zu übergeben.

    Martin



  • ok dann muss ich das wohl so machen...vielen dank



  • stimmt es, dass ReadFile(hF,buffer,dwsize,&Read,NULL);

    byte für byte ausliest und in den "buffer" schreibt? wahrscheinlich schon!
    jetzt ist meine frage ob der buffer nur so lange gefüllt wird bis das erste "\0" erscheint?
    denn ich habe eine datei mit internen Strings die mit \0 abgeschlossen werden...
    bei mir erscheint also nicht die vollständige file, sondern nur ein sehr kurzer teil..
    weiß jemand woran das liegen kann?
    und evtl. wie ich das problem lösen kann?

    oder liegt es vlt an creatfile()

    normale textdateien können problemlos geöffnet werden.



  • Es liegt wahrscheinlich daran, dass du es falsch interpretierst.
    Die NULL-Zeichen werden eingelesen, wenn du diese aber bspw. in einer Zeichenkette speicherst, wird bei dem Versuch, diese auszugeben, natürlich nach dem ersten NULL-Zeichen abgebrochen.
    std::strings können diese Zeichen verwalten, wenn du also jeweils einen char aus der Datei liest, den string jeweils um diesen erweiterst (+=), und die Werte in einer Schleife (nicht mit c_str()) ausgibst, wirst du feststellen, dass ReadFile sehr wohl NULL-Zeichen einliest und danach auch nicht abbricht.



  • du hast recht gehabt, danke!

    gibt es denn eine möglichkeit mit setWindowText() einen Zeilenumbruch zu generieren?

    beispielsweise wenn in dem auszugebenden array ein bestimmtes zeichen enthalten ist? also mit \n klappt es schon mal nicht, da bei mir nur ein komisches zeichen im editor erscheint.

    mein problem liegt darin, das meine ausgelesene file einfach hintereinander erscheint, ich möchte sie gerne formatieren... ich wär euch dankbar für tipps, da ich bei google kaum was finde.



  • noPeil schrieb:

    Möglichkeit mit setWindowText() einen Zeilenumbruch zu generieren?

    '\n' alleine reicht nicht, was du brauchst, ist "\r\n"



  • ich gebe mit
    SetWindowText(hText, pszFileTextW) die zeichen die im array pszFileTextW stehen aus.

    würde es gehen nur einen Teil von pszFileTextW, also bspw. die ersten 100 adressen ausgeben und dann bei einem weitern aufruf dann z.b. adresse 101 bis 200 usw
    also quasi:

    if (a ==0){
    SetWindowText(hText,pszFileTextW [adresse 1-100])
    }

    if (a==1){
    SetWindowText(hText,pszFileTextW [adresse 101-200])
    }

    usw.... wenn ihr was wisst dann helft mir bitte, ich verzweifel schon mal wieder



  • was ist eigentlich der unterschied zwischen setwindowtext und textout, bzw. anderen ausgabefunktionen..
    wie entscheide ihr da?



  • SetWindowText():
    Ändert den Text in der Titelzeile des Fensters (non-client area).

    anderen ausgabefunktionen:
    Gibt Text im Arbeitsbereich des Fensters aus (client area).

    HTH,
    Martin


  • Mod

    noPeil schrieb:

    was ist eigentlich der unterschied zwischen setwindowtext und textout, bzw. anderen ausgabefunktionen..
    wie entscheide ihr da?

    SetWindowText speichert einen String in dem internen Stringstorage für das Fenster.
    Jeder Fensterklasse steht es frei diesen String so zu verwenden wie es das will. Bei Buttons, Edit, Popupwindows ist dies der Festertext.
    Bei anderen Klassen kan dieser Text was ganz anderes sein.

    TextOut ist eine DC Funktion und dient zur Ausgabe eines Textes in einen DC.

    Wie wäre es damit die MSDN zu lesen?

    BTW: Deine Umschalttaste ist immer noch kaputt. 🤡



  • danke!

    Wie wäre es damit die MSDN zu lesen?

    schlechte englischkenntnisse 😉



  • Oha, da hat Martin Richter natürlich recht.
    Meine Aussage davor ist natürlich auf das "klassissche" Windows-Fenster beschränkt.

    @noPeil:
    Ein Programmierer ohne Englischkenntnisse hat es im allgemeinen sehr schwer zu kämpfen. Alleine die offiziellen Microsoft-Infos werden nun mal in englisch erstellt.

    Alternative: Du kannst ja z.B. MSDN-Seiten mit Online-Übersetzern in halbwegs lesbare deutsche Sprache übersetzen lassen.

    Martin


  • Mod

    noPeil schrieb:

    danke!

    Wie wäre es damit die MSDN zu lesen?

    schlechte englischkenntnisse 😉

    Dann such Dir ein anderes Hobby oder einen anderen Beruf. 🕶
    Die Gründe hat die mmacher bereits geschrieben.

    BTW: Ich würde einem Azubi der bei uns Fachinformatiker werden will verpflichten in seiner Ausbildungszeit nebenbei Kurse bei der VHS zur Verbesserung seiner Englischkentnisse, wenn seine Kenntnisse nicht ausreichen.


Log in to reply