I'd suggest using PB/Win plus Graphics Tools. You won't need Console Tools unless you are using PB/CC.
> I searched on "pulldown" in the PB-Win help and got nothing.
Check out the MENU commands, like MENU NEW BAR.
One of the main goals of Console Tools is to add GUI elements to a console. If you don't need a console window, you'll be better off with a more direct approach.
-- Eric
Announcement
Collapse
No announcement yet.
Contools - won't fill screen
Collapse
X
-
Thanks - and a PB-Win +Contools question
I have PB-Win as well but haven't used it. Do you recommend that I use it with Contools & GFX instead of PBCC, or are you suggesting that I completely rethink my approach? I searched on "pulldown" in the PB-Win help and got nothing. Contools makes it easy!
Leave a comment:
-
-
Dan --
Okay, I see the problem and... I don't see an easy solution.
The issue is that the task bar's Show Desktop function (aka Minimize All Windows) bypasses the normal Windows protocol. If you were to use PB/Win to create a GUI application that didn't expect to be minimized (i.e. purposely disabled its Minimize button), you would experience the same problem.
Because of the way certain versions of Windows work, it isn't practical for a Console Tools PulldownMenu to have a minimize button. Believe me, we tried. So by clicking the Show Desktop button you are telling Windows to force-minimize a window that wasn't intended to be minimized, and the window is getting confused about its state. If the PulldownMenu function is active (waiting for a selection) and somebody clicks Show Desktop or Minimize All Windows, I would expect problems.
or should we tell users "just don't do that" ?
Dan, to be honest, it doesn't seem like PBCC+ConsoleTools+GraphicsTools is the best way to accomplish your apparent goal. You are jumping through hoops (see first post) to create a console window that fills the screen, then you are completely covering up the console with a pulldown menu and a graphics window. Except for the text hole, the console is out of sight. For an interface that looks like that, instead of PB/CC you'd be better off using PBWin to create a real-live GUI program.
-- Eric Pearson, Perfect Sync, Inc.
Leave a comment:
-
-
Oops, never mind. I found it on the QuickStart toolbar (which I had disabled).
Leave a comment:
-
-
if you click the ShowDesktop icon on the Windows TaskbarWhich version of Windows are you using?
-- Eric
Leave a comment:
-
-
Eric - please, please, please...
....can you take a look at the "won't come back" problem described in my last post? Is it something strange in my code, or is it generic to all Contools/GFX programs? Is there a fix, or a workaround, or should we tell users "just don't do that" ?
Thanks, sorry to bug you by name, but you KNOW STUFF !!!!
Leave a comment:
-
-
Nearly Perfect Now - except for....
Eric & the Lurkers,
I fixed the Windows Taskbar problem by changing spYSize to:
spYSize = ConsoleInfo(%DESKTOP_HEIGHT) 'was %SCREEN_HEIGHT
I've decided, as a payback for the help I've gotten from you all, to help others by posting a "skeleton" or "wrapper" code that gets everything ready - console set, graphics window set, drawing units set, pulldown window set, and all as big as possible without covering up the taskbar. People can start with this, then plop in their working code in the pulldown menu cases. The code (below) also includes samples of some Contools and GFX features that I find most useful. I sure wish I'd found this back when I started using PB/CC !
One problem I cannot fix - when this is running, if you click the ShowDesktop icon on the Windows Taskbar, then press the program icon on the Taskbar, the program doesn't always reappear - instead it sometimes briefly flashes then disappears. To make this happen you might have to go back and forth a few times, and maybe Alt-Tab to something in between. To get out of it you have to click ShowDesktop again, then the program icon - and maybe repeat that a few times too! Annoying, and other Windows programs don't do it.
Any ideas? When this code is fixed I'll post it in Source Code.
Code:'---------------------------------------------------------------------------------------------------------- '***************** Raymer's Wrapper: PBCC with Contools & GFX ********************************* '---------------------------------------------------------------------------------------------------------- ' sets up Console to fill Desktop except for Windows Task Bar 5-28-08 ' sets up Graphics screen as full Console and sets scale as (X=1 to nXu), (Y=1 to nYu) for GFX drawing ' sets up Pulldown Menu with loop to check and execute selections (put your working code as Cases) ' Copyright C 2008 by D. Raymer, but permission hereby given to use this however you wish ' Disclaimer - use at your own risk, no promises or guarantees are offered ! ' Thanks to Eric Pearson and the PowerBasic lurkers who answered my stupid questions until this worked! #REGISTER NONE #INCLUDE "c:\GFXTOOLS\GFXT_Pro.INC" #INCLUDE "c:\CONTOOLS\CT_Pro.INC" %MAXMENUBUFFER=100 GLOBAL nXu AS LONG, nYu AS LONG 'number of X & Y drawing units in Window GLOBAL nXp AS LONG, nYp AS LONG 'number of X & Y pixels in Window '---------------------------------------------------------------------------------------------------------- FUNCTION WINMAIN(BYVAL hCurInstance AS LONG, BYVAL hPrevInstance AS LONG, _ BYVAL lpszCmdLine AS ASCIIZ PTR, BYVAL nCmdShow AS LONG) EXPORT AS LONG DIM spXSize AS LOCAL SINGLE 'these needed for console sizing - from Stretch.bas DIM spYSize AS LOCAL SINGLE MyContoolsGFXauthorizeCode&= '<<<< put your authorization code here >>>>> ConsoleToolsAuthorize MyContoolsGFXauthorizeCode& lResult& = InitConsoleTools(hCurInstance, %MAXMENUBUFFER, 2, 3, 0, 0) ' 2 screen save buffers ; 3=using new GFX-Pro lResult2& = GraphicsToolsAuthorize(MyContoolsGFXauthorizeCode&) ConsoleToolBar %OFF, %NO_CHANGE DeleteWindowMenuItem %MENUITEM_SIZE 'Contools routine to make sure the user can't do bad things DeleteWindowMenuItem %MENUITEM_CLOSE 'Make sure user can't Alt-F4 to shut down DeleteWindowMenuItem %MENUITEM_TOOLBAR DeleteWindowMenuItem %MENUITEM_PROPERTIES '----maximize console window to fill desktop (less toolbar) spXSize = ConsoleInfo(%SCREEN_WIDTH) / ConsoleMetrics(%COL_WIDTH) spYSize = ConsoleInfo(%DESKTOP_HEIGHT) 'was %SCREEN_HEIGHT but covers up Windows Task Bar spYSize = spYSize - ConsoleMetrics(%TITLEBAR_HEIGHT) - ConsoleMetrics(%FRAME_HEIGHT) spYSize = spYSize / ConsoleMetrics(%ROW_HEIGHT) ConsoleControl %BUFFER_WIDTH, INT(spXSize) ConsoleControl %BUFFER_HEIGHT, INT(spYSize) ConsoleStretch ConsoleToForeground %SOFT ConsoleMove 0-ConsoleMetrics(%FRAME_WIDTH)-ConsoleMetrics(%BORDER_SIZE),0-ConsoleMetrics(%FRAME_HEIGHT) '----Set up Contools Pulldown Menu MenuDefinition 1, "&File > 2 | &Options > 3 | &Help > 4" MenuDefinition 2, "&Open File= 201 | &Close File= 202 | E&xit=203" MenuDefinition 3, "Do something else...=301 | Do even more....=302" MenuDefinition 4, "Help me &Rhonda=401 | &About=402" lResult& = MenuSystemCreate(1,%MAXMENUBUFFER) 'Contools pulldown menu creation (actually called below in DO loop) ConsoleGfx 0,0,0,0 'Initialize graphics window, using all rows and columns of console window GfxFont "Arial", 40, 20, 1, %BLACK,0,0 'GfxFont(sFontName$,lWidth&,lHeight&,lWeight&,lColor&,lEffects&,dpAngle#) PenColor %BLACK 'set color of lines drawn by GFX BrushColor %WHITE 'set color of brush in GFX (including background via GfxCLS) GfxCLS GfxWindow %SHOW 'Show the graphics window '~~~~~~~set up Drawing Units ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ nXp=GfxMetrics(%GFX_DRAWING_WIDTH) 'horizontal (X) size of graphics window-pixels nYp=GfxMetrics(%GFX_DRAWING_HEIGHT) 'vertical (Y) size of graphics window-pixels GfxOption %GFX_HORIZ_SCALE, 4096 'arbitrarily selected = 64*64 GfxOption %GFX_VERT_SCALE, 2*ROUND(((4096*nYp/nXp)/2.), 0) 'or opt bitmap perf, use even number of pixels nXu=GfxMetrics(%GFX_HORIZ_SCALE) 'number of horizontal (X) Drawing Units nYu=GfxMetrics(%GFX_VERT_SCALE) 'number of vertical (Y) Drawing Units numRows& = RowOfLoc(nYp) 'number of Rows for Locate numCols& = ColOfLoc(nXp) 'number of Cols for Locate '------------- a few sample GFX commands GfxWindow %GFX_FREEZE 'Freeze the graphics window while drawing to it (much faster) StretchBitmap "CLIPBOARD",nXu,nYu 'shows current Windows clipboard image across entire Console image area DrawLine 0.1*nXu,0.1*nYu,0.9*nXu,0.5*nYu 'lStartX&,lStartY&,lEndX&,lEndY& in drawing units Text2Show$=" Raymer's Wrapper Text Print Sample (if something is in the Windows Clipboard, it is displayed)" iTextRow&=INT(.9*numRows&) iTextCol&=INT(.1*numRows&) COLOR 15,1 'PB/CC Color for Print statement GfxTextHole 1,iTextCol&,iTextRow&,iTextCol&+LEN(Text2Show$)-1,iTextRow& 'hole for text to peek through graphics screen LOCATE iTextRow&,iTextCol& PRINT Text2Show$; GfxWindow %GFX_UNFREEZE 'now UnFreeze the graphics window to show what you did '---------------------------------------------------------------------------------------------------------------- DO '------------- Do Loop repeats checking pulldown menu until user Exits------------------------------------- lUserSelection& = PulldownMenu(1, 0, %OFF) 'for Esc, Enter, etc... see Contools Help SELECT CASE lUserSelection& CASE 201 ' Open File= 201 CASE 202 ' Close File=202 CASE 203 ' Exit=203 EXIT FUNCTION CASE 301 ' Do something else...=301 CASE 302 ' Do even more....=302 CASE 401 ' Help me &Rhonda=401 DrawFrom INT(0.4*nXu),INT(0.8*nYu) lResult& = DrawTextRow ("Brian Wilson Rules !",%TEXT_RAISED OR %TEXT_ANIMATE) CASE 402 ' &About=402" sText$ ="Raymer's Wrapper: PBCC with Contools & GFX"+CHR$(13)+ _ "Copyright C 2008 by D. Raymer, but permission"+CHR$(13)+ _ " hereby given to use this however you wish"+CHR$(13)+ _ "Disclaimer - use at your own risk, no promises"+CHR$(13)+ _ " or guarantees are offered !"+CHR$(13) sTitle$="Raymer's Wrapper Message Box" lResult& = ConsoleMessageBox(" "+sText$,%OKONLY,sTitle$,0,%false) END SELECT LOOP 'End of Pulldown Do Loop END FUNCTION '----------------------------------------------------------------------------------------------------------
Leave a comment:
-
-
...my small example doesn't have the problem, but my 7,000+ line big program does. I'll cut & paste from big to small ....
Leave a comment:
-
-
Working on source code example
Eric - I'm working on it. So far my small example doesn't have the problem, but my 7,000+ line big program does. I'll cut & paste from big to small until small is bad like big.
Thanks for your help.
Dan
Leave a comment:
-
-
GfxOption(%GFX_DEFAULT_WINDOW_STYLE) doesn't compile
You say that the graphics window is being given scroll bars if you maximize or Alt-Tab the console window. Are you sure that the scroll bars aren't part of the console window?
Can you simply send me the source code for a small but compilable program that does not behave the way you expect?
-- Eric
Leave a comment:
-
-
Scrollbars still happening
Eric,
GfxOption(%GFX_DEFAULT_WINDOW_STYLE) doesn't compile. Did you mean something else to make GFX_STYLE_SCROLLBARS_NEVER work with ConsoleGfx ?
I did find that the unwanted scrollbars happen if you do ConsoleWindow %MAXIMIZE any time after ConsoleGFX in the code posted above (my reworking of Stretch.BAS). Getting rid of all those "fixed" the problem, but if I Alt-Tab out of my program then back in, the scrollbars appear and won't go away.
Some way of activating SCROLLBARS_NEVER would be very nice !
Leave a comment:
-
-
The Windows Toolbar is hidden.
The ConsoleInfo function will provide all of the values you need, including "the size of the desktop minus the Task Bar".
Also, this Window is mean - you can't Alt-Tab to other Windows.
I rem'd out ConsoleTopMost %TRUE which seems to work, but will that mess up anything else?
I find that my GFX window has scrollbars which I don't want or need. I open a graphics window using ConsoleGfx 0,0,0,0 so that it completely fills the console.
I tried killing the scrollbars using GFX_STYLE_SCROLLBARS_NEVER but GfxOption won't take that option, and ConsoleGFX has no style option.
-- Eric
Leave a comment:
-
-
But now there are scrollbars on GFX
After using the Stretch code as described in my last post, I find that my GFX window has scrollbars which I don't want or need. I open a graphics window using ConsoleGfx 0,0,0,0 so that it completely fills the console.
I tried killing the scrollbars using GFX_STYLE_SCROLLBARS_NEVER but GfxOption won't take that option, and ConsoleGFX has no style option.
Code:...right after console setup ConsoleGfx 0,0,0,0 GfxCLS
Leave a comment:
-
-
Problem solved by accident ?
Hold the presses - I just notice that when I rem'd out ConsoleTopMost %TRUE, the Windows toolbar showed up. Problem solved? Or is there another problem not obvious to me?
Leave a comment:
-
-
Tried with Stretch.Bas code - close, but not quite...
Thanks Eric,
I copied in stuff from Stretch (see below) and that does the trick, but a little too well. The Windows Toolbar is hidden. Comments in Stretch imply that this is fixable, but I don't see how to return the height of the toolbar (ConsoleMetrics ?).
Also, this Window is mean - you can't Alt-Tab to other Windows. I rem'd out ConsoleTopMost %TRUE which seems to work, but will that mess up anything else?
And, thanks for your time!
Code:#REGISTER NONE #INCLUDE "C:\PBCC40\Winapi\WIN32API.INC" 'should be newest one! #INCLUDE "c:\GFXTOOLS\GFXT_Pro.INC" 'upgrade to version 2 #INCLUDE "c:\CONTOOLS\CT_Pro.INC" 'update to version 2.50 %MAXMENUBUFFER=100 FUNCTION WINMAIN(BYVAL hCurInstance AS LONG, BYVAL hPrevInstance AS LONG, _ BYVAL lpszCmdLine AS ASCIIZ PTR, BYVAL nCmdShow AS LONG) EXPORT AS LONG 'these needed for console sizing - from Stretch.bas DIM spXSize AS LOCAL SINGLE DIM spYSize AS LOCAL SINGLE DIM lRow AS LOCAL LONG ConsoleToolsAuthorize <<your code>> lResult& = InitConsoleTools(hCurInstance, %MAXMENUBUFFER, 2, 3, 0, 0) ' 2 screen save buffers ; 3=using new GFX-Pro '----from stretch.bas----------- ConsoleWindow %RESTORE spXSize = ConsoleInfo(%SCREEN_WIDTH) / ConsoleMetrics(%COL_WIDTH) spYSize = ConsoleInfo(%SCREEN_HEIGHT) 'We don't want to use the entire space. Leave room for 'the title bar. (This code could be modified to leave 'room for the Toolbar.) spYSize = spYSize - ConsoleMetrics(%TITLEBAR_HEIGHT) - ConsoleMetrics(%FRAME_HEIGHT) spYSize = spYSize / ConsoleMetrics(%ROW_HEIGHT) ConsoleControl %BUFFER_WIDTH, CEIL(spXSize) ConsoleControl %BUFFER_HEIGHT, CEIL(spYSize) ' ConsoleTopMost %TRUE ConsoleStretch ConsoleToForeground %SOFT ConsoleMove 0-ConsoleMetrics(%FRAME_WIDTH)-ConsoleMetrics(%BORDER_SIZE), _ 0-ConsoleMetrics(%FRAME_HEIGHT) '------------------------- end of stretch stuff SLEEP 25 'PBCC from WinAPI (in milliseconds) let console finish initializing before continuing PRINT PRINT " press any key to exit" WAITKEY$ END FUNCTION
Leave a comment:
-
-
You are calculating the desired height (dum!) in a way that leaves out a few factors. I'd recommend looking at the Stretch.BAS example program that comes with Console Tools; it handles all of the issues, as far as we know. It does cover up the task bar, and it is quite aggressive at keeping the console visible, but a stripped-down version of that program will do exactly what you need.
-- Eric
Leave a comment:
-
-
Bottom trick
Thanks Eric. On my machine the right side is pretty close to the edge, but the bottom is far from the available bottom. It looks like there is room for 3 or 4 more rows. Is there a trick to get it closer to the taskbar?
Leave a comment:
-
-
on my two computers it doesn't quite go to the right or to the bottom
On my 800x600 test system, your program creates a console window that comes within 4 pixels of filling the desktop from left to right, i.e. the console window is 796 pixels wide. I am using an 8x12 console font, so adding another column of text would require the addition of 8 pixels, which would create a console window that is 796+8=804 pixels, which is too wide to fit on the screen... so Windows automatically makes it smaller and adds scroll bars. Exactly the same thing is happening with the console height.
-- Eric Pearson, Perfect Sync, Inc.
Leave a comment:
-
-
Contools - won't fill screen
Using Contools - love it - but can't figure out how to make the console as big as possible without covering the Start & Taskbar at the bottom of Windows. I don't want to Maximize the display, just almost maximize! This code is close, but on my two computers it doesn't quite go to the right or to the bottom, by about 10% of the screen.
Code:#REGISTER NONE #INCLUDE "C:\PBCC40\Winapi\WIN32API.INC" 'should be newest one! #INCLUDE "c:\GFXTOOLS\GFXT_Pro.INC" 'upgrade to version 2 #INCLUDE "c:\CONTOOLS\CT_Pro.INC" 'update to version 2.50 %MAXMENUBUFFER=100 FUNCTION WINMAIN(BYVAL hCurInstance AS LONG, BYVAL hPrevInstance AS LONG, _ BYVAL lpszCmdLine AS ASCIIZ PTR, BYVAL nCmdShow AS LONG) EXPORT AS LONG ConsoleToolsAuthorize <<<your code>>> 'Authorization code lResult& = InitConsoleTools(hCurInstance, %MAXMENUBUFFER, 2, 3, 0, 0) ' 2 screen save buffers ; 3=using new GFX-Pro lResult& = Console80x(30) ' sets 80 col, 30 row console (helps size on other systems) '-----------should completely maximizes window to fill desktop (less toolbar)from initial values dum!=ConsoleInfo(%DESKTOP_HEIGHT)/ConsoleInfo(%WINDOW_HEIGHT) dum!=FIX(dum!*ConsoleInfo(%BUFFER_HEIGHT)) dum2!=ConsoleInfo(%DESKTOP_WIDTH)/ConsoleInfo(%WINDOW_WIDTH) dum2!=FIX(dum2!*ConsoleInfo(%BUFFER_WIDTH)) lResult& = ConsoleControl(%BUFFER_HEIGHT,dum!) lResult& = ConsoleControl(%CONSOLE_BOTTOM,dum!) lResult& = ConsoleControl(%BUFFER_width,dum2!) lResult& = ConsoleControl(%CONSOLE_right,dum2!) lResult& = ConsoleMove(0,0) 'left side of screen at pixel 0, SLEEP 25 PRINT PRINT " press any key to exit" WAITKEY$ END FUNCTION
Tags: None
-
Leave a comment: