bug of len() or winApi for chinese
Posted: Thu Dec 20, 2012 5:49 pm
pb6.1;winxp
Code: Select all
Procedure SelectEditorLine(EditorID.I, LineNumber.I)
StartOfLine = SendMessage_(GadgetID(EditorID), #EM_LINEINDEX, LineNumber, 0)
Selection.CHARRANGE\cpMin = StartOfLine
Selection.CHARRANGE\cpMax = StartOfLine + Len(GetGadgetItemText(EditorID, LineNumber)) ;+ 1;1是换行符
SendMessage_(GadgetID(EditorID), #EM_EXSETSEL, 0, @Selection)
EndOfLine=Selection.CHARRANGE\cpMax
EndProcedure
OpenWindow(0,0,0,300,200,"Edit Control VCenter",#WS_SYSMENU | #WS_CAPTION | 1)
EditorGadget(0,0,30,300,180,#ES_MULTILINE|#ES_CENTER )
AddGadgetItem(0,-1,"[02:08.92][00:45.07]我醉 一片朦胧zzz")
AddGadgetItem(0,-1,"[00:02.85]剑刀如梦-董贞zzz")
Debug Len("[02:08.92][00:45.07]我醉 一片朦胧zzz")
Debug Len("[00:02.85]剑刀如梦-董贞zzz")
SelectEditorLine(0,1)
Repeat
EventID.l = WaitWindowEvent()
Select EventID
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1