📄 future.htm
字号:
<FONT FACE=Arial SIZE=2>
Using a mouse in a svga mode is supported, but it is a polling mouse. That means for the mouse to move on screen you have to call 'Future.UpdateMouse' continuously. The mouse pointer size is 16x16x256 and can be changed to any shape by calling 'Future.Mouseshape Shape$' Shape$ is a 256 byte string passed to the sub. To set a transparent color for the mouse pointer call 'SetMouseMaskColor C' where C is the color to filter out. If C is negative no filtering is done.<P>
SUBs/FUNCTIONs:<BR>
SUB Future.UpdateMouse<BR>
SUB SetLocation (X, Y)<BR>
SUB SetMouseMaskColor (C)<BR>
SUB SetMouseRange (X, Y, X1, Y1)<BR>
SUB Future.Mouseshape (Shape$)<BR>
SUB Future.MouseOff <BR>
SUB Future.MouseOn <BR>
FUNCTION Future.MouseY<BR>
FUNCTION Future.MouseX<BR>
FUNCTION Future.MouseB<BR>
<hr align=left width=90% noshade size=1 color=#FFBF00>
<A NAME=mouse>
<font color=#FFBF00 face=Arial><B><big>Mouse support in normal QB screens</B></big></font>
<FONT FACE=Arial SIZE=2>
<BR>MouseInit<UL>
Initialize the mouse, you need to call this function before using
other mouse functions. If it returns 0, the mouse has been
initialized. If not, it isn't (DUH!).</UL>
MouseHide<UL>
Hide the mouse cursor, use this when you want to put another image,
different than the default cursor.</UL>
MousePut<UL>
Put the mouse cursor somewhere on the screen.</UL>
MouseRange<UL>
Set mouse range. The mouse can't move outside this range.</UL>
MouseShow<UL>
Show the mouse cursor<BR>
You need to call this if you want it to be visible.</UL>
MouseStatus<UL>
Checks mouse status.</UL>
<hr align=left width=90% noshade size=1 color=#FFBF00>
<A NAME=scrolling>
<font color=#FFBF00 face=Arial><B><big>Scrolling</B></big></font>
<FONT FACE=Arial SIZE=2>
By calling 'SetFrameBuffer X,Y' you can set a page frame that is larger than the screen. You can then use 'Future.ScrollLR S' or 'Future.ScrollUD S' to scroll the screen. If S is positive the screen is scrolled right or down, and if S is negative the screen is scrolled left or up. When changing the page frame size the number of available pages will change and you should call
'Pages%' to see how many pages you have after the change.<P>
SUBs/FUNCTIONs:<BR>
SUB SetFrameBuffer X,Y<BR>
SUB Future.ScrollLR S<BR>
SUB Future.ScrollUD S<BR>
<hr align=left width=90% noshade size=1 color=#FFBF00>
<A NAME=pictures2>
<font color=#FFBF00 face=Arial><B><big>Saving/loading NON-SVGA pictures</B></big></font>
<FONT FACE=Arial SIZE=2>
We have got some functions so you can load some of the most used (Windows) by typing a single command. Just use one of the functions below. You can also save the current screen to a 64 KB file, and load it again...you should also save/load the palette.<p>
SUBs/FUNCTIONs:<BR>
SUB LoadScreen (Filename)<BR>
SUB SaveScreen (Filename)<BR>
SUB LoadGIF (a)<BR>
SUB LoadPCX (a)<BR>
SUB LoadBMP (a)<BR>
<hr align=left width=90% noshade size=1 color=#FFBF00>
<A NAME=font>
<font color=#FFBF00 face=Arial><B><big>A font that doesn't erase the background</B></big></font>
<FONT FACE=Arial SIZE=2>
Unlike the normal QB-print function, this font doesn't erase the background, it only draws the letters.<p>
SUBs/FUNCTIONs:<BR>
SUB Font (X%, Y%, Text$, Col%)<BR>
<hr align=left width=90% noshade size=1 color=#FFBF00>
<A NAME=scrolling>
<font color=#FFBF00 face=Arial><B><big>EMS Support</B></big></font>
<FONT FACE=Arial SIZE=2>
It is possible to save large screen data into memory. Calling 'AllExpMem' (i.e. handle% = AllExpMem%(&h100000)'get 1 megabyte of memory) will give you access to all the memory you need. 'AllExpMem' returns the handle you need to access the memory. Future.EMSPut/Future.EMSGet works the same way the normal Future.GET/Future.PUT work, the only difference is that you use a handle instead of an array. Remember to deallocate the memory before you exit your program, calling 'DeallExpMem handle' will deallocate the memory.<p>
SUBs/FUNCTIONs:<BR>
FUNCTION AllExpMem (Bytes)<BR>
SUB DeallExpMem (handle)<BR>
SUB Future.EMSPut (X, Y, handle)<BR>
SUB Future.EMSGet (X, Y, X1, Y1, handle)<BR>
<hr align=left width=90% noshade size=1 color=#FFBF00>
<A NAME=palette>
<font color=#FFBF00 face=Arial><B><big>Changing Palette</B></big></font>
<FONT FACE=Arial SIZE=2>
Changing the palette works in both the normal QB screenmodes, and in SVGA.<BR>
We have some functions to let you save the current palette, load it again, fade it out, or fade it in (after fading it out).<p>
SUBs/FUNCTIONs:<BR>
SUB SavePal (Filename)<BR>
SUB LoadPal (Filename)<BR>
SUB Palette.FadeOut<BR>
SUB Palette.FadeIn<BR>
SUB ChangePal (Color2Change, R, G, B)<BR>
<hr align=left width=90% noshade size=1 color=#FFBF00>
<A NAME=keyboard>
<font color=#FFBF00 face=Arial><B><big>Keyboard functions</B></big></font>
<FONT FACE=Arial SIZE=2>
<BR>ClearKeyBuffer<ul>
Clears the keyboard buffer.<br>
(don't have that irritating noise in your games when keys are
pressed)</ul>
DisableBreak<ul>
Disable CTRL + C / CTRL + BREAK.<br>
(prevent people from aborting your program)</ul>
LockKeys<ul>
Changes Caps/Num/Scroll lock-state (ON, OFF). Example:<br>
<b>LockKeys 1, 1 </b> Turns CapsLock on<br>
<b>LockKeys 1, 0 </b> Turns CapsLock OFF<br>
<b>LockKeys 2, 1 </b> Turns NumLock ON<br>
<b>LockKeys 3, 1 </b> Turns ScrollLock ON<br>
(etc.)</ul>
GetKey<ul>
Gets the key pressed very fast!<br>
<b>KeyPressed = GetKey</B><br>
(gives you a code higher than 0 lower than 128 when a key is pressed, the same value + 128 when it has been released.)<br>
This is much faster than the normal INKEY$, without the delay when it is first pressed, and you don't have that irritating noise when it is pressed if you use <b>A$ = INKEY$ : KeyPressed = GetKey</b></ul>
<hr align=left width=90% noshade size=1 color=#FFBF00>
<A NAME=joystick>
<font color=#FFBF00 face=Arial><B><big>Joystick functions</B></big></font>
<FONT FACE=Arial SIZE=2>
Get the joystick-status.<BR>
<B>StickStatus JoyX, JoyY, Button1, Button2, Button3</B><BR>
(JoyX = JoyStick X, JoyY = JoyStick Y)<BR>
<hr align=left width=90% noshade size=1 color=#FFBF00>
<A NAME=joystick>
<font color=#FFBF00 face=Arial><B><big>Two graphical effects:</B></big></font>
<FONT FACE=Arial SIZE=2>
<BR>SUBs/FUNCTIONs:<BR>
SUB Melt ()<BR>
SUB Shake (Duration)<BR>
<hr align=left width=90% noshade size=1 color=#FFBF00>
<A NAME=timer2>
<font color=#FFBF00 face=Arial><B><big>Timer</B></big></font>
<FONT FACE=Arial SIZE=2>
We have an (experimental) Timer function, that works faster than the normal QB-timer.<P>
SUBs/FUNCTIONs:<BR>
FUNCTION Timer2&<BR>
<hr align=left width=90% noshade size=1 color=#FFBF00>
<A NAME=how2use>
<font color=#FFBF00 face=Arial><B><big>How to use Future.Library in your program</B></big></font>
<FONT FACE=Arial SIZE=2>
Load QB with <B>QB /l Future</B> or run <B>QBFUTURE.BAT</B><BR>
In your program use <B>REM $INCLUDE: 'FUTURE.BI'</B> or <B>'$INCLUDE: 'FUTURE.BI'</B><BR>
From now on, you can use the functions of the Future.Library!<BR>
<hr align=left width=90% noshade size=1 color=#FFBF00>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -