Hitting key on canvas: sound "NotAllowed" played
BlitzMax Forums/BlitzMax Programming/Hitting key on canvas: sound "NotAllowed" played
| ||
Hello verybody, I am using a canvas to draw Text on the screen and I want the user to change it. Now when hitting a key the OS (at least on MacOS) plays the sound "NotAllowed" which can get quite annoying after a while. Is there a way to get rid of it? Can imagine that this might happen on WinVista and some of the newer Linux GUIs as well. It might be easier to simply draw a TextArea but I had that the version before and I didn't like the style to have a mask and then draw the preview. I would appreciate if I can find a solution for typing directly to a canvas. Thanks very much Simon |
| ||
Try putting a text area off the screen and when the user clicks on the canvas, put focus on the text area. The take the data from the text area and draw it to the canvas.'Example code: DOES NOT WORK Local Win:TGadget = CreateWindow("Blah",0,0,640,480) Local HiddenBox:TGadget = CreateTextArea(1000,1000,0,0,Win) Local DrawToCanvas:TGadget = CreateCanvas(0,0,640,480,Win) Repeat WaitEvent() Select EventId() Case EVENT_MOUSEHIT ActivateGadget(HiddenBox) DrawCanvasCaret(MouseX(),MouseY()) Case EVENT_GADGETACTION If EventSource() = HiddenBox Then DrawTextOnCanvas() EndIf Case EVENT_GADGETPAINT DrawTextOnCanvas() DrawCanvasCaret() EndSelect Until EventId() = EVENT_WINDOWCLOSE End Function DrawCanvasCaret(X:Int, Y:Int) 'Draw the caret at the mouse position EndFunction Function DrawTextOnCanvas() Local Txt:String = TextAreaText(HiddenBox) 'Draw the data from "Txt" to the canvas EndFunctionThis is a VERY basic example but with a few improvements, this could be what you are looking for. EDIT: Another note: Trap keystrokes (like left and right keys) so you can move the caret inside the canvas. |