Italia
Foro

Unicode-Zeichen in CreateText

 
- Page 1 -



Julian
Schmidt
Ciao,
ich würde gerne ein Unicode-Zeichen (U+2192) in einem Static ausgeben.
Gibt es da irgendwelche Möglichkeiten?

LG

Julian57
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
02.04.2012  
 



« Dieser Beitrag wurde als Lösung gekennzeichnet. »


Julian
Schmidt
Ok, so funzt alles.
Danke IF. Du warst mir eine grande Aiuto.
 $H Messages.ph
CLS
Struct CREATESTRUCT = lpCreateParams&, hInstance&, hMenu&, hwndParent&, cy%, cx%, y%, x%, style&, lpszName&, lpszClass&, dwExStyle&
var id% = 1
Var static&=CreateW("Static","Das ist ein Static. \nHier sollen Unicode-Zeichen rein.",$50000000,10,10,width(%hwnd)-20,35,%hwnd,0,%hinstance)
Waitinput
SetText static&,chr$($2192)
External("USER32","SetWindowTextW",static&,utf("Test ")+chr$($92)+chr$($21)+utf(" Test"))
Waitinput
End

Proc UTF

    parameters text$
    declare b#
    Dim b#,2*len(text$)+2
    StringW b#,0 = text$
    text$ = Char$(b#,0,SizeOf(b#)-2)
    return text$

EndProc

Proc CreateW

    If %pCount > 10

        Parameters Class$,Name$,style&,x%,y%,dx%,dy%,pWnd&,pid%,hInst&,exstyle&

    Else

        Parameters Class$,Name$,style&,x%,y%,dx%,dy%,pWnd&,pid%,hInst&
        Var exstyle& = 0

    EndIf

    Class$ = UTF(Class$)
    Name$ = UTF(Name$)
    Var cs# = New(CREATESTRUCT)

    With cs#

        .lpCreateParams& = SizeOf(cs#)
        .hInstance& = hInst&
        .hMenu& = If(External("USER32","IsMenu",id%),id%,0)
        .hwndParent& = pWnd&
        .cy% = dy%
        .cx% = dx%
        .y% = y%
        .x% = x%
        .style& = style&
        .lpszName& = Addr(Name$)
        .lpszClass& = Addr(Class$)
        .dwExStyle& = exstyle&

    EndWith

    Var handle& = External("USER32","CreateWindowExW",exstyle&,Addr(Class$),Addr(Name$),style&,x%,y%,dx%,dy%,pWnd&,id%,hInst&,cs#)
    inc id%

    IfNot handle&

        Class$ = WinError$(%WinError)
        MessageBox("Es trat folgender Fehler auf:\n\n" + Class$,"F E H L E R !!!",4096)

    EndIf

    Dispose cs#
    Return handle&

EndProc

 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
02.04.2012  
 



Einfach ein Unicode-Static z.B. mit createWindowW anlegen.

Wenns nur um die Ausgabe geht dann hilft Dir vlt. auch DrawTextW oder ein HTMLWin.

Schau mal hier gibts eine CreateW-Proc von Nico:  [...] 
 
02.04.2012  
 




Julian
Schmidt
Es geht nicht nur um die Ausgabe, sondern ich möchte schon ein Static verwenden.
Das erstellen des Statics ist soweit ja einfach. Nur wie tue ich dann Unicode-Zeichen einfügen?
CLS
Var class$="Static"
Var title$="Das ist ein Static. \nHier sollen Unicode-Zeichen rein."
Var static&=External("USER32","CreateWindowExA",0,addr(class$),addr(title$),$50000000,10,10,width(%hwnd)-20,35,%hwnd,0,%hinstance,10000)
'Var static&=External("USER32","CreateWindowExW",0,addr(class$),addr(title$),$50000000,10,10,width(%hwnd)-20,35,%hwnd,0,%hinstance,10000)
Waitinput
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
02.04.2012  
 



Statt ein Ansi-Byte halt ein Word pro Zeichen und da XProfan-Strings binärsicher sind kannst Du einfach per chr$($08)+chr$($90) kombinieren.

Übrigens: UTF-8-Symbole-Kompilation:  [...] 
 
02.04.2012  
 




Julian
Schmidt
Wie meinst du das?
Beispiel?
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
02.04.2012  
 



Du schreibst U+2192 -

also probiere mal setText notAuniqueButCoolhandleOfAUnicodeStaticControlHandle&,chr$(2192) -

ich weiß jetzt nicht ob XProfan das dann schon von selbst korrekt abarbeitet und 2 Byte einfügt.
 
02.04.2012  
 




Julian
Schmidt
Anscheinend nicht...
CLS
Var class$="Static"
Var title$="Das ist ein Static. \nHier soll nachfolgend ein Unicode-Zeichen rein."
Var static&=External("USER32","CreateWindowExA",0,addr(class$),addr(title$),$50000000,10,10,width(%hwnd)-20,35,%hwnd,0,%hinstance,10000)
'Var static&=External("USER32","CreateWindowExW",0,addr(class$),addr(title$),$50000000,10,10,width(%hwnd)-20,35,%hwnd,0,%hinstance,10000)
Waitinput
SetText static&,chr$(2192)
Waitinput
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
02.04.2012  
 



Jo, gibt leider 1 statt 2 aus:
 {$cleq}
print len(chr$(256))
Waitinput

Dann kannst ja z.B. per:
SetText static&,chr$(hibyte($2192))+chr$(lobyte($2192))+"\z\z"
Dein Zeichen ansetzen aber irgendwie fehlt mir in Deinem Beispiel eine unicode-WndProc wie sie Nico vormacht.
 
02.04.2012  
 




Julian
Schmidt
Hi IF,
ich habs nun versucht mit Nico's CreateW umzusetzen.
Er scheint mir nun auch tatsächlich Unicode-Zeichen auszugeben, allerdings leider nicht das Zeichen das ich eigentlich haben wollte.
Ich habe mir mein Zeichen in der Windows eigenen Zeichentabelle ausgesucht. Ich dachte links unten sei der Unicode-Wert zu finden.
Wenn ich diesen Wert in meinen Prog. einsetzte kommt aber ein anderes Zeichen heraus.
Habe Io l' nicht den korrekten Unicode-Wert meines Zeichens, oder arbeitet mein Code nicht korrekt?


 $H Messages.ph
CLS
Struct CREATESTRUCT = lpCreateParams&, hInstance&, hMenu&, hwndParent&, cy%, cx%, y%, x%, style&, lpszName&, lpszClass&, dwExStyle&
var id% = 1
Var static&=CreateW("Static","Das ist ein Static. \nHier sollen Unicode-Zeichen rein.",$50000000,10,10,width(%hwnd)-20,35,%hwnd,0,%hinstance)
Waitinput
SetText static&,chr$($2192)
Waitinput
End

Proc HiByte

    Parameters word%
    Return word% >> 8

EndProc

Proc LoByte

    Parameters word%
    Return word% & $FF

EndProc

Proc UTF

    parameters text$
    declare b#
    Dim b#,2*len(text$)+2
    StringW b#,0 = text$
    text$ = Char$(b#,0,SizeOf(b#)-2)
    return text$

EndProc

Proc CreateW

    If %pCount > 10

        Parameters Class$,Name$,style&,x%,y%,dx%,dy%,pWnd&,pid%,hInst&,exstyle&

    Else

        Parameters Class$,Name$,style&,x%,y%,dx%,dy%,pWnd&,pid%,hInst&
        Var exstyle& = 0

    EndIf

    Class$ = UTF(Class$)
    Name$ = UTF(Name$)
    Var cs# = New(CREATESTRUCT)

    With cs#

        .lpCreateParams& = SizeOf(cs#)
        .hInstance& = hInst&
        .hMenu& = If(External("USER32","IsMenu",id%),id%,0)
        .hwndParent& = pWnd&
        .cy% = dy%
        .cx% = dx%
        .y% = y%
        .x% = x%
        .style& = style&
        .lpszName& = Addr(Name$)
        .lpszClass& = Addr(Class$)
        .dwExStyle& = exstyle&

    EndWith

    Var handle& = External("USER32","CreateWindowExW",exstyle&,Addr(Class$),Addr(Name$),style&,x%,y%,dx%,dy%,pWnd&,id%,hInst&,cs#)
    inc id%

    IfNot handle&

        Class$ = WinError$(%WinError)
        MessageBox("Es trat folgender Fehler auf:\n\n" + Class$,"F E H L E R !!!",4096)

    EndIf

    Dispose cs#
    Return handle&

EndProc


39 kB
Hochgeladen:02.04.2012
Downloadcounter179
Download
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
02.04.2012  
 



Hier schau so gehts:
 $H Messages.ph
CLS
Struct CREATESTRUCT = lpCreateParams&, hInstance&, hMenu&, hwndParent&, cy%, cx%, y%, x%, style&, lpszName&, lpszClass&, dwExStyle&
Var hUser& = ImportDLL("USER32","u_")
var id% = 1
Var static&=CreateW("Static","Das ist ein Static. \nHier sollen Unicode-Zeichen rein.",$50000000,10,10,width(%hwnd)-20,35,%hwnd,0,%hinstance)
Waitinput
declare s$
s$=chr$($92)+chr$($21)+"\z\z"
u_SetWindowTextW(static&,addr(s$))
Waitinput
FreeDLL hUser&
End

Proc UTF

    parameters text$
    declare b#
    Dim b#,2*len(text$)+2
    StringW b#,0 = text$
    text$ = Char$(b#,0,SizeOf(b#)-2)
    return text$

EndProc

Proc CreateW

    If %pCount > 10

        Parameters Class$,Name$,style&,x%,y%,dx%,dy%,pWnd&,pid%,hInst&,exstyle&

    Else

        Parameters Class$,Name$,style&,x%,y%,dx%,dy%,pWnd&,pid%,hInst&
        Var exstyle& = 0

    EndIf

    Class$ = UTF(Class$)
    Name$ = UTF(Name$)
    Var cs# = New(CREATESTRUCT)

    With cs#

        .lpCreateParams& = SizeOf(cs#)
        .hInstance& = hInst&
        .hMenu& = if(u_IsMenu(id%),id%,0)
        .hwndParent& = pWnd&
        .cy% = dy%
        .cx% = dx%
        .y% = y%
        .x% = x%
        .style& = style&
        .lpszName& = Addr(Name$)
        .lpszClass& = Addr(Class$)
        .dwExStyle& = exstyle&

    EndWith

    Var handle& = u_CreateWindowExW(exstyle&,Addr(Class$),Addr(Name$),style&,x%,y%,dx%,dy%,pWnd&,id%,hInst&,cs#)
    inc id%

    IfNot handle&

        Class$ = WinError$(%WinError)
        MessageBox("Es trat folgender Fehler auf:\n\n" + Class$,"F E H L E R !!!",4096)

    EndIf

    Dispose cs#
    Return handle&

EndProc

 
02.04.2012  
 




Julian
Schmidt
Und wie ist es, wenn ich das Zeichen mit anderen Strings kombinieren möchte?
 $H Messages.ph
CLS
Struct CREATESTRUCT = lpCreateParams&, hInstance&, hMenu&, hwndParent&, cy%, cx%, y%, x%, style&, lpszName&, lpszClass&, dwExStyle&
var id% = 1
Var static&=CreateW("Static","Das ist ein Static. \nHier sollen Unicode-Zeichen rein.",$50000000,10,10,width(%hwnd)-20,35,%hwnd,0,%hinstance)
Waitinput
SetText static&,chr$($2192)
External("USER32","SetWindowTextW",static&,"Test/z/z"+chr$($92)+chr$($21))+" \z\zTest"
Waitinput
End

Proc UTF

    parameters text$
    declare b#
    Dim b#,2*len(text$)+2
    StringW b#,0 = text$
    text$ = Char$(b#,0,SizeOf(b#)-2)
    return text$

EndProc

Proc CreateW

    If %pCount > 10

        Parameters Class$,Name$,style&,x%,y%,dx%,dy%,pWnd&,pid%,hInst&,exstyle&

    Else

        Parameters Class$,Name$,style&,x%,y%,dx%,dy%,pWnd&,pid%,hInst&
        Var exstyle& = 0

    EndIf

    Class$ = UTF(Class$)
    Name$ = UTF(Name$)
    Var cs# = New(CREATESTRUCT)

    With cs#

        .lpCreateParams& = SizeOf(cs#)
        .hInstance& = hInst&
        .hMenu& = If(External("USER32","IsMenu",id%),id%,0)
        .hwndParent& = pWnd&
        .cy% = dy%
        .cx% = dx%
        .y% = y%
        .x% = x%
        .style& = style&
        .lpszName& = Addr(Name$)
        .lpszClass& = Addr(Class$)
        .dwExStyle& = exstyle&

    EndWith

    Var handle& = External("USER32","CreateWindowExW",exstyle&,Addr(Class$),Addr(Name$),style&,x%,y%,dx%,dy%,pWnd&,id%,hInst&,cs#)
    inc id%

    IfNot handle&

        Class$ = WinError$(%WinError)
        MessageBox("Es trat folgender Fehler auf:\n\n" + Class$,"F E H L E R !!!",4096)

    EndIf

    Dispose cs#
    Return handle&

EndProc

 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
02.04.2012  
 



Like that?
External("USER32","SetWindowTextW",static&,"T\ze\zs\zt\z\z\z")

bzw.
s$=utf("Test")
External("USER32","SetWindowTextW",static&,addr(s$))

Zeichen hat halt 2 statt 1 Byte und String möchte statt nur mit \z (chr(0)) mit \z\z DoppelNull "nullterminiert" werden.
 
02.04.2012  
 




Answer


Topictitle, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

17.522 Views

Untitledvor 0 min.
E.T.14.01.2024
Sven Bader25.02.2021
Langer30.12.2020
Manfred Barei23.02.2020
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie