<?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[Printer()]]></title><description><![CDATA[<p>Hi.</p>
<p>#include &lt;Printers.hpp&gt;<br />
TPrinter *Prntr = Printer();</p>
<p>Sagt in BCB5 &quot;Aufruf einer Nicht-Funktion&quot; <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/topic/139978/printer</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 01:05:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/139978.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 10 Mar 2006 18:53:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Printer() on Fri, 10 Mar 2006 18:53:24 GMT]]></title><description><![CDATA[<p>Hi.</p>
<p>#include &lt;Printers.hpp&gt;<br />
TPrinter *Prntr = Printer();</p>
<p>Sagt in BCB5 &quot;Aufruf einer Nicht-Funktion&quot; <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/1013594</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1013594</guid><dc:creator><![CDATA[stewus]]></dc:creator><pubDate>Fri, 10 Mar 2006 18:53:24 GMT</pubDate></item><item><title><![CDATA[Reply to Printer() on Fri, 10 Mar 2006 18:58:32 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>kann ich mit meinem Builder 5 nicht bestätigen.<br />
Erstell ein neues Projekt, und füge nur die beiden zeilen ein, es wird laufen.</p>
<p>Eventuell hast du bereits eine Variable namens Printer erstellt, die die globale Funktion überdeckt?</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1013603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1013603</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 10 Mar 2006 18:58:32 GMT</pubDate></item><item><title><![CDATA[Reply to Printer() on Fri, 10 Mar 2006 19:09:25 GMT]]></title><description><![CDATA[<p>Argh, nen Button hiess Printer. Super -.-<br />
Danke für deine Hilfe!</p>
<p>Aber dann habe ich jetzt wo das klappt eine neue. Ich habe vor laaaaaanger Zeit mal mir irgendwo diesen Quellcode kopiert. Ich glaube sogar aus diesem Forum.</p>
<p>Er sagt mir jetzt aber in Zeile<br />
pal = static_cast(**-&gt;HIER&lt;-**malloc (sizeof (LOGPALETTE) + (sizeof (PALETTEENTRY) * 256)));</p>
<p>BITMAPINFO* bmp_info = static_cast(<strong>-&gt;HIER&lt;-</strong>::GlobalLock (h_bmp_info));</p>
<p>pal = static_cast(**-&gt;HIER&lt;-**malloc (sizeof (LOGPALETTE) + (sizeof (PALETTEENTRY) * 256)));</p>
<p><em><strong>Fehler: E2274 &lt; erwartet</strong></em></p>
<p>Weiss wer warum? <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>
<pre><code class="language-cpp">TPrinter *p = Printer();

    // create a memory dc for the image
    HDC h_dc = image-&gt;Picture-&gt;Bitmap-&gt;Canvas-&gt;Handle;
    int bmp_w = image-&gt;Picture-&gt;Bitmap-&gt;Width,
    bmp_h = image-&gt;Picture-&gt;Bitmap-&gt;Height;
    HDC h_mem_dc = ::CreateCompatibleDC (h_dc);
    HBITMAP h_mem_bmp = ::CreateCompatibleBitmap (h_dc, bmp_w, bmp_h);
    HBITMAP h_old_bmp = ::SelectObject (h_mem_dc, h_mem_bmp);

    // fix up bad video drivers
    bool is_pal_dev = false;
    LOGPALETTE *pal;
    HPALETTE h_pal, h_old_pal;

    if (::GetDeviceCaps (image-&gt;Canvas-&gt;Handle, RASTERCAPS) &amp; RC_PALETTE)
    {
        pal = static_cast(malloc (sizeof (LOGPALETTE) + (sizeof (PALETTEENTRY) * 256)));
        memset (pal, 0, sizeof (LOGPALETTE) + (sizeof (PALETTEENTRY) * 256));
        pal-&gt;palVersion = 0x300;
        pal-&gt;palNumEntries = ::GetSystemPaletteEntries(image-&gt;Canvas-&gt;Handle, 0, 256, pal-&gt;palPalEntry);
        if (pal-&gt;palNumEntries != 0)
        {
            h_pal = ::CreatePalette (pal);
            h_old_pal = ::SelectPalette (h_mem_dc, h_pal, false);
            is_pal_dev = true;
        }
        else
        {
            free (pal);
        }
    }

    // copy the image on to the memory dc
    ::BitBlt (h_mem_dc, 0, 0, bmp_w, bmp_h, h_dc, 0, 0, SRCCOPY);

    if (is_pal_dev)
    {
        ::SelectPalette (h_mem_dc, h_old_pal, false);
        ::DeleteObject (h_pal);
    }

    // delete the mem dc
    ::SelectObject (h_mem_dc, h_old_bmp);
    ::DeleteDC (h_mem_dc);

    // get memory for a BITMAPIFO Structure
    HANDLE h_bmp_info = ::GlobalAlloc (GHND, sizeof (BITMAPINFO) + (sizeof (RGBQUAD) * 256));
    BITMAPINFO* bmp_info = static_cast(::GlobalLock (h_bmp_info));
    //Set up the structure
    memset (bmp_info, NULL, sizeof (BITMAPINFO) + (sizeof (RGBQUAD) * 255));
    bmp_info-&gt;bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
    bmp_info-&gt;bmiHeader.biPlanes = 1;
    bmp_info-&gt;bmiHeader.biBitCount = 8;
    bmp_info-&gt;bmiHeader.biWidth = bmp_w;
    bmp_info-&gt;bmiHeader.biHeight = bmp_h;
    bmp_info-&gt;bmiHeader.biCompression = BI_RGB;

    // find out how much memory for the bits
    ::GetDIBits (h_dc, h_mem_bmp, 0, bmp_h, NULL, bmp_info, DIB_RGB_COLORS);

    // Allocate memory for the bits
    HANDLE h_bits = GlobalAlloc (GHND, bmp_info-&gt;bmiHeader.biSizeImage);
    void *bits = ::GlobalLock (h_bits);

    // this time get the bits
    ::GetDIBits (h_dc, h_mem_bmp, 0, bmp_h, bits, bmp_info, DIB_RGB_COLORS);

    // fix up for bad video driver
    if (is_pal_dev)
    {
        for (int i = 0; i &lt; pal-&gt;palNumEntries; i++)
        {
            bmp_info-&gt;bmiColors[i].rgbRed = pal-&gt;palPalEntry[i].peRed;
            bmp_info-&gt;bmiColors[i].rgbGreen = pal-&gt;palPalEntry[i].peGreen;
            bmp_info-&gt;bmiColors[i].rgbBlue = pal-&gt;palPalEntry[i].peBlue;
        }
        free (pal);
    }

    // begin the printing
    p-&gt;BeginDoc ();

    // scale print size
    int scale_x, scale_y;
    if (p-&gt;PageWidth &lt; p-&gt;PageHeight)
    {
        scale_x = p-&gt;PageWidth;
        scale_y = image-&gt;Picture-&gt;Height * (p-&gt;PageWidth / bmp_w);
    }
    else
    {
        scale_x = image-&gt;Picture-&gt;Width * (p-&gt;PageHeight / bmp_h);
        scale_y = p-&gt;PageHeight;
    }

    // fix up for print with palette
    is_pal_dev = false;
    if (::GetDeviceCaps (h_dc, RASTERCAPS) &amp; RC_PALETTE)
    {
        pal = static_cast(malloc (sizeof (LOGPALETTE) + (sizeof (PALETTEENTRY) * 256)));
        memset (pal, 0, sizeof (LOGPALETTE) + (sizeof (PALETTEENTRY) * 256));
        pal-&gt;palVersion = 0x300;
        pal-&gt;palNumEntries = 256;
        for (int i = 0; pal-&gt;palNumEntries; i++)
        {
            pal-&gt;palPalEntry[i].peRed = bmp_info-&gt;bmiColors[i].rgbRed;
            pal-&gt;palPalEntry[i].peGreen = bmp_info-&gt;bmiColors[i].rgbGreen;
            pal-&gt;palPalEntry[i].peBlue = bmp_info-&gt;bmiColors[i].rgbBlue;
        }
        h_pal = CreatePalette(pal);
        free (pal);
        h_old_pal = SelectPalette(p-&gt;Canvas-&gt;Handle, h_pal, false);
        is_pal_dev = true;
    }

    // send the bits to the printer
    StretchDIBits(p-&gt;Canvas-&gt;Handle, 0, 0, scale_x, scale_y,
		0, 0, bmp_w, bmp_h, bits,bmp_info, DIB_RGB_COLORS, SRCCOPY);

    // end the print
    p-&gt;EndDoc ();

    // clean up
    ::DeleteObject (h_mem_bmp);
    if (is_pal_dev)
    {
        ::SelectObject (p-&gt;Canvas-&gt;Handle, h_old_pal);
        ::DeleteObject (h_pal);
    }
    ::GlobalUnlock (bits);
    ::GlobalFree (h_bits);
    ::GlobalUnlock (bmp_info);
    ::GlobalFree (h_bmp_info);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1013612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1013612</guid><dc:creator><![CDATA[stewus]]></dc:creator><pubDate>Fri, 10 Mar 2006 19:09:25 GMT</pubDate></item><item><title><![CDATA[Reply to Printer() on Fri, 10 Mar 2006 19:14:43 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>static_cast ist ein Template, du must den Zieltyp in die geforderten Klammern noch angeben</p>
<pre><code class="language-cpp">BITMAPINFO* bmp_info = static_cast&lt;BITMAPINFO*&gt;(::GlobalLock (h_bmp_info));
</code></pre>
<p>Du solltest dir besser noch erstmal die Grundlagen des C++ Standard anschauen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1013613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1013613</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 10 Mar 2006 19:14:43 GMT</pubDate></item><item><title><![CDATA[Reply to Printer() on Fri, 10 Mar 2006 19:23:15 GMT]]></title><description><![CDATA[<p>Danke für die Hilfe, habe natürlich den Ratschlag umgehend befolgt und mich eingelesen. Danke!</p>
<p><a href="http://tutorial.schornboeck.net/casts.htm" rel="nofollow">http://tutorial.schornboeck.net/casts.htm</a><br />
<a href="http://tutorial.schornboeck.net/dynamic_cast.htm" rel="nofollow">http://tutorial.schornboeck.net/dynamic_cast.htm</a><br />
<a href="http://tutorial.schornboeck.net/reinterpret_cast.htm" rel="nofollow">http://tutorial.schornboeck.net/reinterpret_cast.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1013620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1013620</guid><dc:creator><![CDATA[stewus]]></dc:creator><pubDate>Fri, 10 Mar 2006 19:23:15 GMT</pubDate></item></channel></rss>