<?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[Probleme mit GetDIBits()]]></title><description><![CDATA[<p>Hallo zusammen!</p>
<p>Der folgende Code soll einfach zum Test eine Bitmap von der Festplatte in ein HBITMAP laden und dann wieder in eine andere Datei speichern. Nur leider gibt GetDIBits() immer 0 zurück!</p>
<pre><code class="language-cpp">SrcBmp= (HBITMAP) LoadImage(NULL,&quot;C:\\test.bmp&quot;,0,0,0,LR_LOADFROMFILE);
	HANDLE fileHandle= CreateFile(&quot;C:\\test2.bmp&quot;,GENERIC_READ | GENERIC_WRITE, (DWORD)0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, (HANDLE)NULL);
	DWORD bytes_to_write;
	DWORD bytes_written;
	HDC	hBitmapDC= CreateCompatibleDC(hdc);
	void* bmpData;

	BITMAPINFO bmpInfo;
	BITMAPFILEHEADER bmpFileHeader;
	ZeroMemory(&amp;bmpFileHeader,sizeof(bmpFileHeader));
	BITMAPINFOHEADER bmpInfoHeader;
	ZeroMemory(&amp;bmpInfoHeader,sizeof(bmpInfoHeader));

	bmpInfoHeader.biSize=						sizeof(BITMAPINFOHEADER);
	bmpInfoHeader.biHeight=						1024;
	bmpInfoHeader.biWidth=						1024;
	bmpInfoHeader.biPlanes=						1;
	bmpInfoHeader.biBitCount=					24;
	bmpInfoHeader.biCompression=				BI_RGB;
	bmpInfoHeader.biSizeImage=					((((bmpInfoHeader.biWidth * bmpInfoHeader.biBitCount) + 31) &amp; ~31) &gt;&gt; 3) * bmpInfoHeader.biHeight; 
	bmpInfoHeader.biXPelsPerMeter=				0;
	bmpInfoHeader.biYPelsPerMeter=				0;
	bmpInfoHeader.biClrImportant=				0;

	bmpInfo.bmiHeader=							bmpInfoHeader;

	bmpFileHeader.bfOffBits=					sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
	bmpFileHeader.bfSize=						(3*bmpInfoHeader.biHeight*bmpInfoHeader.biWidth)+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); 
	bmpFileHeader.bfType=						0x4d42;
	bmpFileHeader.bfReserved1=					0;
	bmpFileHeader.bfReserved2=					0;

	if(GetDIBits(hBitmapDC,SrcBmp,0, bmpInfoHeader.biHeight,&amp;bmpData,&amp;bmpInfo,DIB_RGB_COLORS)== 0)
	{
		MessageBox(0,&quot;Error&quot;,&quot;&quot;,0);
	}

	bytes_to_write= sizeof(bmpFileHeader);
	WriteFile(fileHandle,(void*)&amp;bmpFileHeader,bytes_to_write,&amp;bytes_written,NULL);

	bytes_to_write= sizeof(bmpInfoHeader);
	WriteFile(fileHandle,(void*)&amp;bmpInfoHeader,bytes_to_write,&amp;bytes_written,NULL);

	bytes_to_write= bmpInfoHeader.biSizeImage;
	WriteFile(fileHandle,(void*)&amp;bmpData,bytes_to_write,&amp;bytes_written,NULL);
</code></pre>
<p>Findet jemand den Fehler?</p>
<p>Gruß veryxRV</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/182605/probleme-mit-getdibits</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 12:42:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182605.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 27 May 2007 10:15:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit GetDIBits() on Sun, 27 May 2007 16:43:52 GMT]]></title><description><![CDATA[<p>Hallo zusammen!</p>
<p>Der folgende Code soll einfach zum Test eine Bitmap von der Festplatte in ein HBITMAP laden und dann wieder in eine andere Datei speichern. Nur leider gibt GetDIBits() immer 0 zurück!</p>
<pre><code class="language-cpp">SrcBmp= (HBITMAP) LoadImage(NULL,&quot;C:\\test.bmp&quot;,0,0,0,LR_LOADFROMFILE);
	HANDLE fileHandle= CreateFile(&quot;C:\\test2.bmp&quot;,GENERIC_READ | GENERIC_WRITE, (DWORD)0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, (HANDLE)NULL);
	DWORD bytes_to_write;
	DWORD bytes_written;
	HDC	hBitmapDC= CreateCompatibleDC(hdc);
	void* bmpData;

	BITMAPINFO bmpInfo;
	BITMAPFILEHEADER bmpFileHeader;
	ZeroMemory(&amp;bmpFileHeader,sizeof(bmpFileHeader));
	BITMAPINFOHEADER bmpInfoHeader;
	ZeroMemory(&amp;bmpInfoHeader,sizeof(bmpInfoHeader));

	bmpInfoHeader.biSize=						sizeof(BITMAPINFOHEADER);
	bmpInfoHeader.biHeight=						1024;
	bmpInfoHeader.biWidth=						1024;
	bmpInfoHeader.biPlanes=						1;
	bmpInfoHeader.biBitCount=					24;
	bmpInfoHeader.biCompression=				BI_RGB;
	bmpInfoHeader.biSizeImage=					((((bmpInfoHeader.biWidth * bmpInfoHeader.biBitCount) + 31) &amp; ~31) &gt;&gt; 3) * bmpInfoHeader.biHeight; 
	bmpInfoHeader.biXPelsPerMeter=				0;
	bmpInfoHeader.biYPelsPerMeter=				0;
	bmpInfoHeader.biClrImportant=				0;

	bmpInfo.bmiHeader=							bmpInfoHeader;

	bmpFileHeader.bfOffBits=					sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
	bmpFileHeader.bfSize=						(3*bmpInfoHeader.biHeight*bmpInfoHeader.biWidth)+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); 
	bmpFileHeader.bfType=						0x4d42;
	bmpFileHeader.bfReserved1=					0;
	bmpFileHeader.bfReserved2=					0;

	if(GetDIBits(hBitmapDC,SrcBmp,0, bmpInfoHeader.biHeight,&amp;bmpData,&amp;bmpInfo,DIB_RGB_COLORS)== 0)
	{
		MessageBox(0,&quot;Error&quot;,&quot;&quot;,0);
	}

	bytes_to_write= sizeof(bmpFileHeader);
	WriteFile(fileHandle,(void*)&amp;bmpFileHeader,bytes_to_write,&amp;bytes_written,NULL);

	bytes_to_write= sizeof(bmpInfoHeader);
	WriteFile(fileHandle,(void*)&amp;bmpInfoHeader,bytes_to_write,&amp;bytes_written,NULL);

	bytes_to_write= bmpInfoHeader.biSizeImage;
	WriteFile(fileHandle,(void*)&amp;bmpData,bytes_to_write,&amp;bytes_written,NULL);
</code></pre>
<p>Findet jemand den Fehler?</p>
<p>Gruß veryxRV</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293004</guid><dc:creator><![CDATA[veryxRV]]></dc:creator><pubDate>Sun, 27 May 2007 16:43:52 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit GetDIBits() on Sun, 27 May 2007 16:41:14 GMT]]></title><description><![CDATA[<p>&quot;The bitmap identified by the hbmp parameter <strong>must not</strong> be selected into a device context when the application calls this function.&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293212</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Sun, 27 May 2007 16:41:14 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit GetDIBits() on Sun, 27 May 2007 16:43:35 GMT]]></title><description><![CDATA[<p>Danke, hab ich jetzt rausgenommen. Funktioniert aber trotzdem nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293214</guid><dc:creator><![CDATA[veryxRV]]></dc:creator><pubDate>Sun, 27 May 2007 16:43:35 GMT</pubDate></item></channel></rss>