Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Bitmap Loader

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
02.09.2002, 21:26 Uhr
AlienX



Ich finde einfach keine guten Tutorials.

Ich versuche folgends:
1. Schritt: Ein Bitmap aus einer Datei laden und im Vollbildschirm Modus anzeigen (640x480 oder so).
2. Schritt: Ein zweites Bitmap laden, dass sich per Mausklick über das erste bewegt.

Ich hab aber schon am Anfang Probleme. Ich hab eine neue Win32-Anwendung erstellt und ein CBitmap deklariert, da bekomm ich Fehler als wenn er den Typ nicht kennt. Was muss ich wo includen?

Außerdem weiss ich nicht, wie ich das Bild von der Datei in die Variable bekomm, mit Resourcefiles hätte ich's schon gefunden, aber ich weiss nicht ob man die auch zur Laufzeit einfügen kann. D.h. man muss die Bitmappackages wie Bilder in ein Malprogramm laden können, also ohne das man sie beim compilieren hat.
--
"Das Ganze ist mehr als nur die Summe seiner Teile" - Zitat von hab ich vergessen

Dieser Post wurde am 02.09.2002 um 21:26 Uhr von AlienX editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.09.2002, 21:30 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi, nimm folgendes:

C++:
class CYourDlg ...
{
//...
private:
  HBITMAP hBitmap;
}

CYourClass::CYourClass(...)
{
  hBitmap = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),MAKEINTRESOURCE(iBitmap),IMAGE_BITMAP, 50 /* größe x */, 50 /* größe y */,LR_CREATEDIBSECTION);
}

CYourClass::OnPaint(...)
{
  // tja, das hab ich noch nie gebraucht ;)
  // Frag hierzu Uwe, der weiß da was ...
}


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.09.2002, 21:55 Uhr
AlienX



Danke, das hilft mir schon weiter, aber wie funktioniert das mit dem Handle? Funktioniert das wie ein Pointer oder ist das Bitmap dann "wirklich" in der Variablen(so dass man es bearbeiten kann)?
--
"Das Ganze ist mehr als nur die Summe seiner Teile" - Zitat von hab ich vergessen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.09.2002, 01:01 Uhr
~Tobi
Gast


Fullscreen + Bitmaps... klingt nach DircetDraw...

schau mal bei stefan vorbei.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.09.2002, 08:17 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


er wills mit GDI-Funktionen machen ...

Außerdem könnte es auch nach GL klingen ...

Da gibts FullScreen und Bitmaps auch, und das was er grad versucht ist da einfacher zu realisieren als in DDraw (Übrigens, du hast dich bei DirectDraw vertippt)

Achja, ich hab mal in meiner Wunderkiste gekramt und folgendes gefunden:


C++:
// Umschalten auf Vollbild:

DEVMODE dmScreenSettings;
memset(&dmScreenSettings,0,sizeof(dmScreenSettings));
dmScreenSettings.dmSize       = sizeof(dmScreenSettings);
dmScreenSettings.dmPelsWidth  = 800; /* Size X */
dmScreenSettings.dmPelsHeight = 600; /* Size Y */
dmScreenSettings.dmBitsPerPel = 16; /* 16Bit Farben */
dmScreenSettings.dmFields     = DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT|DM_DISPLAYFLAGS;
// dmScreenSettings.dmDisplayFrequency = 80; // Nur wenn bei dmFields DM_DISPLAYFREQUENCY gesetzt ist
        
if (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL)
{
    if (MessageBox(NULL,"The Requested Fullscreen Mode Is Not Supported By\nYour Video Card. Use Windowed Mode Instead?","ERROR",MB_YESNO|MB_ICONEXCLAMATION)==IDNO)
    {
        MessageBox(NULL,"Program Will Now Close.","ERROR",MB_OK|MB_ICONSTOP);
        return 0;
    }
}


das mit dem Bildschirm zeichnen such ich grad noch
--
class God : public ChuckNorris { };

Dieser Post wurde am 03.09.2002 um 08:25 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
03.09.2002, 08:24 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Um das Bitmap zu zeichnen würde ich folgende Funktion(en) verwenden:


C++:
BOOL StretchBlt(
  HDC hdcDest,      // handle to destination DC
  int nXOriginDest, // x-coord of destination upper-left corner
  int nYOriginDest, // y-coord of destination upper-left corner
  int nWidthDest,   // width of destination rectangle
  int nHeightDest,  // height of destination rectangle
  HDC hdcSrc,       // handle to source DC
  int nXOriginSrc,  // x-coord of source upper-left corner
  int nYOriginSrc,  // y-coord of source upper-left corner
  int nWidthSrc,    // width of source rectangle
  int nHeightSrc,   // height of source rectangle
  DWORD dwRop       // raster operation code
);

// oder

BOOL BitBlt(
  HDC hdcDest, // handle to destination DC
  int nXDest,  // x-coord of destination upper-left corner
  int nYDest,  // y-coord of destination upper-left corner
  int nWidth,  // width of destination rectangle
  int nHeight, // height of destination rectangle
  HDC hdcSrc,  // handle to source DC
  int nXSrc,   // x-coordinate of source upper-left corner
  int nYSrc,   // y-coordinate of source upper-left corner
  DWORD dwRop  // raster operation code
);




(Das Beispiel welches ich mal hatte ist leider irgendwie verschwunden, Uwe müsste es aber haben, er hat es damals Thundergod gegeben)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
03.09.2002, 14:12 Uhr
AlienX



Okay, danke, aber im Moment kann ich's nicht testen. Ich weiss nicht, warum ich kein CBitmap deklarieren kann:


Code:
14: class CBackground  
15: {
16: public:
17:    CBackground();
18:    virtual ~CBackground();
19:
20: private:
21:    CBitmap m_Bitmap;
22: };



Code:
...\background.h(21) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'm_Bitmap'
...\background.h(21) : error C2501: 'CBitmap' : Fehlende Speicherklasse oder Typbezeichner
...\background.h(21) : error C2501: 'm_Bitmap' : Fehlende Speicherklasse oder Typbezeichner


Wie gesagt ist es eine gerade neu erstellte Win32-Anwendung, ich hab nichts geändert als ein paar Klassen eingefügt.
--
"Das Ganze ist mehr als nur die Summe seiner Teile" - Zitat von hab ich vergessen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
03.09.2002, 16:26 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,

Zitat:
AlienX postete

Wie gesagt ist es eine gerade neu erstellte Win32-Anwendung, ich hab nichts geändert als ein paar Klassen eingefügt.


CBitmap ist eine MFC Klasse, in einer Win32-Anwendung ohne MFC mußt Du z.B. den afxwin Header includieren.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
03.09.2002, 18:00 Uhr
AlienX



entweder es passiert gar nicht (wenn ich es vor stdafx.h include) oder ich bekomm den Fehler:

Code:
...\microsoft visual studio\vc98\mfc\include\afxv_w32.h(14) : fatal error C1189: #Fehler :  WINDOWS.H already included. MFC apps must not #include <windows.h>

--
"Das Ganze ist mehr als nur die Summe seiner Teile" - Zitat von hab ich vergessen

Dieser Post wurde am 03.09.2002 um 18:01 Uhr von AlienX editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
03.09.2002, 18:18 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo AlienX,
also arbeitest Du doch mit den MFC. Du gibst mir zu denken, erst der Error bei deinem letzten Projekt und jetzt das. Jetzt mal ganz von vorn: Was hast Du als Projektformat gewählt?
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: