screenshot
-
- Du sollst <winnt.h> nicht direkt inkludieren.
- Was steht denn in Zeile 28 und in der Zeile davor? Hast Du in der Zeile davor am Ende ein Semikolon vergessen?
-
-King- schrieb:
- Du sollst <winnt.h> nicht direkt inkludieren.
- Was steht denn in Zeile 28 und in der Zeile davor? Hast Du in der Zeile davor am Ende ein Semikolon vergessen?
1.) wie dann winnt.h ?
2.) das steht is ja die header: gdiplusenums.h!!:
/**************************************************************************\ * * Copyright (c) 1998-2001, Microsoft Corp. All Rights Reserved. * * Module Name: * * GdiplusEnums.h * * Abstract: * * GDI+ Enumeration Types * \**************************************************************************/ #ifndef _GDIPLUSENUMS_H #define _GDIPLUSENUMS_H //-------------------------------------------------------------------------- // Default bezier flattening tolerance in device pixels. //-------------------------------------------------------------------------- const float FlatnessDefault = 1.0f/4.0f; //-------------------------------------------------------------------------- // Graphics and Container State cookies //-------------------------------------------------------------------------- typedef UINT GraphicsState; typedef UINT GraphicsContainer; . . .thx

-
Ah, dann ist's wegen UINT. Also zunächst <windows.h> inkludieren,.
-
-King- schrieb:
Ah, dann ist's wegen UINT. Also zunächst <windows.h> inkludieren,.
ich hab so:
#include <gdiplus.h> #include <windows.h> #include <stdlib.h> #include <string> #include <sstream> #include <iostream> #include <stdio.h> using namespace std;aber gleicher error also 2 error!! ????
wenn ich so mache:
#include <gdiplus.h> #include <windows.h> . . .zb.:
main.cpp(142) : error C2065: 'Graphics' : nichtdeklarierter Bezeichner
usw...dann hab ich wieder 34 error;-(
thx

-
bei den 34 error ist so:
#include <windows.h> #include <gdiplus.h> . . .
-
Tja, dann mußt Du die Reihenfolge ändern. Du inkludierst offensichtlich die falsche <windows.h>. Du mußt den Pfad unter Extras->Optionen->Verzeichnisse weiter nach oben holen (dazu markierst Du den Pfad und drückst auf den Pfeil nach oben).
-
-King- schrieb:
Tja, dann mußt Du die Reihenfolge ändern. Du inkludierst offensichtlich die falsche <windows.h>. Du mußt den Pfad unter Extras->Optionen->Verzeichnisse weiter nach oben holen (dazu markierst Du den Pfad und drückst auf den Pfeil nach oben).
aso...
nun habs ich so:#include <gdiplus.h> #include <windows.h> #include <stdlib.h> #include <string> #include <sstream> #include <iostream> #include <stdio.h> using namespace std;in den optionen bei verzeichnisse hab ich nun SDK include rauf getan!!:
C:\PROGRAMME\MICROSOFT SDK\INCLUDE
C:\Programme\Microsoft Visual Studio 6\VC98\INCLUDE
C:\Programme\Microsoft Visual Studio 6\VC98\MFC\INCLUDE
C:\Programme\Microsoft Visual Studio 6\VC98\ATL\INCLUDEaber:
--------------------Konfiguration: screen - Win32 Debug--------------------
Kompilierung läuft...
main.cpp
c:\programme\microsoft sdk\include\gdiplusenums.h(28) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'GraphicsState'
c:\programme\microsoft sdk\include\gdiplusenums.h(28) : fatal error C1004: Unerwartetes Dateiende gefunden
Fehler beim Ausführen von cl.exe.thx

-
Du sollst als erstes <windows.h> inkludieren!
-
-King- schrieb:
Du sollst als erstes <windows.h> inkludieren!
ja aber denn kommen wieder mehr error;-(
habs nun so:#include <windows.h> #include <gdiplus.h> #include <stdlib.h> #include <string> #include <sstream> #include <iostream> #include <stdio.h> using namespace std;--------------------Konfiguration: screen - Win32 Debug--------------------
Kompilierung läuft...
main.cpp
C:\screen\main.cpp(142) : error C2065: 'Graphics' : nichtdeklarierter Bezeichner
C:\screen\main.cpp(142) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'graphics'
C:\screen\main.cpp(142) : error C2065: 'graphics' : nichtdeklarierter Bezeichner
C:\screen\main.cpp(145) : error C2065: 'Image' : nichtdeklarierter Bezeichner
C:\screen\main.cpp(145) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'image'
C:\screen\main.cpp(145) : error C2065: 'image' : nichtdeklarierter Bezeichner
C:\screen\main.cpp(145) : error C2065: 'L' : nichtdeklarierter Bezeichner
C:\screen\main.cpp(148) : error C2228: Der linke Teil von '.DrawImage' muss eine Klasse/Struktur/Union sein
C:\screen\main.cpp(151) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'imageGraphics'
C:\screen\main.cpp(151) : error C2065: 'imageGraphics' : nichtdeklarierter Bezeichner
C:\screen\main.cpp(154) : error C2065: 'SolidBrush' : nichtdeklarierter Bezeichner
C:\screen\main.cpp(154) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'brush'
C:\screen\main.cpp(154) : error C2065: 'brush' : nichtdeklarierter Bezeichner
C:\screen\main.cpp(154) : error C2065: 'Color' : nichtdeklarierter Bezeichner
C:\screen\main.cpp(155) : error C2228: Der linke Teil von '.FillEllipse' muss eine Klasse/Struktur/Union sein
C:\screen\main.cpp(158) : error C2228: Der linke Teil von '.DrawImage' muss eine Klasse/Struktur/Union sein
C:\screen\main.cpp(162) : error C2065: 'GetEncoderClsid' : nichtdeklarierter Bezeichner
C:\screen\main.cpp(163) : error C2228: Der linke Teil von '.Save' muss eine Klasse/Struktur/Union sein
Fehler beim Ausführen von cl.exe.thx

-
Hallo,
du mußt noch die Zielplattform mit einem Makro definieren, sonst werden einige Definitionen "ausgeblendet. Dazu habe ich schon einmal etwas geschrieben, deshalb nur der Verweis:
http://www.c-plusplus.net/forum/viewtopic.php?t=60812
auf den entsprechenden Foren-Eintrag. Ab dem Titel: "SDK-Makros und Projekt-Einstellungen" solltest du mit dem Lesen anfangen...
MfG
-
Probe-Nutzer schrieb:
Hallo,
du mußt noch die Zielplattform mit einem Makro definieren, sonst werden einige Definitionen "ausgeblendet. Dazu habe ich schon einmal etwas geschrieben, deshalb nur der Verweis:
http://www.c-plusplus.net/forum/viewtopic.php?t=60812
auf den entsprechenden Foren-Eintrag. Ab dem Titel: "SDK-Makros und Projekt-Einstellungen" solltest du mit dem Lesen anfangen...
MfG
na das wird ja immer komplexer;-( ich hab ja winxp...aber möchte ja auch das das bild zum speichern für win2000, winme und 98 geht!!! hmmm....
ich möchte das über ein #define machen, das man vor die Header des SDK platziert!!!!! was schreib ich in meinem fall da rein!??? sorry aber ich arbeite mit sdk zum ersten mal!
gar nicht gewusst da so ein abspeichern eines bildes -kompremiert so komplex ist!!;-(thx

-
Das Abspeichern an sich ist ja nicht komplex - nur die Codeeinbindung.
-
WebFritzi schrieb:
Das Abspeichern an sich ist ja nicht komplex - nur die Codeeinbindung.
bitte helft mir noch da bei den codeeinstellungen....ich will das über ein #define machen, die man vor die Header des SDK platziert!!!!!
was schreib ich in meinem fall da rein für define!??? hab winxp...will aber das win2000 und winme das speichern klappt...
danke danke!
thx
-
ok, setze mal (sicherheitshalber) als erste Zeilen vor alle includes:
#define WINVER 0x0410 #define _WIN32_WINDOWS 0x0410und direkt nach den includes (weil ich das in deinem Code nicht gesehen habe):
// hinter den includes using namespace Gdiplus;Microsoft hat nämlich GDI+ in einen namespace verpackt..
MfG
-
danke Probe-Nutzer.....
aktueller code:
#define WINVER 0x0410 #define _WIN32_WINDOWS 0x0410 #include <windows.h> #define WINVER 0x0410 #define _WIN32_WINDOWS 0x0410 #include <gdiplus.h> #define WINVER 0x0410 #define _WIN32_WINDOWS 0x0410 #include <stdlib.h> #define WINVER 0x0410 #define _WIN32_WINDOWS 0x0410 #include <string> #define WINVER 0x0410 #define _WIN32_WINDOWS 0x0410 #include <sstream> #define WINVER 0x0410 #define _WIN32_WINDOWS 0x0410 #include <iostream> #define WINVER 0x0410 #define _WIN32_WINDOWS 0x0410 #include <stdio.h> using namespace Gdiplus; int dc2bitmap(HDC hdc, int width, int height, char *filename); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevIsntance, LPSTR lpCmdine, int nShowCmd) { HDC hdc; RECT rt; HWND hWnd; int iBreite, iHoehe = 0; char szFilename[]="Bitmap.jpeg"; int result=0; stringstream text; // gdiplus.dll laden: HINSTANCE hLib = LoadLibrary("gdiplus.dll"); if(hLib == NULL) { MessageBox(NULL,"Fehler: gdiplus.DLL konnte nicht geladen werden !","error", 0); return 0; } hWnd=GetDesktopWindow(); hdc=GetWindowDC(hWnd); GetWindowRect(hWnd,&rt); iBreite = rt.right - rt.left; // Wir brauchen die Differenz iHoehe = rt.bottom - rt.top; // also die Breite und Höhe des Fensters result=dc2bitmap(hdc, iBreite, iHoehe, szFilename); ReleaseDC(hWnd,hdc); text << "Screen saved "<< result; MessageBox(NULL, text.str().c_str(), "info", MB_OK | MB_ICONINFORMATION); // Aufräumen: FreeLibrary(hLib); return 0; } int dc2bitmap(HDC hdc, int width, int height, char *filename) { HDC hdc2; Graphics graphics(hdc); // Create an Image object based on a PNG file. Image image(L+filename); // Draw the image. graphics.DrawImage(&image, width, height); // Construct a Graphics object based on the image. Graphics imageGraphics(&image); // Alter the image. SolidBrush brush(Color(255, 0, 0, 255)); imageGraphics.FillEllipse(&brush, 20, 30, 80, 50); // Draw the altered image. graphics.DrawImage(&image, 200, 10); // Save the altered image. CLSID pngClsid; GetEncoderClsid(L"image/png", &pngClsid); image.Save(L+filename, &pngClsid, NULL); return 1; }nun kommt das:
--------------------Konfiguration: screen - Win32 Debug-------------------- Kompilierung läuft... main.cpp C:\main.cpp(34) : error C2065: 'stringstream' : nichtdeklarierter Bezeichner C:\main.cpp(34) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'text' C:\main.cpp(34) : error C2065: 'text' : nichtdeklarierter Bezeichner C:\main.cpp(54) : error C2297: '<<' : Ungültig, da der rechte Operand vom Typ 'char [14]' ist C:\main.cpp(56) : error C2228: Der linke Teil von '.str' muss eine Klasse/Struktur/Union sein C:\main.cpp(56) : error C2228: Der linke Teil von '.c_str' muss eine Klasse/Struktur/Union sein C:\main.cpp(159) : error C2065: 'L' : nichtdeklarierter Bezeichner C:\main.cpp(159) : error C2664: '__thiscall Gdiplus::Image::Gdiplus::Image(const unsigned short *,int)' : Konvertierung des Parameters 1 von 'char *' in 'const unsigned short *' nicht moeglich Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat C:\main.cpp(176) : error C2065: 'GetEncoderClsid' : nichtdeklarierter Bezeichner C:\main.cpp(177) : error C2664: 'enum Gdiplus::Status __thiscall Gdiplus::Image::Save(const unsigned short *,const struct _GUID *,const class Gdiplus::EncoderParameters *)' : Konvertierung des Parame ters 1 von 'char *' in 'const unsigned short *' nicht moeglich Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat Fehler beim Ausführen von cl.exe. screen.exe - 10 Fehler, 0 Warnung(en)using namespace Gdiplus....hab ich noch nie gesehn;-( bitte hilf mir mit dem speichern des bildes kompremiert....
thx

-
markoo schrieb:
#define WINVER 0x0410 #define _WIN32_WINDOWS 0x0410 #include <windows.h> #define WINVER 0x0410 #define _WIN32_WINDOWS 0x0410 #include <gdiplus.h> #define WINVER 0x0410 #define _WIN32_WINDOWS 0x0410 #include <stdlib.h> #define WINVER 0x0410 #define _WIN32_WINDOWS 0x0410 #include <string> #define WINVER 0x0410 #define _WIN32_WINDOWS 0x0410 #include <sstream> #define WINVER 0x0410 #define _WIN32_WINDOWS 0x0410 #include <iostream> #define WINVER 0x0410 #define _WIN32_WINDOWS 0x0410 #include <stdio.h>*LOL* Siebenfach hält besser, oder was?
-
*LOL* Siebenfach hält besser, oder was?
ja *gg* wer weiß was da noch alles kommt*lol* vielleicht noch eine header datei umschreiben....arg;-(
bitte help mir Probe-Nutzer damit das worked! die error mit stringstream oben...verseh ich überhaupt nicht;-( waaaaaaahhaha das ist ein zeug!;-(((((
thx

-
also, wie WebFritzi schon angedeutet hat, es reicht einmal die #defines vor alle includes zu setzen.
Die anderen Fehler entstehen wohl, weil du zwar "using namespace Gdiplus;" verwendest, aber dafür "using namespace std;" verschwinden hast lassen, davon habe ich nichts geschrieben, also wieder rein damit in den Code (aber sonst alles so lassen, nichts ersetzen)
MfG
-
ok! habs nun so:
#define WINVER 0x0410 #define _WIN32_WINDOWS 0x0410 #include <windows.h> #include <gdiplus.h> #include <stdlib.h> #include <string> #include <sstream> #include <iostream> #include <stdio.h> using namespace std; using namespace Gdiplus;was mach ich da falsch: ????
int dc2bitmap(HDC hdc, int width, int height, char *filename) { HDC hdc2; Graphics graphics(hdc); // Create an Image object based on a PNG file. Image image(L+filename); // Draw the image. graphics.DrawImage(&image, width, height); // Construct a Graphics object based on the image. Graphics imageGraphics(&image); // Alter the image. SolidBrush brush(Color(255, 0, 0, 255)); imageGraphics.FillEllipse(&brush, 20, 30, 80, 50); // Draw the altered image. graphics.DrawImage(&image, 200, 10); // Save the altered image. CLSID pngClsid; GetEncoderClsid(L"image/png", &pngClsid); image.Save(L+filename, &pngClsid, NULL); return 1; } --------------------Konfiguration: screen - Win32 Debug-------------------- Kompilierung läuft... main.cpp C:\main.cpp(148) : error C2065: 'L' : nichtdeklarierter Bezeichner C:\main.cpp(148) : error C2664: '__thiscall Gdiplus::Image::Gdiplus::Image(const unsigned short *,int)' : Konvertierung des Parameters 1 von 'char *' in 'const unsigned short *' nicht moeglich Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat C:\main.cpp(165) : error C2065: 'GetEncoderClsid' : nichtdeklarierter Bezeichner C:\main.cpp(166) : error C2664: 'enum Gdiplus::Status __thiscall Gdiplus::Image::Save(const unsigned short *,const struct _GUID *,const class Gdiplus::EncoderParameters *)' : Konvertierung des Parame ters 1 von 'char *' in 'const unsigned short *' nicht moeglich Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat Fehler beim Ausführen von cl.exe. screen.exe - 4 Fehler, 0 Warnung(en)thx

-
Was hast Du damit vor ?
Image image(L+filename);