<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[GetWindowDC akzeptiert keine 1 Parameter - Warum ?]]></title><description><![CDATA[<p>Servs,<br />
wenn ich eine Funktion zu einer Klasse hinzufüge und dann das Programm erstellen will erscheint das:</p>
<p>D:\eigenes\Know How\Thermische Simulation\Versim\Version 1\Simulation.cpp(638) : error C2660: 'GetWindowDC' : Funktion akzeptiert keine 1 Parameter<br />
D:\eigenes\Know How\Thermische Simulation\Versim\Version 1\Simulation.cpp(641) : error C2660: 'GetWindowRect' : Funktion akzeptiert keine 2 Parameter<br />
D:\eigenes\Know How\Thermische Simulation\Versim\Version 1\Simulation.cpp(758) : error C2660: 'ReleaseDC' : Funktion akzeptiert keine 2 Parameter</p>
<p>Ich hab diese Funktion bereits ausprobiert, Sie funktioniert. Was mache ich falsch.</p>
<pre><code class="language-cpp">int CSimulation::GetScreen(CDC* pDC, HWND hWnd,char* pszfilename)
{
	// Hilfsvariablen festlegen
	void *pBits;
	CBitmap Bitmap;
	RECT rct;
	HDC memDC, hDC;
	BITMAPINFO bmpinfo;
	HBITMAP hbmp;
	BITMAPFILEHEADER fileheader;
	DWORD dwBytes, dwNumColors;
	RGBQUAD colors[256];
	HGDIOBJ hret;

	// Fenster + Attribute ermitteln
	hDC = GetWindowDC(hWnd);
	if(!hDC) return 1;

	GetWindowRect(hWnd,&amp;rct);
	if(!(memDC = CreateCompatibleDC(hDC))) return 1;

	rct.bottom -= rct.top;
	rct.right -= rct.left;

	// BMP Info festlegen
	rct.top = GetDeviceCaps(hDC, BITSPIXEL);
	if(rct.top &lt;= 8) dwNumColors = 256;		// Farbe Bit-Tiefe
	else	dwNumColors = 0;

	if(!(memDC = CreateCompatibleDC(hDC))) return 1;

	bmpinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
	bmpinfo.bmiHeader.biWidth = rct.right;
	bmpinfo.bmiHeader.biHeight = rct.bottom;
	bmpinfo.bmiHeader.biPlanes = 1;
	bmpinfo.bmiHeader.biBitCount = (WORD) rct.top;
	bmpinfo.bmiHeader.biCompression = BI_RGB;
	bmpinfo.bmiHeader.biSizeImage = 0;
	bmpinfo.bmiHeader.biXPelsPerMeter = 0;
	bmpinfo.bmiHeader.biYPelsPerMeter = 0;
	bmpinfo.bmiHeader.biClrUsed = dwNumColors;
	bmpinfo.bmiHeader.biClrImportant = dwNumColors;

	// Erstelle device-independent bitmap (DIB) um direkt zu schreiben
	hbmp = CreateDIBSection(hDC, &amp;bmpinfo, DIB_PAL_COLORS, &amp;pBits, NULL, 0);
	if(!hbmp) return 1;

	// zu kopierende Fläche im Fenster festlegen
	hret = SelectObject(memDC, hbmp);
	if(!hret || (hret == HGDI_ERROR)) return 1;		// wenn hret nicht vorhanden oder ERROR Rückgabe
	if(!BitBlt(
			memDC,									// HANDLE auf Device Context
			0,										// x-Koord Ziel oben links
			0,										// y-Koord Ziel oben links
			rct.right,								// Breite
			rct.bottom,								// Höhe
			hDC,									// HANDLE auf Source Device Context
			0,										// x-Koord Quelle oben links
			0,										// y-Koord Quelle oben links
			SRCCOPY))	return 1;					// kopiert Inhalt direkt von Quelle zu Ziel

	fileheader.bfType = 0x4D42;
	rct.left = dwNumColors * sizeof(RGBQUAD);
	fileheader.bfSize = 
		((rct.right * rct.bottom * rct.top) &gt;&gt; 3)	// Fenstergröße * Tiefe
		+ rct.left									// Absatz
		+ sizeof(BITMAPFILEHEADER)					// Größe FILE Header
		+ sizeof(BITMAPINFOHEADER);					// Größe INFO Header
	fileheader.bfReserved1 = 0;						// muss NULL sein
	fileheader.bfReserved2 = 0;						// muss NULL sein
	fileheader.bfOffBits =							// Offset in bytes zwischen BITMAPFILEHEADER
		rct.left									// und Bildanfang
		+ sizeof(BITMAPFILEHEADER)					// entspricht Größe Header
		+ sizeof(BITMAPINFOHEADER);

	bmpinfo.bmiHeader.biClrImportant = 0;			// Alle Farben
	bmpinfo.bmiHeader.biClrUsed = dwNumColors;		// Farbtiefe

	// Datei zur Ausgabe erstellen
	HANDLE hfl;
	hfl = CreateFile(
		pszfilename,				// Dateiname
		GENERIC_WRITE,				// es wird nur geschrieben, nicht gelesen
		0,
		0,
		CREATE_ALWAYS,				// immer neu erstellen
		FILE_ATTRIBUTE_NORMAL,		// ohne Schreibschutz, Versteckt,etc.
		0	);

	// Wenn File nicht erstellt wird
	if(hfl == INVALID_HANDLE_VALUE)
	{
		DeleteObject(hbmp);
		return 1;
	}

	// Schreibe FILE Header
	WriteFile(
		hfl,						// Ziel zum schreiben
		&amp;fileheader,				// Zeiger auf Daten die geschrieben werden sollen
		sizeof(BITMAPFILEHEADER),	// Größe in Bytes die geschrieben werden sollen
		&amp;dwBytes,					// Zeiger auf Anzahl Bytes, die geschrieben worden sind
		0	);						// WriteFile startet bei der aktuellen Position im File
									// und springt NICHT zurück bis der Vorgang beendet ist
	// Schreibe BMP-INFO Header
	WriteFile(
		hfl,						
		&amp;bmpinfo.bmiHeader,
		sizeof(BITMAPINFOHEADER),
		&amp;dwBytes,
		0	);

	if(!dwNumColors)
	{
		WriteFile(
			hfl,
			colors,
			rct.left,
			&amp;dwBytes,
			0	);
	};

	WriteFile(
		hfl,
		pBits,
		(rct.right * rct.bottom * rct.top) &gt;&gt; 3,
		&amp;dwBytes,
		0	);

	// Speicher frei räumen
	CloseHandle(hfl);
	DeleteObject(hbmp);
	ReleaseDC(hWnd, hDC);
	DeleteDC(memDC);

	return 0;	
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/175826/getwindowdc-akzeptiert-keine-1-parameter-warum</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Apr 2026 13:57:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/175826.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Mar 2007 13:48:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to GetWindowDC akzeptiert keine 1 Parameter - Warum ? on Wed, 14 Mar 2007 13:48:45 GMT]]></title><description><![CDATA[<p>Servs,<br />
wenn ich eine Funktion zu einer Klasse hinzufüge und dann das Programm erstellen will erscheint das:</p>
<p>D:\eigenes\Know How\Thermische Simulation\Versim\Version 1\Simulation.cpp(638) : error C2660: 'GetWindowDC' : Funktion akzeptiert keine 1 Parameter<br />
D:\eigenes\Know How\Thermische Simulation\Versim\Version 1\Simulation.cpp(641) : error C2660: 'GetWindowRect' : Funktion akzeptiert keine 2 Parameter<br />
D:\eigenes\Know How\Thermische Simulation\Versim\Version 1\Simulation.cpp(758) : error C2660: 'ReleaseDC' : Funktion akzeptiert keine 2 Parameter</p>
<p>Ich hab diese Funktion bereits ausprobiert, Sie funktioniert. Was mache ich falsch.</p>
<pre><code class="language-cpp">int CSimulation::GetScreen(CDC* pDC, HWND hWnd,char* pszfilename)
{
	// Hilfsvariablen festlegen
	void *pBits;
	CBitmap Bitmap;
	RECT rct;
	HDC memDC, hDC;
	BITMAPINFO bmpinfo;
	HBITMAP hbmp;
	BITMAPFILEHEADER fileheader;
	DWORD dwBytes, dwNumColors;
	RGBQUAD colors[256];
	HGDIOBJ hret;

	// Fenster + Attribute ermitteln
	hDC = GetWindowDC(hWnd);
	if(!hDC) return 1;

	GetWindowRect(hWnd,&amp;rct);
	if(!(memDC = CreateCompatibleDC(hDC))) return 1;

	rct.bottom -= rct.top;
	rct.right -= rct.left;

	// BMP Info festlegen
	rct.top = GetDeviceCaps(hDC, BITSPIXEL);
	if(rct.top &lt;= 8) dwNumColors = 256;		// Farbe Bit-Tiefe
	else	dwNumColors = 0;

	if(!(memDC = CreateCompatibleDC(hDC))) return 1;

	bmpinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
	bmpinfo.bmiHeader.biWidth = rct.right;
	bmpinfo.bmiHeader.biHeight = rct.bottom;
	bmpinfo.bmiHeader.biPlanes = 1;
	bmpinfo.bmiHeader.biBitCount = (WORD) rct.top;
	bmpinfo.bmiHeader.biCompression = BI_RGB;
	bmpinfo.bmiHeader.biSizeImage = 0;
	bmpinfo.bmiHeader.biXPelsPerMeter = 0;
	bmpinfo.bmiHeader.biYPelsPerMeter = 0;
	bmpinfo.bmiHeader.biClrUsed = dwNumColors;
	bmpinfo.bmiHeader.biClrImportant = dwNumColors;

	// Erstelle device-independent bitmap (DIB) um direkt zu schreiben
	hbmp = CreateDIBSection(hDC, &amp;bmpinfo, DIB_PAL_COLORS, &amp;pBits, NULL, 0);
	if(!hbmp) return 1;

	// zu kopierende Fläche im Fenster festlegen
	hret = SelectObject(memDC, hbmp);
	if(!hret || (hret == HGDI_ERROR)) return 1;		// wenn hret nicht vorhanden oder ERROR Rückgabe
	if(!BitBlt(
			memDC,									// HANDLE auf Device Context
			0,										// x-Koord Ziel oben links
			0,										// y-Koord Ziel oben links
			rct.right,								// Breite
			rct.bottom,								// Höhe
			hDC,									// HANDLE auf Source Device Context
			0,										// x-Koord Quelle oben links
			0,										// y-Koord Quelle oben links
			SRCCOPY))	return 1;					// kopiert Inhalt direkt von Quelle zu Ziel

	fileheader.bfType = 0x4D42;
	rct.left = dwNumColors * sizeof(RGBQUAD);
	fileheader.bfSize = 
		((rct.right * rct.bottom * rct.top) &gt;&gt; 3)	// Fenstergröße * Tiefe
		+ rct.left									// Absatz
		+ sizeof(BITMAPFILEHEADER)					// Größe FILE Header
		+ sizeof(BITMAPINFOHEADER);					// Größe INFO Header
	fileheader.bfReserved1 = 0;						// muss NULL sein
	fileheader.bfReserved2 = 0;						// muss NULL sein
	fileheader.bfOffBits =							// Offset in bytes zwischen BITMAPFILEHEADER
		rct.left									// und Bildanfang
		+ sizeof(BITMAPFILEHEADER)					// entspricht Größe Header
		+ sizeof(BITMAPINFOHEADER);

	bmpinfo.bmiHeader.biClrImportant = 0;			// Alle Farben
	bmpinfo.bmiHeader.biClrUsed = dwNumColors;		// Farbtiefe

	// Datei zur Ausgabe erstellen
	HANDLE hfl;
	hfl = CreateFile(
		pszfilename,				// Dateiname
		GENERIC_WRITE,				// es wird nur geschrieben, nicht gelesen
		0,
		0,
		CREATE_ALWAYS,				// immer neu erstellen
		FILE_ATTRIBUTE_NORMAL,		// ohne Schreibschutz, Versteckt,etc.
		0	);

	// Wenn File nicht erstellt wird
	if(hfl == INVALID_HANDLE_VALUE)
	{
		DeleteObject(hbmp);
		return 1;
	}

	// Schreibe FILE Header
	WriteFile(
		hfl,						// Ziel zum schreiben
		&amp;fileheader,				// Zeiger auf Daten die geschrieben werden sollen
		sizeof(BITMAPFILEHEADER),	// Größe in Bytes die geschrieben werden sollen
		&amp;dwBytes,					// Zeiger auf Anzahl Bytes, die geschrieben worden sind
		0	);						// WriteFile startet bei der aktuellen Position im File
									// und springt NICHT zurück bis der Vorgang beendet ist
	// Schreibe BMP-INFO Header
	WriteFile(
		hfl,						
		&amp;bmpinfo.bmiHeader,
		sizeof(BITMAPINFOHEADER),
		&amp;dwBytes,
		0	);

	if(!dwNumColors)
	{
		WriteFile(
			hfl,
			colors,
			rct.left,
			&amp;dwBytes,
			0	);
	};

	WriteFile(
		hfl,
		pBits,
		(rct.right * rct.bottom * rct.top) &gt;&gt; 3,
		&amp;dwBytes,
		0	);

	// Speicher frei räumen
	CloseHandle(hfl);
	DeleteObject(hbmp);
	ReleaseDC(hWnd, hDC);
	DeleteDC(memDC);

	return 0;	
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1245447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245447</guid><dc:creator><![CDATA[etsmart]]></dc:creator><pubDate>Wed, 14 Mar 2007 13:48:45 GMT</pubDate></item><item><title><![CDATA[Reply to GetWindowDC akzeptiert keine 1 Parameter - Warum ? on Wed, 14 Mar 2007 14:37:00 GMT]]></title><description><![CDATA[<p>Mach mal jeweils :: vor die angemahnten Funktionen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245491</guid><dc:creator><![CDATA[connan]]></dc:creator><pubDate>Wed, 14 Mar 2007 14:37:00 GMT</pubDate></item><item><title><![CDATA[Reply to GetWindowDC akzeptiert keine 1 Parameter - Warum ? on Wed, 14 Mar 2007 16:00:54 GMT]]></title><description><![CDATA[<p>Dann begründe es ihm auch ... CSimulation scheint von CWnd abgeleitet zu sein ... d.h. du musst auf den global namespace zugreifen um einen HWND bei der Funktion anzugehen ... und das macht man wie connan schon sagte mit ::</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245573</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 14 Mar 2007 16:00:54 GMT</pubDate></item><item><title><![CDATA[Reply to GetWindowDC akzeptiert keine 1 Parameter - Warum ? on Wed, 14 Mar 2007 19:31:34 GMT]]></title><description><![CDATA[<p>mit :: funktioniert es nicht. Es gibt zwar keine Fehlermeldung, es wird aber auch nicht mehr ausgeführt. Dafür gibts jetzt ständig memory leak meldungen.</p>
<p>Und bei<br />
hDC = GetWindowDC(hWnd);<br />
if(!hDC) return 1;<br />
wird immer 1 zurückgegeben.</p>
<pre><code class="language-cpp">class CSimulation : public CView
{
	CString xAxisText, yAxisText;
	int flag;
	int flagZoom;
	bool lButton1; // flag for left mouse button down 1st time
	bool lButton2; // flag for left mouse button down 2nd time
	CPoint	P1, P2; // Begin and End of Zoom Window
	bool flag_Temp_UI_Curve; // saves the latest view (temperature-curves or UI-curves)
	// if a change occurs, the curve selection will be reset
	int m_Curve_Check[10]; // maximum number of curves
public:
	CSimulation();           // Dynamische Erstellung verwendet geschützten Konstruktor
	int GetScreen(CDC* pDC, HWND hWnd,char* pszfilename);

	DECLARE_DYNCREATE(CSimulation)

// Attribute
private:

public:
	CVerSimDoc* GetDocument();

// Operationen
public:

// Überschreibungen
	// Vom Klassen-Assistenten generierte virtuelle Funktionsüberschreibungen
	//{{AFX_VIRTUAL(CSimulation)
	protected:
	virtual void OnDraw(CDC* pDC);      // Überschrieben zum Zeichnen dieser Ansicht
	virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
	virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
	virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
	virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
	//}}AFX_VIRTUAL

// Implementierung
protected:
	virtual ~CSimulation();
	void GetGraphAdjustment(short int	flag);
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext&amp; dc) const;
#endif

	// Generierte Nachrichtenzuordnungsfunktionen
protected:
	//{{AFX_MSG(CSimulation)
	afx_msg void OnSimulationLastspiel();
	afx_msg void OnSimulationSimulationLastspiel();
	afx_msg void OnSimulationEinstellungenDiagrammfarbe();
	afx_msg void OnSimulationEinstellungenHintergrundfarbe();
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
	afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
	afx_msg void OnSimulationDiagrammAuswahl();
	afx_msg void OnSimViPlotsCalc();
	afx_msg void OnSimViPlotsSel();
	afx_msg void OnSimulationUiEinst();
	afx_msg void OnSimulationUiverlufeTest();
	afx_msg int OnBildspeichern(CDC* pDC, HWND hWnd, char* lpszFilename);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1245733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245733</guid><dc:creator><![CDATA[etsmart]]></dc:creator><pubDate>Wed, 14 Mar 2007 19:31:34 GMT</pubDate></item><item><title><![CDATA[Reply to GetWindowDC akzeptiert keine 1 Parameter - Warum ? on Thu, 15 Mar 2007 05:56:23 GMT]]></title><description><![CDATA[<p>Wenn das eine Fensterklasse ist, kannst du das hwnd-Kram einfach weglassen, dann wird das aktuelle Fenster genommen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245840</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Thu, 15 Mar 2007 05:56:23 GMT</pubDate></item></channel></rss>