Screen display specification
Screen display specification
I have been using a 5000-line FreeBasic program I wrote a few years ago, quite happily. At that time, I had challenges specifying the screen parameters, but managed to establish suitable commands to just display text on the screen.
I've now started using a new Windows 10 computer, with a monitor having a different aspect ratio; while the program runs happily, the image runs off the screen at the bottom. Despite what I thought were useful comments when I wrote the program, I cannot find the command in my code that establishes the screen image parameters, so that I can adjust them for the new screen aspect ratio. The former screen was 14" wide by 8.5" high; the new one is 15.5" wide by 9" high. Can someone please point me in the right direction?
Thanks!
Roger Bohl
I've now started using a new Windows 10 computer, with a monitor having a different aspect ratio; while the program runs happily, the image runs off the screen at the bottom. Despite what I thought were useful comments when I wrote the program, I cannot find the command in my code that establishes the screen image parameters, so that I can adjust them for the new screen aspect ratio. The former screen was 14" wide by 8.5" high; the new one is 15.5" wide by 9" high. Can someone please point me in the right direction?
Thanks!
Roger Bohl
-
- Posts: 556
- Joined: Mar 10, 2007 15:44
- Location: Ohio, USA
- Contact:
Re: Screen display specification
Search for the command "ScreenRes" in your code.
Re: Screen display specification
Here's the complete list of FB graphic commands: https://www.freebasic.net/wiki/wikka.php?wakka=CatPgGfx.
Re: Screen display specification
At the beginning of the main program, there is no "ScreenRes" command. There is a "Screen 20" followed by "Width 150,80" command. 0bcohio2001 wrote:Search for the command "ScreenRes" in your code.
For "20", in the documentation I see....
"20 1024x768 128x48 or 128x96 8x16 or 8x8 256K colors to 256 attributes or direct color"
The computer's display is set at "recommended" settings of 1368 x 768. Other options are available in Settings. I presume the big numbers are pixels, the "width" numbers are characters.
Perhaps I need a primer on how FreeBasic expresses and utilizes size information for different size (inches) screens with different resolutions.
Re: Screen display specification
Your screen is probably 1366 x 768 (see here for an explanation). Most notebooks have the same. I echo the need for a primer - any expert around? My Win7 notebook has the same 1366x768 resolution, probably 32 bits colour depth. Windows won't even tell me that detail, and it won't allow me to change anything, so I really wonder why FB has these commands. Is that QB legacy, or does it make any sense in a recent Windows environment?rogerbohl wrote:The computer's display is set at "recommended" settings of 1368 x 768
...
Perhaps I need a primer on how FreeBasic expresses and utilizes size information for different size (inches) screens with different resolutions.
Re: Screen display specification
Yes and no, because:rogerbohl wrote: There is a "Screen 20" followed by "Width 150,80" command.
Screen 20 = ScreenRes 1024, 768 but, the specified Width ... doesn't seem to match?
You'd usually would want to use a 16x8 Font size on such 'large' resolution (not the 8x8).
Therefore, the Width would have to be: 1024\8, 768\16 ... (int. div., not float div.!)
aka: 128 x 48 (the Char's per Line (width), the Line amount (height))
You'll have to keep in mind, that Screen/ScreenRes refers to the size of the *User-Window*
and not to the really used size *on Screen*, which is larger (add borders sizes and Title-Bar
height). Exception: if you are using *no Frames* setting, with ScreenRes() only.
Use ScreenInfo() but, before entering graphic's mode (set with: ScreenRes() ).jj2007 wrote:Windows won't even tell me that detail, and it won't allow me to change anything ...
You can change, whatever you want, but this applies to your program only ...
Re: Screen display specification
I'm still at a loss as to how to stop the FreeBasic Window from overrunning the bottom of the screen. (There is content at the bottom that is not visible.)
Should I adjust my computer screen setting (for this application, only -- Ugh!) to other than the "Recommended" setting?
How do the numbers in the Width command (Width 120,80) affect the window displayed?
Is there another command (of which I am not aware) that would make the FreeBasic window less "tall"?
Thanks for all the help offered!
Roger
Should I adjust my computer screen setting (for this application, only -- Ugh!) to other than the "Recommended" setting?
How do the numbers in the Width command (Width 120,80) affect the window displayed?
Is there another command (of which I am not aware) that would make the FreeBasic window less "tall"?
Thanks for all the help offered!
Roger
Re: Screen display specification
You'll just have to try it out, with some empirical tests, such as:rogerbohl wrote:... as to how to stop the FreeBasic Window from overrunning the bottom of the screen.
Code: Select all
' try out the max. size of "user window"
Const As ULong sw = 1024, sh = 736, cd = 32 ' 32 bits less than physical height 768
ScreenRes(sw, sh, cd)
Width sw\8, sh\16 ' 128 X 46 -- Char's x Lines
Color(&hFF000000, &hFFFFFFFF) : Cls ' black chars on white
Locate 2, 2 : Print "just a test"
Locate 45, 2 : Print "press a key to QUIT !"
Sleep
No, don't touch ...rogerbohl wrote:Should I adjust my computer screen setting (for this ...
As explained in previous post ...rogerbohl wrote:How do the numbers in the Width command (Width 120,80) affect the window displayed?
Re: Screen display specification
I made the old style frame (I think it should be the same for all win 10)
I made a maximum screenres to fill the desktop.
I can catch the frame top with the mouse to move it, but I make it spring back on release.
I can read the bottom line of the screen.
I made a maximum screenres to fill the desktop.
I can catch the frame top with the mouse to move it, but I make it spring back on release.
I can read the bottom line of the screen.
Code: Select all
#include "fbgfx.bi"
Declare Function SetWindowTheme Lib "UxTheme.dll" Alias "SetWindowTheme"(As Any Ptr,As zstring Ptr,As zstring Ptr) As Long
dim as integer dw,dh
screencontrol fb.GET_DESKTOP_SIZE,dw,dh
screenres dw,dh,32,,fb.GFX_ALWAYS_ON_TOP or fb.GFX_HIGH_PRIORITY
dim as any ptr win
Screencontrol(fb.GET_WINDOW_HANDLE ,Cast(Integer,win))
SetWindowTheme(win," "," ") 'old style frame
windowtitle "Old style frame"
width dw\8,dh\16 'max fontsize
do
screencontrol fb.SET_WINDOW_POS ,0,-24
draw string(50,0),"Top"
draw string(50,dh-16), "HELLO from the bottom line"
sleep 10,1
loop until len(inkey)
sleep
Re: Screen display specification
The width command will try to set the size of the text in graphics mode (screen 20).
Since the values used are invalid, it will not have any effect on the screen/text.
I have tried many times to fix this by adjusting monitor settings and centering and "nudging" the via the monitors built in menu. It has never worked.
My xp monitor settings are 1280 x 720
You can try setting a higher monitor resolution via windows and it might work.
On my linux machine and a much higher monitor resolution screen 20 fits.
My linux monitor is 1440 x 900
Otherwise use the screenlist command to come up with a list of screen/window sizes and pick one that doesn't run off the bottom.
@Dodicat: Your window also hides half of the last line off the bottom on my xp machine.
Since the values used are invalid, it will not have any effect on the screen/text.
Screen 20 on my win xp machine gives a tall window with the bottom cut off (like yours). Some acceptable resolutions (see screenlist) also do the same. Some cut off the top when maximized.If rows / cols is an invalid combination, no changes are made to the screen display.
I have tried many times to fix this by adjusting monitor settings and centering and "nudging" the via the monitors built in menu. It has never worked.
My xp monitor settings are 1280 x 720
You can try setting a higher monitor resolution via windows and it might work.
On my linux machine and a much higher monitor resolution screen 20 fits.
My linux monitor is 1440 x 900
Otherwise use the screenlist command to come up with a list of screen/window sizes and pick one that doesn't run off the bottom.
@Dodicat: Your window also hides half of the last line off the bottom on my xp machine.
Re: Screen display specification
How about this?
Windows only, unfortunately...
Code: Select all
#include once "fbgfx.bi"
#include once "windows.bi"
dim as integer desktopWidth, desktopHeight
desktopWidth = getSystemMetrics( SM_CXFULLSCREEN )
desktopHeight = getSystemMetrics( SM_CYFULLSCREEN ) + getSystemMetrics( SM_CYCAPTION )
screenRes( desktopWidth, desktopHeight, 32, , fb.gfx_alpha_primitives or fb.gfx_no_frame )
screenControl( fb.set_window_pos, 0, 0 )
width desktopWidth \ 8, desktopHeight \ 16
locate 45, 10
? "Desktop test";
line( 0, 0 ) - ( desktopWidth - 1, desktopHeight - 1 ), rgba( 255, 255, 0, 255 ), b
sleep()
Re: Screen display specification
@Paul
I can not see the line at the top until top = 2 and cannot see the line at the bottom until -1 as well:
I can not see the line at the top until top = 2 and cannot see the line at the bottom until -1 as well:
Code: Select all
line( 2, 2 ) - ( desktopWidth - 2, desktopHeight - 2 ), rgba( 255, 255, 0, 255 ), b
Re: Screen display specification
The lines on the sides are visible.
With the taskbar hidden the bottom line is visible. The top still missing.
With Dodicats code the bottom line is still cut in half even with the taskbar hidden.
On some screenres settings I lose top/left. I can use the monitors adjustments to get them visible, but that moves the bottom/right out of visibility.
I wrote this off as a older graphics card/monitor/xp issue. I just work around it by using different screenres settings.
With the taskbar hidden the bottom line is visible. The top still missing.
With Dodicats code the bottom line is still cut in half even with the taskbar hidden.
On some screenres settings I lose top/left. I can use the monitors adjustments to get them visible, but that moves the bottom/right out of visibility.
I wrote this off as a older graphics card/monitor/xp issue. I just work around it by using different screenres settings.
Re: Screen display specification
Found the cause of the problem and the solution:
Problem:
Evidently, Windows uses Notepad to generate the screen display and print output. It is this program that generates the margins, including one at the top that pushes the content off the bottom of screen.
Solution:
It is possible to set the margins within Notepad++, but it takes some extra work with Windows registry to retain them for the next call.
I found the answer on line. It may have been the following, and did the job for me, but you should do your own research.
https://www.itprotoday.com/management-m ... p-settings
Problem:
Evidently, Windows uses Notepad to generate the screen display and print output. It is this program that generates the margins, including one at the top that pushes the content off the bottom of screen.
Solution:
It is possible to set the margins within Notepad++, but it takes some extra work with Windows registry to retain them for the next call.
I found the answer on line. It may have been the following, and did the job for me, but you should do your own research.
https://www.itprotoday.com/management-m ... p-settings