SetBkMode

Alles over het toepassen van API en DLL's in Liberty BASIC

Moderator: anthonio

SetBkMode

Berichtdoor glpape » zo feb 20, 2011 7:25 pm

Eerst eens kijken of ik m'n ZIP file als bijlage kan sturen.
Dit zijn de files die we 4dd geleden tijdens de LbtyBas avond in Amsterdam/Amstelveen/Bovenkerk hebben bekeken.
George Pape.

Vanmiddag problemen maar nu : succes !
<SetBkMode> is een beetje m'n favoriet: als de spelregels waren dat ik maar één enkele API functie mocht gebruiken, dan zou het deze zijn. Als je <SetBkMode2.bas> runt zie je het verschil met tekst in een grafisch venster.
Het programma vraagt eerst de Windows handle (anders dan de LbtyBas #handle) met de hwnd() functie.
Dan met <GetDC> de Device Context. Dit is een tussenstation voor grafische output zodat Windows "Device Independent" kan zijn. De DC bevat veel info over grafische settings (een font, kleuren, een pen, de huidige positie van de pen, etc). Van daaruit is er tenslotte een driver voor de printer of het scherm.
<SetBkMode> kent weinig opties: TRANSPARENT (background onzichtbaar) of OPAQUE. Onderliggend zijn getallen die je ziet als je in de LbtyBas editor tikt <print _OPAQUE>. Windows geeft optioneel deze woorden (en noemt ze "Windows Constants") voor wie duizelig wordt van alle getallen. De underscore is LbtyBas syntax.
Tenslotte na bewezen diensten <ReleaseDC> om geheugen vrij te maken.
<TransparentBlt> is een functie in msimg32.dll. Deze wordt niet automatisch herkend door LbtyBas en moet je formeel openen en sluiten. De code lijkt erg op die om een window of een file to openen. Eerst weer <SetBkMode> omdat ik er zo van hou. <GetPixel> returns de kleurcode van de zwarte achtergrond. In de listing wat uitleg bij <TransparentBlt>. De afmetingen van de destination mogen ook groter of kleiner. Als je een willekeurige kleurcode invult om transparent te maken (bv 7 of 12 of 12000) kun je de functie gebruiken om plaatjes te vergroten. Officieel is daar <StretchBlt> voor. Aan de kleuren zul je niets zien, daar zijn er immers 16 miljoen van !
De functie zou ook handig zijn voor Sprites zonder masker -- zelf weet ik nog niets van sprites.

Vr groet,

George Pape.
Bijlagen
SetBkMode.zip
(1.48 MiB) 152 keer gedownload
glpape
 
Berichten: 83
Geregistreerd: za nov 08, 2008 5:32 pm

Keer terug naar API/DLL

Wie is er online

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

cron