<?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[BITMAPFILEHEADER und BITMAPINFOHEADER Strukturen...]]></title><description><![CDATA[<p>Hi,</p>
<p>wenn ich unter Windows eine Bitmap selbst erstellen und abspeichern will, kann ich ja die beiden oben genannten Strukturen ausfüllen, diese an den Anfang einer Datei schreiben und anschließend meine Bilddaten schreiben. Das funktioniert auch wunderbar. Allerdings soll mein Programm plattformunabhängig sein, deshalb habe ich mir die beiden Strukturen selbst definiert, genauso wie sie in der Dokumentation stehen. Das sieht bei mir unter Win32 dann so aus:</p>
<pre><code class="language-cpp">typedef struct tagBITMAPFILEHEADER {
	unsigned short    bfType;
	unsigned long     bfSize;
	unsigned short    bfReserved1;
	unsigned short    bfReserved2;
	unsigned long     bfOffBits;
} BITMAPFILEHEADER;

typedef struct tagBITMAPINFOHEADER{
	unsigned long      biSize;
	long		   biWidth;
	long	           biHeight;
	unsigned short     biPlanes;
	unsigned short     biBitCount;
	unsigned long      biCompression;
	unsigned long      biSizeImage;
	long	           biXPelsPerMeter;
	long               biYPelsPerMeter;
	unsigned long      biClrUsed;
	unsigned long      biClrImportant;
} BITMAPINFOHEADER;
</code></pre>
<p>Original stehen folgende Datentypen da:<br />
- DWORD anstelle von unsigned long<br />
- WORD anstelle von unsigned short<br />
- LONG anstelle von long</p>
<p>Da ich aber unter Win32 bin, sind die oben genannten Typen (also DWORD,WORD,LONG) aber exakt so als Typedef definiert wie ich es jetzt geschrieben habe, deshalb sollte das ja keine Probleme geben.</p>
<p>Tja und das Problem ist jetzt halt, dass so doch nicht funktioniert. Die Bitmaps die damit erstellt werden können nicht geöffnet werden, weil irgendwas mit dem Bitmap-Header nicht stimmt. Ich hab nur absolut keine Ahnung woran das liegen könnte. Jemand eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/189725/bitmapfileheader-und-bitmapinfoheader-strukturen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 02 Jul 2026 02:11:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/189725.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Aug 2007 08:14:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to BITMAPFILEHEADER und BITMAPINFOHEADER Strukturen... on Thu, 16 Aug 2007 08:14:27 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>wenn ich unter Windows eine Bitmap selbst erstellen und abspeichern will, kann ich ja die beiden oben genannten Strukturen ausfüllen, diese an den Anfang einer Datei schreiben und anschließend meine Bilddaten schreiben. Das funktioniert auch wunderbar. Allerdings soll mein Programm plattformunabhängig sein, deshalb habe ich mir die beiden Strukturen selbst definiert, genauso wie sie in der Dokumentation stehen. Das sieht bei mir unter Win32 dann so aus:</p>
<pre><code class="language-cpp">typedef struct tagBITMAPFILEHEADER {
	unsigned short    bfType;
	unsigned long     bfSize;
	unsigned short    bfReserved1;
	unsigned short    bfReserved2;
	unsigned long     bfOffBits;
} BITMAPFILEHEADER;

typedef struct tagBITMAPINFOHEADER{
	unsigned long      biSize;
	long		   biWidth;
	long	           biHeight;
	unsigned short     biPlanes;
	unsigned short     biBitCount;
	unsigned long      biCompression;
	unsigned long      biSizeImage;
	long	           biXPelsPerMeter;
	long               biYPelsPerMeter;
	unsigned long      biClrUsed;
	unsigned long      biClrImportant;
} BITMAPINFOHEADER;
</code></pre>
<p>Original stehen folgende Datentypen da:<br />
- DWORD anstelle von unsigned long<br />
- WORD anstelle von unsigned short<br />
- LONG anstelle von long</p>
<p>Da ich aber unter Win32 bin, sind die oben genannten Typen (also DWORD,WORD,LONG) aber exakt so als Typedef definiert wie ich es jetzt geschrieben habe, deshalb sollte das ja keine Probleme geben.</p>
<p>Tja und das Problem ist jetzt halt, dass so doch nicht funktioniert. Die Bitmaps die damit erstellt werden können nicht geöffnet werden, weil irgendwas mit dem Bitmap-Header nicht stimmt. Ich hab nur absolut keine Ahnung woran das liegen könnte. Jemand eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345541</guid><dc:creator><![CDATA[nep]]></dc:creator><pubDate>Thu, 16 Aug 2007 08:14:27 GMT</pubDate></item><item><title><![CDATA[Reply to BITMAPFILEHEADER und BITMAPINFOHEADER Strukturen... on Thu, 16 Aug 2007 09:54:16 GMT]]></title><description><![CDATA[<p>Ich würde zuallererst das Padding prüfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345595</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 16 Aug 2007 09:54:16 GMT</pubDate></item><item><title><![CDATA[Reply to BITMAPFILEHEADER und BITMAPINFOHEADER Strukturen... on Thu, 16 Aug 2007 10:00:43 GMT]]></title><description><![CDATA[<p>Erstens: Padding (zumindest für die Header-Typen) ausschalten - sonst kommt der Compiler auf die Idee, Füllbytes zwischen die Daten zu quetschen (z.B. zwischen bfType und bfSize).</p>
<p>Zweitens: short und long sind laut Standard mindestens 2 bzw. 4 Byte groß, dürfen aber auch größer sein - du brauchst int-Typen, die <strong>genau</strong> 2 (WORD) bzw. 4 (DWORD/LONG) Byte groß sind.</p>
<p>Drittens: Hast du die Header auch korrekt mit Werten gefüllt (z.B. bfType==19778 (&quot;BM&quot;) oder biSize==40)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345600</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 16 Aug 2007 10:00:43 GMT</pubDate></item><item><title><![CDATA[Reply to BITMAPFILEHEADER und BITMAPINFOHEADER Strukturen... on Thu, 16 Aug 2007 10:31:56 GMT]]></title><description><![CDATA[<p>Argh, hab gar nicht an das Padding gedacht.<br />
Lag am Padding. Jetzt funktioniert es.<br />
Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345615</guid><dc:creator><![CDATA[nep]]></dc:creator><pubDate>Thu, 16 Aug 2007 10:31:56 GMT</pubDate></item><item><title><![CDATA[Reply to BITMAPFILEHEADER und BITMAPINFOHEADER Strukturen... on Thu, 16 Aug 2007 16:15:16 GMT]]></title><description><![CDATA[<p>Mal so interesse halber:</p>
<p>Wie schaltet man das Padding denn ab?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345889</guid><dc:creator><![CDATA[Wissen haben wollender]]></dc:creator><pubDate>Thu, 16 Aug 2007 16:15:16 GMT</pubDate></item><item><title><![CDATA[Reply to BITMAPFILEHEADER und BITMAPINFOHEADER Strukturen... on Thu, 16 Aug 2007 17:48:58 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#pragma pack(1) // Ausrichtung auf Byte-Grenzen (Padding ausschalten)
struct xyz      // Strukturen deklarieren
{
...
};
#pragma pack()  // Standard Padding wieder herstellen
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1345930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345930</guid><dc:creator><![CDATA[Zausel]]></dc:creator><pubDate>Thu, 16 Aug 2007 17:48:58 GMT</pubDate></item><item><title><![CDATA[Reply to BITMAPFILEHEADER und BITMAPINFOHEADER Strukturen... on Fri, 17 Aug 2007 06:56:12 GMT]]></title><description><![CDATA[<p>Wissen haben wollender schrieb:</p>
<blockquote>
<p>Wie schaltet man das Padding denn ab?</p>
</blockquote>
<p>Das hängt vom verwendeten Compiler ab (Zausel's Variante ist für den MSVC gültig).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346077</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 17 Aug 2007 06:56:12 GMT</pubDate></item><item><title><![CDATA[Reply to BITMAPFILEHEADER und BITMAPINFOHEADER Strukturen... on Fri, 17 Aug 2007 19:32:08 GMT]]></title><description><![CDATA[<p>was gibts denn sonst noch für varianten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346589</guid><dc:creator><![CDATA[ahaa]]></dc:creator><pubDate>Fri, 17 Aug 2007 19:32:08 GMT</pubDate></item><item><title><![CDATA[Reply to BITMAPFILEHEADER und BITMAPINFOHEADER Strukturen... on Sat, 18 Aug 2007 08:20:47 GMT]]></title><description><![CDATA[<p>Der BCC akzeptiert die MSVC-Padding-Anweisungen auch. Wer es ganz sauber machen möchte, sollte aber folgendes verwenden:</p>
<pre><code class="language-cpp">#ifdef __BORLANDC__
 #pragma pack(push, n)
#endif

...

#ifdef __BORLANDC__
 #pragma pack(pop)
#endif
</code></pre>
<p>Dadurch wird das Padding hinterher nicht auf den Default- sondern auf den zuletzt eingestellten Wert gesetzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346761</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Sat, 18 Aug 2007 08:20:47 GMT</pubDate></item><item><title><![CDATA[Reply to BITMAPFILEHEADER und BITMAPINFOHEADER Strukturen... on Sat, 18 Aug 2007 08:42:27 GMT]]></title><description><![CDATA[<p>Beim g++ schreibt man einfach hinter jedes Attribut __attribute__((packed)).<br />
Hab ich zumindest bei mir gemacht und hat funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346764</guid><dc:creator><![CDATA[nep]]></dc:creator><pubDate>Sat, 18 Aug 2007 08:42:27 GMT</pubDate></item><item><title><![CDATA[Reply to BITMAPFILEHEADER und BITMAPINFOHEADER Strukturen... on Tue, 21 Aug 2007 11:26:52 GMT]]></title><description><![CDATA[<p>Ui!<br />
Das es verschiedene Versionen zum 'Paddig abschalten' gibt wusste ich noch gar nicht.<br />
Dann wäre es wohl doch besser, der Portabilität zu liebe, Paddinbytes zu benutzen ?<br />
Aber auf was ausrichten, auf 4Byte-Grenzen ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348892</guid><dc:creator><![CDATA[Zausel]]></dc:creator><pubDate>Tue, 21 Aug 2007 11:26:52 GMT</pubDate></item></channel></rss>