Help with SetConsoleCursorPosition
BlitzMax Forums/BlitzMax Beginners Area/Help with SetConsoleCursorPosition
| ||
Right, so I'm trying to use SetConsoleCursorPosition to set the cursors position in my console window.Extern "Win32" Function SetConsoleCursorPosition(hbuffOUT%, xyCoord:Byte Ptr) End Extern SetConsoleCursorPosition(stdOUT, Byte Ptr(10)) DOES work but I can only set its X position, how would I set its Y position? |
| ||
Try something like this (data types might need to be changed):Type TCoord Field x:Short Field y:Short Method Set(_x:Short, _y:Short) x = _x y = _y End Method End Type Local coord:TCoord = New TCoord coord.Set(10, 5) SetConsoleCursorPosition(stdOUT, coord) |
| ||
That was what I first tried but it just doesn't work :/Extern "Win32" Function GetStdHandle:Int(nStdHandle:Int) Function SetConsoleCursorPosition(hbuffOUT%, xyCoord:Byte Ptr) End Extern Type TCoord Field x:Short Field y:Short Method Set(_x:Short, _y:Short) x = _x y = _y End Method End Type Local stdOUT% = GetStdHandle(- 11) Local coord:TCoord = New TCoord coord.Set(5, 10) SetConsoleCursorPosition(stdOUT, coord) Print("Testing!") Delay 1000 Setting xyCoord:Byte Ptr to xyCoord:TCoord does not help either. |
| ||
Hmm, arrays aren't working either. |
| ||
Yeah tried that too, heh... Feels like I've tried everything. x_X |
| ||
COORD should not be a pointer, it is copied by value in c.. so treat it as an Int in stead.Extern "Win32" Function SetConsoleCursorPosition( hbuffOUT%, coord:Int) EndExtern Function MakeCoord:Int( x:Int, y:Int) Return y Shl 16 | x EndFunction SetConsoleCursorPosition( stdout, MakeCoord(70,20)) WriteStdOut "it works!" |
| ||
Cheers mate, you've saved me heh. |
| ||
Doesn't work for me. EDIT: Doh! 'Strict' is evil. Works a treat! |
| ||
I have a (almost) complete Console Control library here if you are interested It has functionality to clear the screen, change fore/back colours, write text anywhere in the screen, and accept user input ![]() DEMO #1 DEMO #2 CONSOLECONTROL.bmx |
| ||
Hey thanks Jim Brown (and everyone else) I might use this if I'm allowed. :3 |
| ||
Sure |
| ||
This is pretty nice Jim! looking over the code, where are you getting the hwnd of the console window? |
| ||
Thanks The console window is 'handle' based. The following line retains the handle after opening the console window: Console.hnd=AllocConsole() |
| ||
Awesome :) |
| ||
... |