Loading a bitmap from a dll
BlitzPlus Forums/BlitzPlus Programming/Loading a bitmap from a dll| 
 | ||
| I've just been messing around with Blitz+ and Qcards32.dll (something similar to ms cards.dll) I managed to get a card displayed on screen as follows .lib "Qcard32.dll" InitializeDeck% (hWnd%) DrawCard% (hWnd%, nCard%, nxLoc%, nyLoc%) ; some of the example code Global Canvas = CreateCanvas(0,0,500,500,winMain) SetBuffer CanvasBuffer(Canvas) Global t% = InitializeDeck (QueryObject(Canvas,1)) ....... Cls DrawCard (QueryObject(Canvas,1),6,200,y) FlipCanvas Canvas Using this code the card displays but very flickery if I set the value to (QueryObject(winMain,1),6,200,200) it displays in the window. I'm just wondering how blitz handles images loaded through a function in a dll, is the card being drawn within a canvas or something ? | 
| 
 | ||
| I'm not sure, but I don't think that this actually draws the card onto the canvas's buffer. You can test this out by doing a SaveBuffer() on your canvas after drawing the card, using DrawCard(). I really have no idea what Qcard32.dll is, but it's probably just using it's own drawing function, not DirectX like Blitz does. Then again I might be wrong, but I don't have any way to test it, because I don't have that Dll anywhere on my system. If it is actually drawing onto the buffer, then I don't know whats wrong with it, without seeing more of the code. | 
| 
 | ||
| Hi Todd Just tried savebuffer but the card does not appear but a normal image that i displayed in the canvas does. THe Qcard32.dll is similar to the microsoft cards.dll Here is the test app 
; Card test
Global winMain = CreateWindow("Card Test",100,100,500,500,0,13)
Global Canvas = CreateCanvas(0,0,500,500,winMain)
Global img = LoadImage("image.png")
SetBuffer CanvasBuffer(Canvas)
; create the timer
Global timer = CreateTimer(60)
Global timerframes
Global t% = InitializeDeck (QueryObject(Canvas,1))
If t = 0 Then 
	Notify("Could not initialize qcards32.dll. Result: " + t%)
EndIf	
; main loop
Repeat
	
	 WaitEvent()
	
		Select EventID()
	
			Case $803
				End
			
			Case $4001 ; Timer tick
        		totalticks = EventData()    ; get the total amount of ticks
                                    		; that the timer has passed
        		For tck = timerframes To totalticks
            		timeframes=timerframes+1
            		
        		Next
        		
				draw()
				
		End Select
Forever
; draw graphics to screen
Function draw()
	
	Cls
		DrawCard (QueryObject(Canvas,1),6,200,y)
		DrawImage(img,100,200)
	FlipCanvas Canvas
	
End Function
the decls file contains .lib "Qcard32.dll" InitializeDeck% (hWnd%) DrawCard% (hWnd%, nCard%, nxLoc%, nyLoc%) the functions are described in the docs as: BOOL InitializeDeck(hWnd) DrawCard (hWnd, nCard, nxLoc, nyLoc) THe dll is here http://www.telusplanet.net/public/stevem/ Thanks for your help | 
| 
 | ||
| The dll's don't seem to use DirectX. I can draw them straight to a window ok, but doing anything with them like moving a card or deleting a card works but I somehow need to get the window to refresh to show the change. I can't see any command for this though okee | 
| 
 | ||
| It's not going to work...  or rather it's not going to work well.  You have basically two programs fighting for the same screen-space.  Just create your own card images and use those. Kanati | 
| 
 | ||
| Or just code it in C+ or VB :P |