Forum | | | | Nico Madysa | allô Gemeinde!
Es dreht sich um folgenden Kode: KompilierenMarqueSéparation {$iq}
{MkStr$
nproc MkStr$
parameters s$,n&
var ns$=""
whileLoop n&
ns$=ns$+s$
wend
return ns$
endproc
{TToUTF
nproc TToUTF
parameters text$
var utf$ = MkStr$(" ",2 * len(text$))
MultiByteToWideChar(0,1,text$,-1,utf$,len(text$))
return utf$
endproc
{ControlW
nproc ControlW
parameters Class$,Name$,style&,x&,y&,dx&,dy&,pWnd&,pid&,hInst&,exstyle&
var cs& = Dim(40)
Long cs&, 0 = 40
Long cs&, 4 = hInst&
Long cs&, 8 = pid&
Long cs&,12 = pWnd&
Long cs&,16 = dx& * 65536 + dy&
Long cs&,20 = x& * 65536 + y&
Long cs&,24 = style&
Long cs&,28 = Addr(Name$)
Long cs&,32 = Addr(Class$)
Long cs&,36 = exstyle&
var handle& = CreateWindowExW(exstyle&,Class$,Name$,style&,x&,y&,dx&,dy&,pWnd&,pid&,hInst&,cs&)
Dispose(cs&)
return handle&
endproc
cls
Shell "CHARMAP"
var Font& = Create("Font","Times New Roman",32,0,0,0,0)
var a& = Control( "EDIT" ,"TzTz",1342242944,200, 5,200,35,%hWnd,1,%hInstance,$200)
var a& = Create("Edit",%hWnd,"ABCDEFGHI",200,5,200,35)
print WinError$(%WinError)
SetFont a&,Font&
var w& = ControlW(TToUTF("EDIT"),"ABCDEFGHI",1342242944,200,40,200,35,%hWnd,1,%hInstance,$200)
print WinError$(%WinError)
SetFont w&,Font&
whilenot IsKey(27)
waitinput
wend
DeleteObject Font&
class=s4 href='./../../funktionsreferenzen/XProfan/end/'>end
(nécessaire XPSE!)
Vereinfacht dit pouvoir qui kleine rien que un Éditer einmal per Créer et einmal avec CreateWindowExW trop erstellen. Erwartungsgemäß sollte cela obere Éditer daher seulement Ansizeichen drucken peut et cela untere so assez alles Vorstellbare.
qui erste billet gibt mir droite -- "ABCDEFGHI" wird dessus normal ausgegeben, unten volonté hingegen je deux Byte trop einem marque zusammengefasst -- Unikode arrêt.
qui Clou ist: Beide Edits peut chacun Art de marque darstellen; z.B. aussi cela Integralzeichen, qui typografischen Anführungszeichen, cela lächelnde Gesicht, qui deux Achtelnoten, greichische Buchstaben, quoi cela Herz begehrt.
cela Roland heimlich sur Unikodecontrols umgestiegen ist, peux je mir nich so droite présenter. Liegt es daher à eventuell seltsamen Windowseinstellungen? quoi venez chez euch raus?
cela Programme sollte juste encore qui Zeichentabelle ouvrir. Kopiert simple un paire exotische marque (Russisch, Hebräisch, quoi que + subj.) et guckt, si beide Editfelder vous annehmen.
je wäre pour Tests très reconnaissant.
Salut,
Nico |
| | | | |
| | | Funktion UTFToT fehlt. oO |
| | | | |
| | Dieter Zornow | Sollte on une Code pas seulement la fois selbst sur Lauffähigkeit testen, bevor on ihn ici reinstellt ? |
| | | Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 22.12.2009 ▲ |
| |
| | Nico Madysa | Alle Zeilen, qui m$ enthalten, peut auskommentiert volonté, là es um cet Variable oui gar pas allez.
Tricolore dessus korrigiert. je tippe mon Kodes grundsätzlich seulement im Editor qui Community et verändere vous là aussi öfters encore vite. |
| | | | |
| | | Funktioniert!
cela cela/qui Ctrl(s) interne Wide travailler, wundert mich pas - poser oui qui Messages cela Meiste breits fest bzw. quel Stringtyp trop verarbeiten ist. |
| | | | |
| | Nico Madysa | Hehe, Å ist ne...aucune Unikodezeichen.
mais je vois déjà, dass es pas mon faute ist. quoi mir problematisch ist: Rolands Cordes sommes meines Wissens normale Einbyteprozeichen-Stirngs. quoi serait ensuite passer, si je dans einem avec Créer() erzeugten Éditer, dire wir, cela Integralzeichen schreibe et qui l'affaire ensuite avec GetText$() auslese? je denke, je werde viel Amusement am Experimentieren avons, sowie je zum Programmieren viens. |
| | | | |
| | Dieter Zornow | chez mir funktioniert es également et beide Edits peut aussi exotische marque représenter. |
| | | Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 23.12.2009 ▲ |
| |
| | | Nico Madysa, Beitrag=55555, Zeitpunkt=23.12.2009
Rolands Cordes sommes meines Wissens normale Einbyteprozeichen-Stirngs.
Rolands (Delphi) Cordes sommes cela Ergebnis de z.B. GlobalAlloc(gPTR,8+charCount+1+x)+8, tu as à Stelle -8 une Referenzzähler et à Stelle -4 le nombre qui Byte. +1 pour x00 et +x pour aufrunden sur 4 teilbaren grenier dans 32-Bit-Apps bzw. 8 dans 64 bzw. je pour Registerbreite. oui c'est ca so habe je qui nativen Cordes aussi programmiert et suis là libre dans qui Gestaltung.
Nico Madysa, Beitrag=55555, Zeitpunkt=23.12.2009
quoi serait ensuite passer, si je dans einem avec Créer() erzeugten Éditer, dire wir, cela Integralzeichen schreibe et qui l'affaire ensuite avec GetText$() auslese?
Dein "String" ist seulement un Bereich fester grösse, entweder wird abgeschnitten ou bien erzeugst une Bereichsüberschreitung. si on Unicode sûrement de Ansi unterscheiden peux, ensuite pourrait on bestimmt aussi ne Automatik einbauen - pour cet automatischen Funktionen cette String ensuite mais pas plus binärsicher wäre. ^ ^ |
| | | | |
| | Nico Madysa | KompilierenMarqueSéparation {$iq}
{MkStr$
nproc MkStr$
parameters s$,n&
var ns$=""
whileLoop n&
ns$=ns$+s$
wend
return ns$
endproc
{TToUTF
nproc TToUTF
parameters text$
var utf$ = MkStr$(" ",2 * len(text$))
MultiByteToWideChar(0,1,text$,-1,utf$,len(text$))
return utf$
endproc
{UTFToT
nproc UTFToT
parameters utf$
var text$ = MkStr$(" ",len(utf$))
WideCharToMultiByte(0,0,utf$,-1,text$,len(utf$) / 2,0,0)
return text$
endproc
{SetTextW
nproc SetTextW
parameters h&,text$
return SendMessageW(h&,WM_SETTEXT,0,text$)
endproc
{GetTextW
nproc GetTextW
parameters h&
var text$ = MkStr$(" ",255)
SendMessageW(h&,WM_GETTEXT,255,text$)
return text$
endproc
{ControlW
nproc ControlW
parameters Class$,Name$,style&,x&,y&,dx&,dy&,pWnd&,pid&,hInst&,exstyle&
var cs& = Dim(40)
Long cs&, 0 = 40
Long cs&, 4 = hInst&
Long cs&, 8 = pid&
Long cs&,12 = pWnd&
Long cs&,16 = dx& << 16 + dy&
Long cs&,20 = x& << 16 + y&
Long cs&,24 = style&
Long cs&,28 = Addr(Name$)
Long cs&,32 = Addr(Class$)
Long cs&,36 = exstyle&
var handle& = CreateWindowExW(exstyle&,Class$,Name$,style&,x&,y&,dx&,dy&,pWnd&,pid&,hInst&,cs&)
Dispose(cs&)
return handle&
endproc
cls
Shell "CHARMAP"
var Font& = Create("Font","Times New Roman",32,0,0,0,0)
var a& = Create("Edit",%hWnd,"ABCDEFGHI",180,5,220,35)
print WinError$(%WinError)
SetFont a&,Font&
var b& = Create("Edit",%hWnd,"",180,40,220,35)
print WinError$(%WinError)
SetFont b&,Font&
var v& = ControlW(TToUTF("EDIT"),"ABCDEFGHI",1342242944,400,5,200,35,%hWnd,1,%hInstance,$200)
print WinError$(%WinError)
SetFont v&,Font&
var w& = ControlW(TToUTF("EDIT"),"ABCDEFGHI",1342242944,400,40,200,35,%hWnd,1,%hInstance,$200)
print WinError$(%WinError)
SetFont w&,Font&
whilenot IsKey(27)
waitinput
SetText b&,GetText$(a&)
SetText w&,GetText$(v&)
SetTextW(b&,GetTextW(a&))
SetTextW(w&,GetTextW(v&))
wend
Dele ct Font&
end
Potztausend, qui Edits réagir wirklich aufs le cheveu juste. qui einzige Unterschied liegt y, comment Je l' Text auslese. Benutze je qui API SendMessageA (alors cela herkömmliche xprofane Settext/GetText$), ensuite wird qui Unikode gehäckselt. Nehme je dagegen SendMessageW, ensuite wird chez beiden Edits alles richtig übertragen.
|
| | | | |
|
répondreOptions du sujet | 2.281 Views |
Themeninformationencet Thema hat 3 participant: |