xbpStatic ANSI/OEM Konvertierung verhindern?

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Kamaalan
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 31
Registriert: Do, 08. Jun 2006 15:04

Re: xbpStatic ANSI/OEM Konvertierung verhindern?

Beitrag von Kamaalan »

Danke für die Mühen. Ich werde es mit einem neuen Zeichensatz versuchen.
Gruß Matthias
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: xbpStatic ANSI/OEM Konvertierung verhindern?

Beitrag von brandelh »

Oder du nutzt GraStringAt() auf der Zeichenfläche des Static.
Ich meine dass hier keine automatische Konvertierung stattfindet, bin mir aber nicht sicher.
Gruß
Hubert
Benutzeravatar
mikehoffmann
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 133
Registriert: Mo, 21. Sep 2015 16:22
Hat sich bedankt: 1 Mal
Danksagung erhalten: 18 Mal

Re: xbpStatic ANSI/OEM Konvertierung verhindern?

Beitrag von mikehoffmann »

Hallo Matthias,
Ob Du WM_SETTEXT schickst oder SetWindowText aufrufst ist schnuppe, denn SetWindowText sorgt für ein Senden von WM_SETTEXT. Was Jimmy zum Unterschied von Controls und Windows schreibt stimmt nicht. Alle Controls sind auch Windows.
Wirklich spannened ist, was das XbpStatic in :caption stehen hat, wenn Du den Wert über's API gesetzt hast. Findet sich da "ALT" oder "NEU"?
Viele Grüße
Michael
Kamaalan
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 31
Registriert: Do, 08. Jun 2006 15:04

Re: xbpStatic ANSI/OEM Konvertierung verhindern?

Beitrag von Kamaalan »

Da steht immer noch ALT drin. Das Ergebnis von GetWindowText ist NEU. D.h. es passiert intern was ....
Gruß Matthias
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: xbpStatic ANSI/OEM Konvertierung verhindern?

Beitrag von AUGE_OHR »

mikehoffmann hat geschrieben: Mo, 24. Jul 2017 16:25 Was Jimmy zum Unterschied von Controls und Windows schreibt stimmt nicht. Alle Controls sind auch Windows.
klar sind alle XbParts Windows aber XbpStatic ist nicht von WC_STATIC wenn man sich das mit WinID oder Spy++ ansieht. deshalb "wirkt" WM_SETTEXT nicht bei XbpStatic :!:

also wenn du das behauptest dann stell doch ein Demo ein um es zu beweisen :boxing:
gruss by OHR
Jimmy
Benutzeravatar
mikehoffmann
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 133
Registriert: Mo, 21. Sep 2015 16:22
Hat sich bedankt: 1 Mal
Danksagung erhalten: 18 Mal

Re: xbpStatic ANSI/OEM Konvertierung verhindern?

Beitrag von mikehoffmann »

@Jimmy: Aus der MSDN-Doku: "If the target window is owned by the current process, SetWindowText causes a WM_SETTEXT message to be sent to the specified window or control." Das kannst Du mit dem Rhesus-Doppelpositiven Spion prüfen, indem Du SetWindowText() aufrufst und den Nachrichtenfluss an das Fenster anzapfst. Kommt WM_SETTEXT vorbei, haben die MSDN und ich recht.

@Matthias: Ich habe gehofft, dass das XbpStatic so konstruiert ist, dass es den mutmaßlich ererbten Windows-Textpuffer nutzt, den wir ja erfolgreich mit SetWindowText und GetWindowText gesetzt und gelesen haben und wie das üblich ist. Blöderweise ist dies wohl nicht der Fall. Einen Versuch war es wert.

Viele Grüße
Michael
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: xbpStatic ANSI/OEM Konvertierung verhindern?

Beitrag von AUGE_OHR »

mikehoffmann hat geschrieben: Di, 25. Jul 2017 8:30 @Jimmy: Aus der MSDN-Doku:
das würde ja auch alles für ein XbpStatic zutreffen ... WENN XbpStatic von WC_STATIC wäre :!:

ich ging ja nun auch davon aus und deshalb kam ich auf WM_SETTEXT was bei z.b. XbpSLE (WC_EDIT) funktioniert.
wie du inzwischen wohl auch festgestellt hast kommt man mit SetWindowText() bei XbpStatic nicht weiter, oder :?:
gruss by OHR
Jimmy
Benutzeravatar
mikehoffmann
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 133
Registriert: Mo, 21. Sep 2015 16:22
Hat sich bedankt: 1 Mal
Danksagung erhalten: 18 Mal

Re: xbpStatic ANSI/OEM Konvertierung verhindern?

Beitrag von mikehoffmann »

--- snip ---
das würde ja auch alles für ein XbpStatic zutreffen ... WENN XbpStatic von WC_STATIC wäre
--- snap ---

Nöh, das gilt für alle Fensterlein, weil DefWindowProc die WM_SETTEXT und WM_GETTEXT Messages behandelt. Siehe MSDN. Und das Ergebnis von Matthias' Tests zeigt ja auch, dass SetWindowText und GetWindowText funktionieren. Blöderweise wird dieser Text nicht angezeigt, weil nördlich des Polarkreises offensichtlich ein eigener Textpuffer eingerichtet wurde. Das ist höchst ungewöhnlich, aber dafür gibt es bestimmt Gründe. Und deswegen funktioniert mein vorgeschlagener Kniff leider nicht.

Das hat aber nichts mit einem Unterschied zwischen Controls und Windows oder dem Unterschied zwischen SetWindowText und SendMessage mit WM_SETTEXT zu tun.

Und selbst wenn XbpStatic von der Betriebssystemklasse WC_STATIC abgeleitet ist, was ich noch für sehr wahrscheinlich halte, kann XbpStatic seinen eigenen Textpuffer implementieren, der bei WM_PAINT angezeigt wird. Wie gesagt, normalerweise tut man das nicht, aber vielleicht gibt es dafür Gründe. z.B. solche, die mit Zeichensätzen zu tun haben.

Wenn es nicht gar zu grauslich aussieht, könnte man ja Edit Controls mit dem Read-Only-Style verwenden, wenn da SetWindowText funktioniert. Ich weiß nur nicht, ob das mit dem XbpSle möglich ist.
Kamaalan
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 31
Registriert: Do, 08. Jun 2006 15:04

Re: xbpStatic ANSI/OEM Konvertierung verhindern?

Beitrag von Kamaalan »

Hallo Zusammen,
danke für Eure Mühe. Der Weg mit einem eigenen passenden Zeichensatz war der einfachste.
Gruß Matthias
Antworten