Posts: 19
Threads: 6
Joined: Feb 2005
I tried to add a two line text in a richedit control.
This works
A$="123" + CHR$(13)
A$=A$+"456"
This doesn't work
A$="123" + CHR$(13)+"456"
Aren't they equivalent?
Posts: 3,279
Threads: 170
Joined: Nov 2003
You could try being more specific when you say "this doesn't work.". Error messages, if any, are most appreciated.
I'd knock on wood, but my desk is particle board.
Posts: 19
Threads: 6
Joined: Feb 2005
OK the first code has the version
A$="123" + CHR$(13)
A$=A$+"456"
And the second code has the version
A$="123" + CHR$(13)+"456"
They produce different outputs to the RICHEDIT control
Quote: DEFINT a-z
OPTION explicit
OPTION PRIVATE
'$include once:'win\kernel32.bi'
'$include once:'win\user32.bi'
'$include once:'win\gdi32.bi'
'$INCLUDE :'win\COMMCTRL32.bi'
DIM SHARED hInstance AS long
DIM SHARED hwndREdit1 AS long
DIM SHARED hwndPB AS long
#DEFINE CreateWindow(a,b,c,d,e,f,g,h,i,j,k) CreateWindowEx(0,a,b,c,d,e,f,g,h,i,j,k)
DECLARE FUNCTION wndproc (BYVAL hwnd AS LONG, _
BYVAL msg AS LONG, _
BYVAL wparam AS LONG, _
BYVAL lparam AS LONG,) AS INTEGER
DECLARE FUNCTION WinMain(BYVAL hinstance AS LONG, _
BYVAL hprevinstance AS LONG, _
lpcmdline AS STRING, _
BYVAL nCmdShow AS INTEGER) AS INTEGER
END WinMain( GetModuleHandle(0), 0, COMMAND$, SW_NORMAL )
FUNCTION wndproc (BYVAL hwnd AS LONG, _
BYVAL msg AS LONG, _
BYVAL wparam AS LONG, _
BYVAL lparam AS LONG,) AS INTEGER
wndproc=0
SELECT CASE msg
CASE WM_COMMAND
CASE WM_CREATE
LoadLibrary("Riched32.dll")
DIM reclassname AS STRING
DIM A$
A$="123" + CHR$(13)
A$=A$+"456"
reclassname="RICHEDIT"
hwndREdit1 = createwindowex(WS_EX_CLIENTEDGE,reclassname,A$,WS_CHILD or WS_CLIPSIBLINGS or WS_VISIBLE or WS_HSCROLL or WS_VSCROLL or ES_MULTILINE or ES_AUTOVSCROLL or ES_AUTOHSCROLL or ES_WANTRETURN,_
10,10,200,150,hwnd,null,hInstance,null)
'hwndPB = CreateWindowEx(WS_EX_CLIENTEDGE,PROGRESS_CLASS,NULL, WS_CHILD or WS_VISIBLE,50,50,100,100,hwnd,null,hInstance,null)
CASE wm_close: destroywindow(hwnd)
CASE wm_destroy: postquitmessage 0
CASE ELSE: wndproc=defwindowproc(hwnd,msg,wparam,lparam)
END SELECT
END FUNCTION
FUNCTION WinMain(BYVAL hinstance AS LONG, _
BYVAL hprevInstance AS LONG, _
lpcommandline AS STRING, _
BYVAL ncmdshow AS INTEGER) AS INTEGER
DIM wc AS wndclassex
DIM hwnd AS LONG
DIM msg AS msg
DIM gszclassname AS STRING
gszclassname="myWindowClass"
wc.cbsize=LEN(wndclassex)
wc.style=0
wc.lpfnwndproc=@wndproc
wc.cbclsextra=0
wc.cbwndextra=0
wc.hinstance=hinstance
wc.hicon=loadicon(0,IDI_APPLICATION)
wc.hcursor=loadcursor(0,IDC_ARROW)
wc.hbrbackground=GetStockObject( GRAY_BRUSH )
wc.lpszmenuname=0
wc.lpszclassname=STRPTR(gszclassname)
wc.hiconsm=loadicon(0,IDI_APPLICATION)
IF registerclassex(wc)=0 THEN
'messagebox 0,"window registration failed","error",MB_ICONEXCLAMATION OR MB_OK
winmain=0
END 0
ELSE
'messagebox 0,"window registration sucsessful","woot",MB_ICONEXCLAMATION OR MB_OK
END IF
hwnd = createwindow(gszclassname ,_
"My RichEdit 1.0" ,_
WS_OVERLAPPEDWINDOW ,_
CW_USEDEFAULT ,_
CW_USEDEFAULT ,_
230 ,_
250 ,_
0 ,_
CreateMenu() ,_
hinstance ,_
0)
IF ( hwnd=0 ) THEN
messagebox 0,"window creation failed","error",MB_ICONEXCLAMATION OR MB_OK
winmain=0
EXIT FUNCTION
END IF
showwindow(hwnd,ncmdshow)
updatewindow hwnd
WHILE getmessage(msg,0,0,0)>0
translatemessage(msg)
dispatchmessage(msg)
WEND
winmain=msg.wparam
END FUNCTION
2nd
Quote:DEFINT a-z
OPTION explicit
OPTION PRIVATE
'$include once:'win\kernel32.bi'
'$include once:'win\user32.bi'
'$include once:'win\gdi32.bi'
'$INCLUDE :'win\COMMCTRL32.bi'
DIM SHARED hInstance AS long
DIM SHARED hwndREdit1 AS long
DIM SHARED hwndPB AS long
#DEFINE CreateWindow(a,b,c,d,e,f,g,h,i,j,k) CreateWindowEx(0,a,b,c,d,e,f,g,h,i,j,k)
DECLARE FUNCTION wndproc (BYVAL hwnd AS LONG, _
BYVAL msg AS LONG, _
BYVAL wparam AS LONG, _
BYVAL lparam AS LONG,) AS INTEGER
DECLARE FUNCTION WinMain(BYVAL hinstance AS LONG, _
BYVAL hprevinstance AS LONG, _
lpcmdline AS STRING, _
BYVAL nCmdShow AS INTEGER) AS INTEGER
END WinMain( GetModuleHandle(0), 0, COMMAND$, SW_NORMAL )
FUNCTION wndproc (BYVAL hwnd AS LONG, _
BYVAL msg AS LONG, _
BYVAL wparam AS LONG, _
BYVAL lparam AS LONG,) AS INTEGER
wndproc=0
SELECT CASE msg
CASE WM_COMMAND
CASE WM_CREATE
LoadLibrary("Riched32.dll")
DIM reclassname AS STRING
DIM A$
A$="123" + CHR$(13)+"456"
reclassname="RICHEDIT"
hwndREdit1 = createwindowex(WS_EX_CLIENTEDGE,reclassname,A$,WS_CHILD or WS_CLIPSIBLINGS or WS_VISIBLE or WS_HSCROLL or WS_VSCROLL or ES_MULTILINE or ES_AUTOVSCROLL or ES_AUTOHSCROLL or ES_WANTRETURN,_
10,10,200,150,hwnd,null,hInstance,null)
'hwndPB = CreateWindowEx(WS_EX_CLIENTEDGE,PROGRESS_CLASS,NULL, WS_CHILD or WS_VISIBLE,50,50,100,100,hwnd,null,hInstance,null)
CASE wm_close: destroywindow(hwnd)
CASE wm_destroy: postquitmessage 0
CASE ELSE: wndproc=defwindowproc(hwnd,msg,wparam,lparam)
END SELECT
END FUNCTION
FUNCTION WinMain(BYVAL hinstance AS LONG, _
BYVAL hprevInstance AS LONG, _
lpcommandline AS STRING, _
BYVAL ncmdshow AS INTEGER) AS INTEGER
DIM wc AS wndclassex
DIM hwnd AS LONG
DIM msg AS msg
DIM gszclassname AS STRING
gszclassname="myWindowClass"
wc.cbsize=LEN(wndclassex)
wc.style=0
wc.lpfnwndproc=@wndproc
wc.cbclsextra=0
wc.cbwndextra=0
wc.hinstance=hinstance
wc.hicon=loadicon(0,IDI_APPLICATION)
wc.hcursor=loadcursor(0,IDC_ARROW)
wc.hbrbackground=GetStockObject( GRAY_BRUSH )
wc.lpszmenuname=0
wc.lpszclassname=STRPTR(gszclassname)
wc.hiconsm=loadicon(0,IDI_APPLICATION)
IF registerclassex(wc)=0 THEN
'messagebox 0,"window registration failed","error",MB_ICONEXCLAMATION OR MB_OK
winmain=0
END 0
ELSE
'messagebox 0,"window registration sucsessful","woot",MB_ICONEXCLAMATION OR MB_OK
END IF
hwnd = createwindow(gszclassname ,_
"My RichEdit 1.0" ,_
WS_OVERLAPPEDWINDOW ,_
CW_USEDEFAULT ,_
CW_USEDEFAULT ,_
230 ,_
250 ,_
0 ,_
CreateMenu() ,_
hinstance ,_
0)
IF ( hwnd=0 ) THEN
messagebox 0,"window creation failed","error",MB_ICONEXCLAMATION OR MB_OK
winmain=0
EXIT FUNCTION
END IF
showwindow(hwnd,ncmdshow)
updatewindow hwnd
WHILE getmessage(msg,0,0,0)>0
translatemessage(msg)
dispatchmessage(msg)
WEND
winmain=msg.wparam
END FUNCTION
Posts: 922
Threads: 15
Joined: Jun 2003
It's a problem with numeric escape sequencies, FB since ver 0.12 evaluates at compile time the chr$(const expression) to a numeric escape sequence if "const expression" is <= 27, but as GAS uses the same format as in C, if you do: "\13123" where \13 should be the newline, \131 will be escaped, as GAS (the GNU assembler) has no idea where to stop.
I fixed it outputing "\13""123", as it would be done in C, the patch will be on the next release..
|