How write SetGadgetCodepage(Gadget,Codepage,*string)

Just starting out? Need help? Post your questions and find answers here.
User avatar
gurj
Enthusiast
Enthusiast
Posts: 693
Joined: Thu Jan 22, 2009 3:48 am
Location: china
Contact:

How write SetGadgetCodepage(Gadget,Codepage,*string)

Post by gurj »

How write Procedure SetGadgetCodepage(Gadget,Codepage,*string) ?
How let a EditorGadget() work use ones

Code: Select all

 ?

[code]Procedure SetGadgetCodepage(Gadget,Codepage,*string)
;...
EndProcedure

*string = AllocateMemory(5000)
For a=32 To 255
 PokeA(*string+a-32,a):PokeA(*string+a-31,32)
Next
PokeU(*string+a,0)

Dim Codepage(6):Codepage(0)=437:Codepage(1)=850:Codepage(2)=863
Codepage(3)=932:Codepage(4)=936:Codepage(5)=950:Codepage(6)=1252

OpenWindow(0,0,0,500,450,"",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
ButtonGadget(0, 0, 0,200, 20, "change Codepage")
EditorGadget(1, 0, 30,500, 400,#PB_Editor_WordWrap)

Repeat:ev=WaitWindowEvent():Select ev
  Case #PB_Event_Gadget:eg=EventGadget()
   Select eg
    Case 0:SetGadgetCodepage(1,Codepage(n),*string)
     n+1:If n=7:n=0:EndIf
   EndSelect
   
  Case #PB_Event_CloseWindow:Break
EndSelect:ForEver
End
my pb for chinese:
http://ataorj.ys168.com
User avatar
gurj
Enthusiast
Enthusiast
Posts: 693
Joined: Thu Jan 22, 2009 3:48 am
Location: china
Contact:

Re: How write SetGadgetCodepage(Gadget,Codepage,*string)

Post by gurj »

ok,this:

Code: Select all

;SetGadgetCodepage
;by gurj
;http://www.purebasic.fr/english/viewtopic.php?f=13&t=69808

string.s=Space(5000)
For a=32 To 255
 PokeA(@string+a-32,a)
Next
PokeU(@string+a-32,0)

Dim Codepage(6):Codepage(0)=437:Codepage(1)=850:Codepage(2)=863
Codepage(3)=932:Codepage(4)=936:Codepage(5)=950:Codepage(6)=1252

OpenWindow(0,0,0,500,450,"",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
ButtonGadget(0, 0, 0,200, 20, "change Codepage")
eg1=EditorGadget(1, 0, 30,500, 400,#PB_Editor_WordWrap)
TextGadget(2, 210, 5,230, 20, "")

#ST_DEFAULT=0
#ST_KEEPUNDO=1
#ST_SELECTION=2
#ST_NEWCHARS=4
g.SETTEXTEX\flags=#ST_SELECTION

Repeat:ev=WaitWindowEvent():Select ev
  Case #PB_Event_Gadget:eg=EventGadget()
   Select eg
    Case 0:g\codepage=Codepage(n)
     SetGadgetText(1,""):SetGadgetText(2,""+Codepage(n))
     SendMessage_(eg1,#EM_SETTEXTEX,g,@string)
     n+1:If n=7:n=0:EndIf
   EndSelect
   
  Case #PB_Event_CloseWindow:Break
EndSelect:ForEver
End
my pb for chinese:
http://ataorj.ys168.com
User avatar
gurj
Enthusiast
Enthusiast
Posts: 693
Joined: Thu Jan 22, 2009 3:48 am
Location: china
Contact:

Re: How write SetGadgetCodepage(Gadget,Codepage,*string)

Post by gurj »

Remarks
===========

#EM_SETTEXTEX:

The EM_SETTEXTEX message combines the functionality of WM_SETTEXT and EM_REPLACESEL and adds the ability to set text using a code page and to use either RTF rich text or plain text.

----------------
g.SETTEXTEX:

The SETTEXTEX structure specifies which code page (if any) to use in setting text, whether the text replaces all the text in the control or just the selection, and whether the undo state is to be preserved.

g\codepage
The code page used to translate the text to Unicode. If codepage is 1200 (Unicode code page), no translation is done. If codepage is CP_ACP, the system code page is used.
===========
so,GadgetText will is Unicode
my pb for chinese:
http://ataorj.ys168.com
Post Reply