mirror of
https://github.com/QB64Official/qb64.git
synced 2024-08-22 11:25:08 +00:00
72 lines
2.6 KiB
Markdown
72 lines
2.6 KiB
Markdown
|
The [_SCREENMOVE](_SCREENMOVE) statement positions the program window on the desktop using designated coordinates.
|
||
|
|
||
|
## Syntax
|
||
|
|
||
|
> [_SCREENMOVE](_SCREENMOVE) {column&, row&|_MIDDLE}
|
||
|
|
||
|
## Parameter(s)
|
||
|
|
||
|
* 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.
|
||
|
|
||
|
## Description
|
||
|
|
||
|
* The program's [SCREEN](SCREEN) dimensions may influence the desktop position that can be used to keep the entire window on the screen.
|
||
|
* Use [_DESKTOPWIDTH](_DESKTOPWIDTH) and [_DESKTOPHEIGHT](_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](_SCREENEXISTS).
|
||
|
* **[Keywords currently not supported](Keywords-currently-not-supported-by-QB64)**
|
||
|
|
||
|
## Example(s)
|
||
|
|
||
|
Calculating the border and header offsets by comparing a coordinate move with _MIDDLE by using trial and error.
|
||
|
|
||
|
```vb
|
||
|
|
||
|
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
|
||
|
_DELAY 4
|
||
|
_SCREENMOVE _MIDDLE 'check centering
|
||
|
|
||
|
END
|
||
|
|
||
|
```
|
||
|
|
||
|
> 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.
|
||
|
|
||
|
```vb
|
||
|
|
||
|
wide& = _DESKTOPWIDTH
|
||
|
high& = _DESKTOPHEIGHT
|
||
|
|
||
|
PRINT wide&; "X"; high&
|
||
|
|
||
|
_DELAY 4
|
||
|
_SCREENMOVE wide& + 200, 200 'positive value for right monitor 2
|
||
|
|
||
|
img2& = _SCREENIMAGE
|
||
|
wide2& = _WIDTH(img2&)
|
||
|
high2& = _HEIGHT(img2&)
|
||
|
PRINT wide2&; "X"; high2&
|
||
|
_DELAY 4
|
||
|
_SCREENMOVE _MIDDLE 'moves program back to main monitor 1
|
||
|
|
||
|
```
|
||
|
|
||
|
> *Notes:* Change the [_SCREENMOVE](_SCREENMOVE) column to negative for a left monitor.
|
||
|
|
||
|
**[_FULLSCREEN](_FULLSCREEN) works in the primary monitor and may push all running programs to a monitor on the right.**
|
||
|
|
||
|
## See Also
|
||
|
|
||
|
* [_SCREENX](_SCREENX), [_SCREENY](_SCREENY)
|
||
|
* [_SCREENIMAGE](_SCREENIMAGE), [_DESKTOPWIDTH](_DESKTOPWIDTH), [_DESKTOPHEIGHT](_DESKTOPHEIGHT)
|
||
|
* [_SCREENPRINT](_SCREENPRINT)
|
||
|
* [_SCREENEXISTS](_SCREENEXISTS)
|
||
|
* [_NEWIMAGE](_NEWIMAGE), [SCREEN (statement)](SCREEN-(statement))
|