Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Grafiken in das Programm einbinden.

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
30.04.2007, 17:27 Uhr
~Siegfried75
Gast


Hallo.
Ich habe ein Code mit dem Ich Grafiken im Programm anzeigen kann,
aber wie gesagt werden sie nur angezeigt, ich möchte das sie mit in die Exe reingemacht werden und nicht verlinkt werden.

Also nochmal in kurzfassung:
Die Bitmap soll mit in die exe compiliert werden und nicht verlinkt werden wie bei meinem Code.

Hier der Code :

C++:
#include <windows.h>
#include <stdio.h>

int LoadBmp2Console(char *szBitmap, int PosX, int PosY)
{    
  HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,szBitmap,
                     IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
  if (!hBitmap) return 1;
  
  BITMAP bmp;
  GetObject(hBitmap,sizeof(bmp),&bmp);
  
  HWND hwnd = FindWindow("ConsoleWindowClass",NULL);
  if (!hwnd) return 2;
    
  HDC hDC = GetDC(hwnd);  
  if (!hDC) return 3;
  
  HDC hBitmapDC = CreateCompatibleDC(hDC);
  if (!hBitmapDC) return 4;
  
  SelectObject(hBitmapDC,hBitmap);
    
  BitBlt(hDC,PosX,PosY,bmp.bmHeight,bmp.bmWidth,hBitmapDC,0,0,SRCCOPY);  
    
  DeleteObject(hBitmap);
  ReleaseDC(hwnd,hBitmapDC);
  ReleaseDC(hwnd,hDC);

return 0;
}

int main()
{    
  int Status = LoadBmp2Console("Neu Bitmap.bmp",10,10);
  if(Status!=0)printf("Fehler: %i",Status);  
    
  getchar();  
  return 0;
}



Danke im Voraus .
Gruß, Siegfried75 .

PS: Ich wäre froh wenn ihr mir ein Beispiel geben könntet für Dev-C++ .
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.04.2007, 20:07 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,
das musst du dann über Resourcen erledigen:


C++:
    HRSRC hrSrc = FindResourceEx(NULL, "BMP", MAKEINTRESOURCE(IDR_MYBMP), MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL));
    HGLOBAL hRes = LoadResource(NULL, hrSrc);

    void *lpData = LockResource(hRes);
    ASSERT(lpData);

    int iBytes = SizeofResource(NULL, hrSrc);
    ASSERT(iBytes!=0);

        // in lpData sind deine Bitmapdaten, mit der Länge iBytes.


--
class God : public ChuckNorris { };

Dieser Post wurde am 30.04.2007 um 20:08 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.04.2007, 20:55 Uhr
~Siegfried75
Gast


Also den Code den du mir gegeben hast muss ich in eine rc datei machen.
und dann muss ich die in der main.cpp mit #include "BMP.rc" verlinken.
Hab ich das richtig verstanden?
Mein alten code brauch ich also dazu nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.05.2007, 10:00 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,
falsch. du musst dein Bitmap in die rc-einbinden, und mit meinem Code lädst du das Bitmap aus den einkompilierten Ressourcen in den Arbeitspeicher.

du musst dann in deinem Code


C++:
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,szBitmap,
                     IMAGE_BITMAP,0,0,LR_LOADFROMFILE);



von LoadFromFile auf LoadFromMem ändern, und die Parameter entsprechend anpassen.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
01.05.2007, 15:19 Uhr
~Siegfried75
Gast


Komisch das geht bei mir nicht.


main.cpp

C++:
#include <iostream>
#include <cstdlib>
#include "BMP.rc"
using namespace std;

int main()
{
    HRSRC hrSrc = FindResourceEx(NULL, "BMP", MAKEINTRESOURCE(IDR_MYBMP), MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL));
    HGLOBAL hRes = LoadResource(NULL, hrSrc);

    void *lpData = LockResource(hRes);
    ASSERT(lpData);

    int iBytes = SizeofResource(NULL, hrSrc);
    ASSERT(iBytes!=0);

        // in lpData sind deine Bitmapdaten, mit der Länge iBytes.
}



BMP.rc

C++:
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,szBitmap,
                     IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
01.05.2007, 21:46 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja du verstehst nicht.

rc sind Ressourcendateien, da steht z.b


C++:
#include "resource.h"

IDR_MEINBITMAP            BITMAP                     "res\\bitmap.bmp"




ansonsten kann man natürlich mit LoadImage direkt aus den Ressourcen laden:


C++:
int main()
{
  HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, MAKEINTRESOURCE(IDR_MEINBITMAP), IMAGE_BITMAP,0,0);
}



mal davon abgesehen das das Zeichnen auf das Konsolenfenster nicht umbedingt funktionieren dürfte, solltest du evtl erstmal die Grundlagen lernen, und nicht gleich mit sowas "kompliziertem" anfangen.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
02.05.2007, 07:34 Uhr
~Siegfried75
Gast



Zitat von FloSoft:
naja du verstehst nicht.

rc sind Ressourcendateien, da steht z.b


C++:
#include "resource.h"

IDR_MEINBITMAP            BITMAP                     "res\\bitmap.bmp"




ansonsten kann man natürlich mit LoadImage direkt aus den Ressourcen laden:


C++:
int main()
{
  HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, MAKEINTRESOURCE(IDR_MEINBITMAP), IMAGE_BITMAP,0,0);
}



mal davon abgesehen das das Zeichnen auf das Konsolenfenster nicht umbedingt funktionieren dürfte, solltest du evtl erstmal die Grundlagen lernen, und nicht gleich mit sowas "kompliziertem" anfangen.


ah, so soll ichs also schreiben, aber wo zu ist die Resource.h gut?
Muss ich dadrine ne id schreiben?
Gruß, Siegfrid75.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
02.05.2007, 11:08 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


normalerweise bearbeitet man die rc-dateien mit der IDE (selbst DevC++ dürfte das können)
da erstellt er automatisch eine resource.h:

z.B steht dann da drin:

C++:
#define IDR_MYBMP 1000
#define IDM_MYMENU 1001
usw



damit man halt mit einem eindeutigen Namen auf eine Resource zugreifen kann, und nicht immer mit der Nummer hantieren muss.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
02.05.2007, 12:51 Uhr
Blubber2063



Und wenns sie es nicht kann, das rc script mit windres, selbst compilieren und dann die Object Datei mitlinken.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
02.05.2007, 13:35 Uhr
~Siegfried75
Gast


Danke, jetzt verstehe ich.
Gruß, Siegfried75 .
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


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: