GraphicBox Functionaliteit

Algemene discussies en vragen omtrent Liberty BASIC programma's. Stuur zoveel mogelijk delen van listings (snippets) in als je hulp wilt.

Moderators: anthonio, Abcott

GraphicBox Functionaliteit

Berichtdoor glpape » di apr 24, 2012 1:40 am

De graphic box heeft enkele functies die andere vensters niet hebben. Je kunt die gebruiken vanuit een g.box als hulpvenster, dat niet zichtbaar hoeft te zijn.

Hier gebruik ik <getbmp> vanuit een g.box met de afmetingen 0 (breedte) en 0 (hoogte). Geplaatst in een venster van dezelfde afmetingen. Dat kan alleen met een PopUp venster, andere vensters hebben minimum afmetingen. Ik sluit het venster vanuit Lbty's Mainwin; Alt-F4 is een alternatief.

Code: Selecteer alles

REM   Demonstreert GetBmp vanuit een venster groot (0,0)

calldll #user32, "GetActiveWindow", hmain as ulong
x = DisplayWidth-400  :  y=DisplayHeight-300  :  cx=300  :  cy=150
calldll #user32, "SetWindowPos", _      ' zet Mainwin uit de weg
   hmain as ulong, 0 as long, _
   x as long, y as long, cx as long, cy as long, 0 as long, rtn as long


'  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

UpperLeftX = 60  :  UpperLeftY = 60
WindowWidth = 0  :  WindowHeight = 0
graphicbox #P.gb, 0, 0, 0, 0
Open "PopUp" for window_popup as #P
'  Gosub [HidePopup]                    ' PopUp verschijnt nu niet op taakbalk

#P.gb "getbmp abc -60, -60, 800, 400"
bmpsave "abc", "tmp1.bmp"

'  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


calldll #user32, "SetFocus", hmain as ulong, rtn as long
print : input "press  <Enter>  to close : "; aa
calldll #user32, "PostMessageA", hmain as ulong, _
         _WM_CLOSE as long, 0 as long, 0 as long, rtn as void
close #P
End

[HidePopup]
hP = hwnd(#P)
action = _SW_HIDE                       ' hides window
calldll #user32, "ShowWindow", hP as ulong, action as long, rtn as long
Return



Merk op dat <getbmp> ook negatieve waardes accepteert voor x en y. Dat is nodig als je de uiterste linker bovenhoek van het scherm wilt afbeelden want je kunt je PopUp daar niet plaatsen : Lbty accepteert niet <0> voor UpperLeftX en --Y.

Met een API-call naar "ShowWindow" kun je ook je PopUp nog onzichtbaar maken (_SW_HIDE). Nou is ie toch al onzichtbaar, maar zo krijg je ook nog dat ie niet op de taskbar verschijnt. Lekker rustig voor het oog. Werkt even goed.

<getbmp> pakt gewoon wat zichtbaar is op het scherm. Je kunt zo delen van het scherm opslaan als bitmap, bv plaatjes van complexe internet pagina's. Je kunt dat natuurlijk zo op het oog doen, een beetje schatten hoeveel pixels en zo, en daar kun je best ver mee komen.

Zelf probeer ik nu een programma te maken waarmee je precies de hoeken kunt markeren voor de bitmap die je zo wilt pakken. Ik wil het programma runnen vanuit de Lbty editor, en die editor moet verdwijnen zodra je het programma start. Dat lukt inmiddels. Binnenkort zal ik laten zien wat het is geworden.

En een ander commando dat je kunt gebruiken vanuit een onzichtbare g.box is <StringWidth> .

Vr groet,

George Pape.
glpape
 
Berichten: 83
Geregistreerd: za nov 08, 2008 5:32 pm

Keer terug naar Liberty BASIC Code

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast

cron