<?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[Bildschirminhalt in Bitmap speichern]]></title><description><![CDATA[<p>Da es ja einige Noobs immer noch nicht verstehen, wie man den Bildschirminhalt<br />
in eine Bitmap speichert, schreibe ich hier mal einige Zeilen Code dazu:<br />
(Jaja... den allergrößten Teil habe ich aus dem FAQ - aber dort wird nicht beschrieben, wie man die Funktion aufruft <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    />)</p>
<p>Für 1024 und 768 müsst Ihr selbstverständlich eure Bildschirmhöhe -und Breite einsetzen <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>
<pre><code class="language-cpp">#include &quot;windows.h&quot;
int dc2bitmap(HDC hdc, int width, int height, char *filename);

int WINAPI WinMain (HINSTANCE hI, HINSTANCE hPrI, PSTR szCmdLine, int iCmdShow)
{
	char *filename=&quot;desk.bmp&quot;;
	HDC hdc=GetDC(NULL);
	dc2bitmap(hdc, 1024, 768, filename); 
	return 0;
}

int dc2bitmap(HDC hdc, int width, int height, char *filename)
{
    HDC hdc2;
    HBITMAP aBmp;
    BITMAPINFO bi;
    HGDIOBJ OldObj;
    void *dibvalues;
    HANDLE fileHandle;

    BITMAPFILEHEADER bmfh;
    BITMAPINFOHEADER bmih;
    DWORD bytes_write;
    DWORD bytes_written;

    hdc2=CreateCompatibleDC(hdc);

    ZeroMemory(&amp;bmih,sizeof(BITMAPINFOHEADER));
    bmih.biSize=sizeof(BITMAPINFOHEADER);
      bmih.biHeight=height;
        bmih.biWidth=width;
        bmih.biPlanes=1;
        bmih.biBitCount=24;
    bmih.biCompression=BI_RGB;
    bmih.biSizeImage = ((((bmih.biWidth * bmih.biBitCount) + 31) &amp; ~31) &gt;&gt; 3) * bmih.biHeight;
        bmih.biXPelsPerMeter = 0;
        bmih.biYPelsPerMeter = 0;
        bmih.biClrImportant = 0;
    //bmih.biSizeImage=(3*bmih.biHeight*bmih.biWidth);
        //bmih.biSizeImage = 0;

    bi.bmiHeader=bmih;

    aBmp=CreateDIBSection(hdc,&amp;bi,DIB_RGB_COLORS,(void**)&amp;dibvalues,NULL,NULL);

    if (aBmp==NULL)
    {return 0;}

    OldObj=SelectObject(hdc2,aBmp);
    BitBlt(hdc2,0,0,width,height,hdc,0,0,SRCCOPY);

    ZeroMemory(&amp;bmfh,sizeof(BITMAPFILEHEADER));
    bmfh.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
    bmfh.bfSize=(3*bmih.biHeight*bmih.biWidth)+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
        bmfh.bfType=0x4d42;
        bmfh.bfReserved1 = 0;
        bmfh.bfReserved2 = 0;

    fileHandle=CreateFile(filename,GENERIC_READ | GENERIC_WRITE,(DWORD)0,NULL,
                                                    CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,(HANDLE) NULL);
    if (fileHandle==INVALID_HANDLE_VALUE)
    {
        return 0;
    }

        // Write the BITMAPFILEHEADER
    bytes_write=sizeof(BITMAPFILEHEADER);
    if (!WriteFile(fileHandle,(void*)&amp;bmfh,bytes_write,&amp;bytes_written,NULL)) {return 0;}

		//Write the BITMAPINFOHEADER
    bytes_write=sizeof(BITMAPINFOHEADER);
    if (!WriteFile(fileHandle,(void*)&amp;bmih,bytes_write,&amp;bytes_written,NULL))  {return 0;}

		//Write the Color Index Array???
    bytes_write=bmih.biSizeImage;//3*bmih.biHeight*bmih.biWidth;
    if (!WriteFile(fileHandle,(void*)dibvalues,bytes_write,&amp;bytes_written,NULL)) {return 0;}

    CloseHandle(fileHandle);

    DeleteObject(SelectObject(hdc2,OldObj));
    DeleteDC(hdc2);

    return 1;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/72015/bildschirminhalt-in-bitmap-speichern</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 15:43:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/72015.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 24 Apr 2004 09:50:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bildschirminhalt in Bitmap speichern on Sat, 24 Apr 2004 09:50:30 GMT]]></title><description><![CDATA[<p>Da es ja einige Noobs immer noch nicht verstehen, wie man den Bildschirminhalt<br />
in eine Bitmap speichert, schreibe ich hier mal einige Zeilen Code dazu:<br />
(Jaja... den allergrößten Teil habe ich aus dem FAQ - aber dort wird nicht beschrieben, wie man die Funktion aufruft <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    />)</p>
<p>Für 1024 und 768 müsst Ihr selbstverständlich eure Bildschirmhöhe -und Breite einsetzen <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>
<pre><code class="language-cpp">#include &quot;windows.h&quot;
int dc2bitmap(HDC hdc, int width, int height, char *filename);

int WINAPI WinMain (HINSTANCE hI, HINSTANCE hPrI, PSTR szCmdLine, int iCmdShow)
{
	char *filename=&quot;desk.bmp&quot;;
	HDC hdc=GetDC(NULL);
	dc2bitmap(hdc, 1024, 768, filename); 
	return 0;
}

int dc2bitmap(HDC hdc, int width, int height, char *filename)
{
    HDC hdc2;
    HBITMAP aBmp;
    BITMAPINFO bi;
    HGDIOBJ OldObj;
    void *dibvalues;
    HANDLE fileHandle;

    BITMAPFILEHEADER bmfh;
    BITMAPINFOHEADER bmih;
    DWORD bytes_write;
    DWORD bytes_written;

    hdc2=CreateCompatibleDC(hdc);

    ZeroMemory(&amp;bmih,sizeof(BITMAPINFOHEADER));
    bmih.biSize=sizeof(BITMAPINFOHEADER);
      bmih.biHeight=height;
        bmih.biWidth=width;
        bmih.biPlanes=1;
        bmih.biBitCount=24;
    bmih.biCompression=BI_RGB;
    bmih.biSizeImage = ((((bmih.biWidth * bmih.biBitCount) + 31) &amp; ~31) &gt;&gt; 3) * bmih.biHeight;
        bmih.biXPelsPerMeter = 0;
        bmih.biYPelsPerMeter = 0;
        bmih.biClrImportant = 0;
    //bmih.biSizeImage=(3*bmih.biHeight*bmih.biWidth);
        //bmih.biSizeImage = 0;

    bi.bmiHeader=bmih;

    aBmp=CreateDIBSection(hdc,&amp;bi,DIB_RGB_COLORS,(void**)&amp;dibvalues,NULL,NULL);

    if (aBmp==NULL)
    {return 0;}

    OldObj=SelectObject(hdc2,aBmp);
    BitBlt(hdc2,0,0,width,height,hdc,0,0,SRCCOPY);

    ZeroMemory(&amp;bmfh,sizeof(BITMAPFILEHEADER));
    bmfh.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
    bmfh.bfSize=(3*bmih.biHeight*bmih.biWidth)+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
        bmfh.bfType=0x4d42;
        bmfh.bfReserved1 = 0;
        bmfh.bfReserved2 = 0;

    fileHandle=CreateFile(filename,GENERIC_READ | GENERIC_WRITE,(DWORD)0,NULL,
                                                    CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,(HANDLE) NULL);
    if (fileHandle==INVALID_HANDLE_VALUE)
    {
        return 0;
    }

        // Write the BITMAPFILEHEADER
    bytes_write=sizeof(BITMAPFILEHEADER);
    if (!WriteFile(fileHandle,(void*)&amp;bmfh,bytes_write,&amp;bytes_written,NULL)) {return 0;}

		//Write the BITMAPINFOHEADER
    bytes_write=sizeof(BITMAPINFOHEADER);
    if (!WriteFile(fileHandle,(void*)&amp;bmih,bytes_write,&amp;bytes_written,NULL))  {return 0;}

		//Write the Color Index Array???
    bytes_write=bmih.biSizeImage;//3*bmih.biHeight*bmih.biWidth;
    if (!WriteFile(fileHandle,(void*)dibvalues,bytes_write,&amp;bytes_written,NULL)) {return 0;}

    CloseHandle(fileHandle);

    DeleteObject(SelectObject(hdc2,OldObj));
    DeleteDC(hdc2);

    return 1;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/507772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/507772</guid><dc:creator><![CDATA[Nobody123456]]></dc:creator><pubDate>Sat, 24 Apr 2004 09:50:30 GMT</pubDate></item><item><title><![CDATA[Reply to Bildschirminhalt in Bitmap speichern on Sat, 24 Apr 2004 11:29:43 GMT]]></title><description><![CDATA[<p>Also das Aufrufen der Funktion sollte man auch so eigentlich hinbekommen <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/507839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/507839</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Sat, 24 Apr 2004 11:29:43 GMT</pubDate></item><item><title><![CDATA[Reply to Bildschirminhalt in Bitmap speichern on Sun, 25 Apr 2004 15:24:57 GMT]]></title><description><![CDATA[<p>Fehlt da nicht ein</p>
<p>DeleteDC(hdc);</p>
<p>??? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/508500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/508500</guid><dc:creator><![CDATA[DerAltenburger]]></dc:creator><pubDate>Sun, 25 Apr 2004 15:24:57 GMT</pubDate></item><item><title><![CDATA[Reply to Bildschirminhalt in Bitmap speichern on Sun, 25 Apr 2004 16:48:30 GMT]]></title><description><![CDATA[<p>Nein ein ReleaseDC(hdc);</p>
<p>Also flenders wie war das doch gleich :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/508551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/508551</guid><dc:creator><![CDATA[D*niel *chumann]]></dc:creator><pubDate>Sun, 25 Apr 2004 16:48:30 GMT</pubDate></item><item><title><![CDATA[Reply to Bildschirminhalt in Bitmap speichern on Sun, 25 Apr 2004 16:49:57 GMT]]></title><description><![CDATA[<p>Desweiteren ist die Zeile</p>
<pre><code class="language-cpp">char *filename=&quot;desk.bmp&quot;;
</code></pre>
<p>mehr als gewagt...</p>
<p>Wenn das CurrentDirectory nicht grad zufälligerweise das der eigenen Anwendung ist, sucht man sich hinterher dumm und dusselig nach dem Bild, was werweißwo gespeichert sein kann.</p>
<p>Besser wäre es da, einen absoluten Pfad anzugeben (z. B. sich vorher den ModuleName und FullPath zur eigenen Anwendung zu holen, Anwendungsnamen entfernen und dann den Bildnamen.bmp dranhängen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/508552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/508552</guid><dc:creator><![CDATA[Hepi]]></dc:creator><pubDate>Sun, 25 Apr 2004 16:49:57 GMT</pubDate></item><item><title><![CDATA[Reply to Bildschirminhalt in Bitmap speichern on Sun, 25 Apr 2004 18:03:14 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16566">@D</a>@niel $chumann: Deine Bemerkung verstehe ich irgendwie nicht so ganz <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/508606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/508606</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Sun, 25 Apr 2004 18:03:14 GMT</pubDate></item><item><title><![CDATA[Reply to Bildschirminhalt in Bitmap speichern on Sun, 25 Apr 2004 18:39:49 GMT]]></title><description><![CDATA[<p>Ich verstehe das so das Du meinst man sollte eigentlich wissen, wie man eine Funktion aufruft, der Threadstarter es mit dem Funktionen aufrufen aber selber nicht so richtig beherrscht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/508625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/508625</guid><dc:creator><![CDATA[Hepi]]></dc:creator><pubDate>Sun, 25 Apr 2004 18:39:49 GMT</pubDate></item><item><title><![CDATA[Reply to Bildschirminhalt in Bitmap speichern on Sun, 25 Apr 2004 18:55:31 GMT]]></title><description><![CDATA[<p>Achso - würde Sinn machen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/508636</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/508636</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Sun, 25 Apr 2004 18:55:31 GMT</pubDate></item><item><title><![CDATA[Reply to Bildschirminhalt in Bitmap speichern on Fri, 27 Aug 2004 12:39:34 GMT]]></title><description><![CDATA[<p>Nur leider kann ich das bmp nicht in Paint öffnen. der speichert irgendwie den Header nicht richtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/593098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/593098</guid><dc:creator><![CDATA[frank2004]]></dc:creator><pubDate>Fri, 27 Aug 2004 12:39:34 GMT</pubDate></item><item><title><![CDATA[Reply to Bildschirminhalt in Bitmap speichern on Fri, 27 Aug 2004 13:30:37 GMT]]></title><description><![CDATA[<p>und du verwendest genau den obenstehenden Code (bzw. mit eingefügtem ReleaseDC(hdc); )?! Bei mir gibt es da nämlich keinerlei Probleme <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/593156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/593156</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Fri, 27 Aug 2004 13:30:37 GMT</pubDate></item></channel></rss>