Veröffentlicht 10. Dezember 200222 j 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
11. Dezember 200222 j 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).
13. Dezember 200222 j Autor 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
13. Dezember 200222 j 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 );
13. Dezember 200222 j Autor Wenn ich LoadBitmap durch LoadImage ersetze tritt der selbe Fehler auf, aber das Bild wird trotzdem geladen. Es klappt also... irgendwie.
13. Dezember 200222 j Autor 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.
13. Dezember 200222 j Autor 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:
13. Dezember 200222 j Autor 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.
13. Dezember 200222 j Autor 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
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.