Autor | Thema: Externes Bitmap-File laden... | | Datum:03.07.01 14:13 
(frankabbing@12move.de) | |
Hallo zusammen.
Ich versuche extern, über API's eine Bitmap zu laden (nicht anzuzeigen!), dazu verwende ich:
hBitmap&=LoadImage(...)
ExHDC&=CreateCompatibleDC (...)
SelectObject (ExHDC&,hBitmap&)
Die erste Zeile lädt die Bitmap.
Die zweite erzeugt einen HDC
Und die dritte müßte die Bitmap in die HDC einfügen, tut sie aber glaube ich nicht, sondern gibt immer die Zahl 1834 zurück.
Wer kennt sich hier aus, was mache ich falsch ???
Danke schonmal im vorraus...
Frank Abbing, Profan 7.0e
|
| | Datum:03.07.01 14:57 
(webmaster@sekoenig.de) | |
Hallo Frank,
> Ich versuche extern, über API's eine Bitmap zu laden (nicht
> anzuzeigen!), dazu verwende ich:
>
> hBitmap&=LoadImage(...)
> ExHDC&=CreateCompatibleDC (...)
> SelectObject (ExHDC&,hBitmap&)
>
> Die erste Zeile lädt die Bitmap.
> Die zweite erzeugt einen HDC
> Und die dritte müßte die Bitmap in die HDC einfügen, tut sie aber
> glaube ich nicht, sondern gibt immer die Zahl 1834 zurück.
>
> Wer kennt sich hier aus, was mache ich falsch ???
Du machst nichts falsch - wenn SelectObject() 1834 zurückgibt, zeigt dies eine erfolgreiche Ausführung an. 1834 ist das Handle der Bitmap, die zuvor in den Device-Context selektiert war.
MfG
Sebastian
|
| | Datum:03.07.01 15:13 
| |
Hallo Sebastian,
danke für die schnelle Antwort.
Der Wert ist aber bei jedem Aufruf der gleiche, immer!
Ausserdem kann ich per BitBlt(...) nicht auf den neuen DC zurückgreifen, jedenfalls passiert rein gar nichts !?
Bis dahin,
Frank
|
| | Datum:03.07.01 15:42 
(webmaster@sekoenig.de) | |
Hallo,
> Der Wert ist aber bei jedem Aufruf der gleiche, immer!
Auch bei mir wird 1834 zurückgegeben. Woran das liegt, weiß ich nicht, aber einen Fehler zeigt es nicht an. Dazu ein Auszug aus dem MSDN zu SelectObject:
<Start>
Return Values
If the selected object is not a region and the function succeeds, the return value is the handle of the object being replaced.
[...]
If an error occurs and the selected object is not a region, the return value is NULL. Otherwise, it is GDI_ERROR.
<Ende>
> Ausserdem kann ich per BitBlt(...) nicht auf den neuen DC
> zurückgreifen, jedenfalls passiert rein gar nichts !?
Der folgende Code funktioniert bei mir... was machst Du anders?
$H windows.ph
cls
declare hBitmap&,ExHDC&,file$
let file$ = "test.bmp"
let hBitmap& = ~LoadImage(0,Addr(file$),~IMAGE_BITMAP,0,0,~LR_LOADFROMFILE)
let ExHDC& = ~CreateCompatibleDC(%hdc)
locate 3,1
print ~SelectObject(ExHDC&,hBitmap&)
~BitBlt(%hdc,0,0,16,16,ExHDC&,0,0,~SRCCOPY)
waitkey
end
MfG
Sebastian
|
| | Datum:03.07.01 16:24 
(frankabbing@12move.de) | |
Hallo,
nichts, ich mache es genau so wie du, allerdings nicht direkt mit Profan, sondern innerhalb einer aufrufenden DLL.
Dürfte doch keinen Unterschied machen, oder ?
MfG,
Frank
|
| | Datum:03.07.01 18:11 
(frankabbing@12move.de) | |
Hallo nochmals,
wenn ich BitBlt direkt in der DLL starte, dann funktionierts prima, wenn ich es mit den gleichen (übergebenen) Variablen in Profan starte, dann tut sich nicht.
Ist mir absolut ein Rätsel...
Weiß jemand, warum das so ist ?
MfG
Frank
|
| | Datum:03.07.01 18:16 
(webmaster@sekoenig.de) | |
Hallo,
> nichts, ich mache es genau so wie du, allerdings nicht direkt mit
> Profan, sondern innerhalb einer aufrufenden DLL.
> Dürfte doch keinen Unterschied machen, oder ?
Stimmt, das dürfte es nicht. Ich habe auch schon aus einer DLL heraus auf das Profan²-Fenster gemalt.
Poste doch mal den fraglichen Teil Deines Quellcodes. Wenn es Dir lieber ist, kannst Du den Code auch privat an mich senden (ist vielleicht sowieso besser, da es den Rahmen dieses Forums sprengen würde...)
MfG
Sebastian
|
| |
|