Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 249587 (11023)
  Suchen
 Zurück zur Übersicht
 AutorThema: Externes Bitmap-File laden...
Frank Abbing
Datum:03.07.01 14:13 Antwortenals Email verschicken (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




Sebastian König
Datum:03.07.01 14:57 Antwortenals Email verschicken (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


Frank Abbing
Datum:03.07.01 15:13 Antwortenals Email verschicken  


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


Sebastian König
Datum:03.07.01 15:42 Antwortenals Email verschicken (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


Frank Abbing
Datum:03.07.01 16:24 Antwortenals Email verschicken (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



Frank Abbing
Datum:03.07.01 18:11 Antwortenals Email verschicken (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


Sebastian König
Datum:03.07.01 18:16 Antwortenals Email verschicken (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


Frank Abbing
Datum: 03.07.01 18:47 Antwortenals Email verschicken (frankabbing@12move.de) 


Hallo,

ok, mache ich gleich, danke.

MfG

Frank


 Zurück zur Übersicht