_SCREENMOVE - QB64Official/qb64 Wiki

The _SCREENMOVE statement positions the program window on the desktop using designated coordinates.


_SCREENMOVE {column&, row&}



  • Positions the program window on the desktop using the column& and row& pixel coordinates for the upper left corner.
  • _MIDDLE can be used instead to automatically center the program window on the desktop, in any screen resolution.


  • The program's SCREEN dimensions may influence the desktop position that can be used to keep the entire window on the screen.
  • Use _DESKTOPWIDTH and _DESKTOPHEIGHT to find the current desktop resolution to place the program's window.
  • On dual monitors a negative column& position or a value greater than the main screen width can be used to position a window in another monitor.
  • A small delay may be necessary when a program first starts up to properly orient the screen on the desktop properly. See _SCREENEXISTS.
  • Keywords currently not supported


Calculating the border and header offsets by comparing a coordinate move with _MIDDLE by using trial and error.

userwidth& = _DESKTOPWIDTH: userheight& = _DESKTOPHEIGHT 'get current screen resolution
SCREEN _NEWIMAGE(800, 600, 256)
scrnwidth& = _WIDTH: scrnheight& = _HEIGHT  'get the dimensions of the program screen

_SCREENMOVE (userwidth& \ 2 - scrnwidth& \ 2) - 3, (userheight& \ 2 - scrnheight& \ 2) - 29
_SCREENMOVE _MIDDLE  'check centering


When positioning the window, offset the position by -3 columns and - 29 rows to calculate the top left corner coordinate.

Moving a program window to a second monitor positioned to the right of the main desktop.


PRINT wide&; "X"; high&

_SCREENMOVE wide& + 200, 200 'positive value for right monitor 2

wide2& = _WIDTH(img2&)
high2& = _HEIGHT(img2&)
PRINT wide2&; "X"; high2&
_SCREENMOVE _MIDDLE 'moves program back to main monitor 1 

Notes: Change the _SCREENMOVE column to negative for a left monitor.

_FULLSCREEN works in the primary monitor and may push all running programs to a monitor on the right.

See Also