Guybrush Threepwood Geschrieben 10. Dezember 2002 Geschrieben 10. Dezember 2002 Hi, wenn ich mit MSVC++ 6 im Resourceneditor einen Dialog erstelle, kann ich ja einen Bilderrahmen dareinziehen und diesem dann ein Bitmap aus den Projektresourcen zuweisen welches dann darin dargestellt wird. Kann ich dieses Bild während das Programm läuft durch ein anderes auf der Festplatte erstzen, also das ich ihm nur sage welches und er es dann anzeigt? Oder muß ich das Bild selber laden und per GDI darstellen? Gruß Guybrush Zitieren
Klotzkopp Geschrieben 11. Dezember 2002 Geschrieben 11. Dezember 2002 Selbst laden musst Du sie, und zwar mit LoadBitmap. Anzeigen kannst Du sie mit CStatic::SetBitmap (oder STM_SETIMAGE, falls Du die MFC nicht verwendest). Zitieren
Guybrush Threepwood Geschrieben 13. Dezember 2002 Autor Geschrieben 13. Dezember 2002 Ah, danke. Aber ich hab im Moment ein Problem mit LoadBitmap, irgendwie meint GetLastError() immer das diese Funktion nur im Win32 Modus verfügbar ist, da ich mein Programm aber mit WinMain gestartet habe ist es doch ein Win32 Programm oder nicht? Hier mal die Funktion: HDC hDest,hSrc; HBITMAP hBitmap; hBitmap = LoadBitmap(0,"c:\\test.bmp"); Fehler("LoadBitmap",GetLastError()); if (hBitmap == NULL) hBitmap = LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP1)); hDest = GetDC(hMainWindow); hSrc = CreateCompatibleDC(hDest); SelectObject(hSrc,hBitmap); BitBlt(hDest,10,105,200,80,hSrc,0,0,SRCCOPY); ReleaseDC(hMainWindow,hDest); DeleteDC(hSrc); DeleteObject(hBitmap); } [/PHP] Gruß Guybrush Zitieren
Klotzkopp Geschrieben 13. Dezember 2002 Geschrieben 13. Dezember 2002 Mit LoadBitmap habe ich es irgendwie auch nicht hinbekommen. Aber mit LoadImage geht es: hBitmap = (HBITMAP) ::LoadImage( 0, "c:\\test.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE ); Zitieren
Guybrush Threepwood Geschrieben 13. Dezember 2002 Autor Geschrieben 13. Dezember 2002 Wenn ich LoadBitmap durch LoadImage ersetze tritt der selbe Fehler auf, aber das Bild wird trotzdem geladen. Es klappt also... irgendwie. Zitieren
Guybrush Threepwood Geschrieben 13. Dezember 2002 Autor Geschrieben 13. Dezember 2002 Wie kann ich denn die Größe des Images feststellen? Ich hatte mir überlegt mit CreateCompatibleBitmap() ein HBITMAP von dem Image zu erstellen und dann die Funktion GetBitmapDimensionEx() zu benutzen, allerdings brauche ich bei CreateCompatibleBitmap() auch schon die Größe des Images. Zitieren
Guybrush Threepwood Geschrieben 13. Dezember 2002 Autor Geschrieben 13. Dezember 2002 Wenn ich das HANDLE zu einem HBITMAP caste und dann versuche mit GetBitmapDimensionEx() die Größe festzustellen kommt wieder die Fehlermeldung das diese Funktion nur im Win32 Modus verfügbar ist.:confused: Zitieren
Klotzkopp Geschrieben 13. Dezember 2002 Geschrieben 13. Dezember 2002 Welche Fehlernummer ist das? Zitieren
Guybrush Threepwood Geschrieben 13. Dezember 2002 Autor Geschrieben 13. Dezember 2002 120 Ich habe gerade rausgefunden das wenn ich die Funktionen erst später aufrufe der Fehler nicht mehr auftritt, aber die SIZE Struktur bleibt trozdem leer. Bisher habe ich die GDI Funktionen immer direkt nach ShowWindow() (also nachdem das Hauptfenster erstellt und angezeigt wurde) aufgerufen. Zitieren
Guybrush Threepwood Geschrieben 13. Dezember 2002 Autor Geschrieben 13. Dezember 2002 Ok, Problem gelöst:D GetBitmapDimensionEX() war die falsche Funktion, anscheinend gibt sie nur die Werte zurück die vorher mit SetBitmapDimensionEx() gesetzt wurden.? Um die Höhe und Breite eines Bitmaps zu ermitteln braucht man GetObject(). Gruß Guybrsuh Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.