ALL handles <As Ulong> .

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

Moderator: anthonio

ALL handles <As Ulong> .

Berichtdoor glpape » zo maart 20, 2011 4:56 am

Vroeger waren Windows handles van het type long. Sinds Windows XP kan dat soms moeilijkheden geven. Ik had dat gehoord en gebruikte al een tijd lang <Ulong> voor de handles van vensters, maar is wist niet dat het ook geldt voor handles van DC's (nooit problemen overigens), instance handles, bitmaps, fonts, etc. Een paar weken geleden kreeg ik problemen met een bitmap handle. Ik heb de code niet meer die ik toen gebruikte, maar hier heb ik iets dergelijks gereconstrueerd. Met de functie "LoadImageA" krijgt je de handle hCherry van de bitmap. Die kun je gebruiken in het LibBas commando < loadbmp > . Omdat de fout niet steeds optreedt gebruik ik de timer om de handle herhaaldelijk te genereren. Je moet het pad aanpassen als je LibBas niet in C:\Program Files\ hebt geinstalleerd.

Code: Selecteer alles
mainwin 33 17                               
print : print
file$ = "C:\Program Files\Liberty BASIC v"; Version$; "\bmp\CHERRY.BMP"
UpperLeftX=450 : UpperLeftY=250 : WindowWidth=150 : WindowHeight=150
open "" for graphics as #WG

timer 1200, [go] : wait

[go]
#WG "cls"
calldll #user32, "LoadImageA", _NULL as long, file$ as ptr,_
     0 as long, 100 as long, 75 as long, 16 as long, hCherry as long
print "    hCherry is : "; hCherry
loadbmp "abc", hCherry
#WG "down; drawbmp abc 20 10"
unloadbmp "abc"
n = n + 1
if n = 5 then timer 0

wait
[qq]
close #WG
end


Merk op: steeds als de fout optreedt is hCherry een groot negatief getal. Het gedonder begint pas met < loadbmp > ; als je die regel en de twee eronder weghaalt gaat het altijd goed. Maar het gaat ook steeds goed met < hCherry As Ulong > .

De warning "Expected #Word" refereert naar het datatype Word. Word was een 16bits unsigned integer. Ulong is een 32bits unsigned integer. Als je in dit programma < As Word > gebruikt werkt het ook.

De aanbeveling is nu < As Ulong > voor alle handles, ook DC's, ook bitmaps etc.

Vr groet,

George Pape.
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