Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 249587 (11023)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Externes Bitmap-File laden...
Frank Abbing
| 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
Sebastian König
| 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
Frank Abbing
| 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
Sebastian König
| 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
Frank Abbing
| 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
Frank Abbing
| 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
Sebastian König
| 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
Frank Abbing
| Datum: 03.07.01 18:47 (frankabbing@12move.de) |
Hallo, ok, mache ich gleich, danke. MfG Frank

| Zurück zur Übersicht