Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!news.albasani.net!newsfeed.straub-nv.de!pfeed08.wxs.nl!newsfeed.kpn.net!pfeed14.wxs.nl!pfeed15.wxs.nl!not-for-mail From: Paul Sprangers Subject: Re: How to put a caret in a window Newsgroups: comp.sys.acorn.programmer Date: Wed, 27 Apr 2011 13:31:13 +0200 Message-ID: <51ca78d47ePaul@sprie.nl> References: <51c98770d3Paul@sprie.nl> <3f7697c951.Matthew@sinenomine.freeserve.co.uk> <51c9a7e1b5Paul@sprie.nl> <702330ca51.Matthew@sinenomine.freeserve.co.uk> <8a105eca51.Matthew@sinenomine.freeserve.co.uk> User-Agent: Pluto/3.04e (RISC-OS/5.16) NewsHound/v1.50-32 Organization: None Lines: 39 NNTP-Posting-Host: 213.10.58.27 X-Trace: 1303903893 news.kpn.nl 17204 213.10.58.27:49883 X-Complaints-To: abuse@planet.nl Xref: x330-a1.tempe.blueboxinc.net comp.sys.acorn.programmer:218 Dear Matthew, Thank you very much for your comprehensive explanation. It brought me a little bit further indeed, but there's still an issue about the correct placement of the caret. What I want, is actually quite simple. I want to font_paint a short string to a small window (size of a little icon). Actually, the window should mimic an ordinary writable icon, the red caret included. The only difference is that my window should accept UTF8 input (which it does). Let me show what I have now: DEF PROCkeypress(wh%,k%) [...] Here, valid keypresses are added to the string 'string$' SYS "Font_ScanString",plain%,string$,(1<<7)+(1<<17),&3FFFFFFF,&3FFFFFFF,,,LEN(string$) TO ,,,cx%,,,,len% SYS "Wimp_SetCaretPosition",window%,-1,cx%+10,-44,40,-1 PROCredraw(window%) ENDPROC As you can see, I've set bit 7 and bit 17 in R2 of the ScanString call. I've also followed your advice to use large integers in R3 and R4. Moreover, I've also taken the length of the string in account, although I don't know what to do with it. Anyway, whatever integer or value I try, the resulting cx% is always 0. As the window can only display a single string, I don't care about the cy% value. When I set that one to -44, the caret will be displayed properly, albeit always at x=10, no matter how long the string is. Obviously, I'm still overlooking something (or many things). Can you help me further? Kind regards, Paul Sprangers