<?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[Bitmap scrollen und zoomen]]></title><description><![CDATA[<p>hi leute<br />
ich möchte in einer box ein (grosses) bitmap anzeigen, mit scrollbars und zoom-buttons.<br />
wer hat mir gedankenanstösse / code-schnipsel?</p>
<p>ich habe natürlich scho fleissig danach gesucht, und mich über diese schönen codes gefreut. leider musste ich herausfinden, dass sie für MFC sind (so mit CBitmap, CWnd..).</p>
<p>kann ich diese codes gebrauchen, wenn ich sie genügend verändere?<br />
<a href="http://www.codeguru.com/Cpp/G-M/bitmap/displayingandsizing/article.php/c4939" rel="nofollow">http://www.codeguru.com/Cpp/G-M/bitmap/displayingandsizing/article.php/c4939</a> [scrollen]<br />
<a href="http://www.codeproject.com/miscctrl/wndimg.asp" rel="nofollow">http://www.codeproject.com/miscctrl/wndimg.asp</a> [zoomen / scrollen]</p>
<p>oder muss ich das ganz anders lösen?<br />
vielen dank um jeden hinweis, nate</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/89773/bitmap-scrollen-und-zoomen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 21 Apr 2026 21:46:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/89773.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 22 Oct 2004 15:54:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bitmap scrollen und zoomen on Fri, 22 Oct 2004 15:54:48 GMT]]></title><description><![CDATA[<p>hi leute<br />
ich möchte in einer box ein (grosses) bitmap anzeigen, mit scrollbars und zoom-buttons.<br />
wer hat mir gedankenanstösse / code-schnipsel?</p>
<p>ich habe natürlich scho fleissig danach gesucht, und mich über diese schönen codes gefreut. leider musste ich herausfinden, dass sie für MFC sind (so mit CBitmap, CWnd..).</p>
<p>kann ich diese codes gebrauchen, wenn ich sie genügend verändere?<br />
<a href="http://www.codeguru.com/Cpp/G-M/bitmap/displayingandsizing/article.php/c4939" rel="nofollow">http://www.codeguru.com/Cpp/G-M/bitmap/displayingandsizing/article.php/c4939</a> [scrollen]<br />
<a href="http://www.codeproject.com/miscctrl/wndimg.asp" rel="nofollow">http://www.codeproject.com/miscctrl/wndimg.asp</a> [zoomen / scrollen]</p>
<p>oder muss ich das ganz anders lösen?<br />
vielen dank um jeden hinweis, nate</p>
]]></description><link>https://www.c-plusplus.net/forum/post/635185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/635185</guid><dc:creator><![CDATA[nate7]]></dc:creator><pubDate>Fri, 22 Oct 2004 15:54:48 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmap scrollen und zoomen on Sat, 23 Oct 2004 00:23:58 GMT]]></title><description><![CDATA[<p>Also ich versuche es mal zu später stund zu erklären <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Vorweg sei erwähnt das ich alles in Klassen Packe um mehr als einmal sowas zu verwenden.</p>
<p>a. ich erstelle mir ein Childwindow, das ein Child der Anwendung, bzw. dessen Fenster ist, dies nenne ich scrollbar und gebe ihm nen V+H Scroller</p>
<p>b. Nun erstelle ich ein Childwindow ohne alles was später das Bild sein soll, und als Parent dient das Child aus Punkt a. (alles mittels CreateWindow() )</p>
<p>c. Das erste Child, welches dem Hauptfenster unterlegen ist, gebe ich Position und Größe was mir als Anzeigebereich dient.</p>
<p>d. dem nächsten Child, welches dem ersten Child unterlegen ist, gebe ich die größe der Bitmap an und blitte diese darauf, nu könne wa scrolle.</p>
<p>c: ZOOM:: Ich vergrößere oder verkeinere Das Bildfenster, je nach wunsch und blitte das bild mittel stretch darauf</p>
<p>Ich hoffe das reicht als anreitz, denn zum coden ist mir das jetzt zu spät, n8.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/635470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/635470</guid><dc:creator><![CDATA[MiC++ha]]></dc:creator><pubDate>Sat, 23 Oct 2004 00:23:58 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmap scrollen und zoomen on Sun, 24 Oct 2004 18:12:58 GMT]]></title><description><![CDATA[<p>danke, micha!<br />
eigentlich wollte ich den code so schnell wie möglich irgendwo klauen, aber so ist der lerneffekt eigentlich um einiges grösser!</p>
<p>frage: welche SystemClass bekommt das Scroll-window (und auch das hMapImage)?</p>
<pre><code class="language-cpp">hMapScroll = CreateWindow(&quot;EDIT&quot;,
                                NULL,
                                WS_CHILD | WS_VISIBLE | WS_HSCROLL |
                                    WS_VSCROLL | ES_LEFT | ES_MULTILINE |
                                    ES_AUTOHSCROLL | ES_AUTOVSCROLL,
                                0, 0, 0, 0, // Let the WM_SIZE messge below take care of the size
                                hAppWnd,
                                0,
                                hInst,
                                NULL);
</code></pre>
<p>&quot;Edit&quot; ist es wohl kaum.. Static?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/636509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/636509</guid><dc:creator><![CDATA[nate7]]></dc:creator><pubDate>Sun, 24 Oct 2004 18:12:58 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmap scrollen und zoomen on Sun, 24 Oct 2004 20:55:01 GMT]]></title><description><![CDATA[<p>LOL<br />
Nene so nicht, lege 2 WindowProcedure an:</p>
<pre><code class="language-cpp">LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK ScrollProc(HWND, UINT, WPARAM, LPARAM);
</code></pre>
<p>Nach dem Registrieren deiner Hauptfensterklasse, änderst du paar angaben in der WNDCLASSEX, wie folgt:</p>
<pre><code class="language-cpp">wincl.hIcon               = NULL;
wincl.lpfnWndProc         = ScrollProc;
wincl.lpszClassName       = szScrollName; /* global oben mit namen &quot;Scroller&quot; */
</code></pre>
<p>Nun auch diese Registrieren</p>
<pre><code class="language-cpp">if (!RegisterClassEx (&amp;wincl))
        return 0;
</code></pre>
<p>Nun änderst nur eine Angabe</p>
<pre><code class="language-cpp">wincl.lpszClassName       = szBildName; /* global oben mit namen &quot;Bild&quot; */
</code></pre>
<p>Und wieder Registrieren</p>
<p>In der WndProc des hauptfensters, baust du unter WM_CREaTE: den Scroller (Scrollbox)</p>
<pre><code class="language-cpp">static HWND hScroll = CreateWindow(  &quot;Scroller&quot;,
                                 NULL,
                                 WS_CHILD | WS_VISIBLE | WS_DLGFRAME | WS_HSCROLL | WS_VSCROLL ,
                                 0,
                                 0,
                                 0,
                                 0,
                                 hwnd,
                                 NULL,
                                 ((LPCREATESTRUCT) lParam)-&gt;hInstance,
                                 NULL);
</code></pre>
<p>und unter WM_SIZE: kommt das</p>
<pre><code class="language-cpp">MoveWindow(hScroll, 10, 10, 150, 150, TRUE); /* x,y,width,height nach deinen wünschen */
</code></pre>
<p>unter WM_CREATE: deiner ScrollProc kommt:</p>
<pre><code class="language-cpp">static HWND hPic = CreateWindow(  &quot;Bild&quot;,
                                 NULL,
                                 WS_CHILD | WS_VISIBLE,
                                 0,
                                 0,
                                 0,
                                 0,
                                 hScroll, /* Handle der Scrollbox */
                                 NULL,
                                 ((LPCREATESTRUCT) lParam)-&gt;hInstance,
                                 NULL);
</code></pre>
<p>Und unter WM_SIZE:</p>
<pre><code class="language-cpp">MoveWindow(hPic, 0, 0, 300, 300, TRUE); /* je nach größe des bildes */
</code></pre>
<p>darauf folgt das Blitten des Bildes auf dem DC von hPic</p>
<p>Ich glaub unter WM_SCROLL: mußt du ein InvalidateRect(hPic,NULL,true); setzten damit der inhalt neu gezeichnet wird und nochmals Blitten, ist zum vorteil wenn das HBITMAP also das bild global ist.</p>
<p>***Alle Angaben ohne gewähr, da aus dem FF, aber in dieser richtung geht das***</p>
]]></description><link>https://www.c-plusplus.net/forum/post/636640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/636640</guid><dc:creator><![CDATA[MiC++ha]]></dc:creator><pubDate>Sun, 24 Oct 2004 20:55:01 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmap scrollen und zoomen on Sun, 24 Oct 2004 21:16:41 GMT]]></title><description><![CDATA[<p>danke schön, micha, werd mich gleich mal dran machen, das ganze umzusetzen.. (versuche es gerade in die wnd-klasse einzubauen, aus: <a href="http://www.foosyerdoos.fsnet.co.uk/MainFiles/DynaContainFiles/Code/SimpleWndClass04.html" rel="nofollow">FoosYerDoos</a>). mal schauen, ob ich das packe..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/636659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/636659</guid><dc:creator><![CDATA[nate7]]></dc:creator><pubDate>Sun, 24 Oct 2004 21:16:41 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmap scrollen und zoomen on Mon, 25 Oct 2004 15:04:56 GMT]]></title><description><![CDATA[<p>hi leute<br />
mannomann.. mein kopf raucht ziemlich.. ich hab den durchblick voll nicht mehr. <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>
<p>(1) einerseits hab ich etwas mühe damit, mir vorzustellen, wie die beiden Msg-Procedures nebeneinander laufen sollen.</p>
<p>(2) zweierseits bringe ich den vorschlag von MiC++ha überhaupt nicht in meine Class-Struktur hinein. ich benutze die &quot;Simple Wnd Class IV&quot; aus: <a href="http://www.foosyerdoos.fsnet.co.uk/MainFiles/DynaContainFiles/Code/SimpleWndClass04.html" rel="nofollow">FoosYerDoos</a>.<br />
Ich verstehe zwar einigermassen (≠ich verstehe), wie das gemacht wird, mir fehlt aber z.B. irgendwie die variable, wo ich die WindowStyles, wie &quot;WS_CHILD | WS_HSCROLL&quot;, einsetzen kann. ausserdem fehlt mir allgemein die Übersicht über die Procedures / Wnd-Erstellungen..</p>
<p>(3) ich bitte euch also (wenn ihr viel zeit übrig habt (und das haben ja scheinbar alle in diesem forum!) :p), vielleicht mal den folgenden Quellcode anzuschauen: <a href="http://www.nrg.to/ultinate/sourcecode_all.html" rel="nofollow">http://www.nrg.to/ultinate/sourcecode_all.html</a> (startseite: <a href="http://www.path-finder.ch.tt" rel="nofollow">www.path-finder.ch.tt</a>)</p>
<p>(4) <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/21494">@micha</a>: könnte ich das ganze auch weniger sauber lösen, d.h. ohne klassen? (bin eben so langsam am punkt, wo ich sagen muss: lieber irgendwas gebastelt, als gar nichts (MaturArbeit))</p>
<p>vielen dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/637187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/637187</guid><dc:creator><![CDATA[nate7]]></dc:creator><pubDate>Mon, 25 Oct 2004 15:04:56 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmap scrollen und zoomen on Mon, 25 Oct 2004 16:09:03 GMT]]></title><description><![CDATA[<p>zu 1. Die beiden? Ich habe ein Prog in dem 76 nebeneinander laufen(?), wobei laufen nicht das richtige wort ist. Die WndProc wird von Windows aufgerufen, dabei ist es egal wie viele es sind.</p>
<p>zu 2. Da dir vermutlich einiges Grundwissen fehlt, solltest du erst mal ohne diese &quot;fremd&quot; Klassen arbeiten, um das ganze besser Verstehen zu lernen.</p>
<p>zu 3. Nana <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> Nicht überheblich werden!</p>
<p>zu 4. Ausnahmsweise werde ich dir nacher mal ein beispielcode posten, mit paar Komentare, wichtig ist aber das du verstehst wie es mit den ebenen funktioniert, sprich:<br />
Scrollbox ist ein Kind vom Hauptfenster<br />
Das Bild ist ein Kind von der Scrollbox<br />
Stchwort: Parent-Window</p>
<p>Also ich gehe jetz erstmal Bier holen und Kippen, danach mache ich mal ebend ein beispiel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/637254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/637254</guid><dc:creator><![CDATA[MiC++ha]]></dc:creator><pubDate>Mon, 25 Oct 2004 16:09:03 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmap scrollen und zoomen on Mon, 25 Oct 2004 21:32:46 GMT]]></title><description><![CDATA[<p>Ich hatte das ganz vergessen, (jaja wenn die Augen groß werden bei Wahrsteiner) <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Nun gut ich habe dann mal auf die schnelle was runter geleiert, ist nicht das wahre wie Warsteiner, aber als &quot;dazu&quot; lehrn Effeckt müßte es reichen.<br />
Ich blitte das Bild jetzt direkt in die Scrollbox (ging schneller beim schreiben <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="😉"
    /> ), da eh jetzt hier keine Klassen mit zusatzfunktionen verwendet werden, obwohl man das auch bei der Scrollbox machen kann, aber so wie ich das immer mache, niemt die Scrollbox auch andere sachen auf, als nur nen Bild, hier ist nun kein Zoom dabei, aber wie das geht wurde schon gesagt und du kannst es entsprechend dann umbauen, um erlich zu sein solltest du alles Umbauen, bzw. teile Abschreiben und besser selbst bilden (mit mehr zeit).<br />
Kopier den Mißt nur zum testen, verwende das nicht so, informiere dich über die ganzen Funktionen und lehrne daraus und mach es dann selber und besser.</p>
<p>Auf die schnelle kann man nicht auf alles achten daher nur zum lehrneffeckt:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;

/*  Die WinProcedure des Hauptfensters */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
/* und nun die für die ScrollBox */
LRESULT CALLBACK ScrollProc(HWND, UINT, WPARAM, LPARAM);

/* Nun geben wir allen einen Namen */
char szClassName[ ] = &quot;ScrollBild&quot;;
char szScrollName[ ] = &quot;Scroller&quot;;

/* wenn wir schon mit globalen declarationen dabei sind, machen mir die HANDLE der fenster auch global */
HWND hwnd; /* HANDLE für das Hauptfenster */
HWND hScroll; /* für die Scrollbox */
/* und noch was Wichtiges, die Scrollpositionen */
int xPos,yPos;
/* und nicht zu vergessen auch die ScrollInfo Struct */
SCROLLINFO si;
/* Unser HBITMAP mucke ma och global */
HBITMAP dasBild;

/* DAS hier müßtes du aber kennen ;) die WinMain */
int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    MSG messages;            
    WNDCLASSEX wincl;        

    /* jetzt erstellen wir die Windows Struktur für das Hauptfenster */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* hier bekommt das Hauptfenster seine WndProc */
    wincl.style = CS_DBLCLKS;                 
    wincl.cbSize = sizeof (WNDCLASSEX);

    /* Die normalen Sachen, auch Icon und kein menu */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* Kein Menu */
    wincl.cbClsExtra = 0;                      
    wincl.cbWndExtra = 0;                      
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND; /* normale Hintergrundfarbe */

    /* so jetzt wird das Fenster regestriert */
    if (!RegisterClassEx (&amp;wincl))
        return 0;

    /* jetzt ändern wir einige Angaben um das Scrollbox-Fenster zu registrieren */    
    wincl.hIcon               = NULL; /* kein Icon */
    wincl.lpfnWndProc         = ScrollProc; /* seine eigene WndProc */
    wincl.lpszClassName       = szScrollName; /* tja und der Name */
    /* und ebenfalls registrieren */
    if (!RegisterClassEx (&amp;wincl))
        return 0;

    /* Nun erstellen wir das hauptfenster, danach geht es weiter in der Wnd*/
    hwnd = CreateWindowEx (
           0,                   
           szClassName,        
           &quot;Windows App&quot;,       
           WS_OVERLAPPEDWINDOW, 
           CW_USEDEFAULT,       
           CW_USEDEFAULT,       
           600,                 
           400,                 
           HWND_DESKTOP,        
           NULL,                
           hThisInstance,       
           NULL                 
           );

    /* Und anzeigen */
    ShowWindow (hwnd, nFunsterStil);

    /* diese Stelle habe ich mir ausgesucht um das Bild zu laden ;-) */
    /* beachte das bei diesem Beispiel das Bild im ProgVerzeichnis ist und bild.bmp heist */
    /* des weiteren ist das Bild 400x400pix groß */
    dasBild = (HBITMAP)LoadImage(NULL, &quot;bild.bmp&quot;, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);

    /* Die Messageschleife */
    while (GetMessage (&amp;messages, NULL, 0, 0))
    {
        TranslateMessage(&amp;messages);
        DispatchMessage(&amp;messages);
    }

    return messages.wParam;
}

/*  Hier nun die WndProc des Hauptfensters  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  
    {
        case WM_CREATE:
        {
            /* wenn das Hauptfenster erstellt wurde, erstellen wir die Scrollbox */
            hScroll = CreateWindow(  &quot;Scroller&quot;,
                                 NULL,
                                 /*ein Kind | sichtbar | wie Dialog(klick etc.)|H-scroll|V-scroll*/
                                 WS_CHILD | WS_DLGFRAME | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL,
                                 0,
                                 0,
                                 0,
                                 0,
                                 hwnd,
                                 NULL,
                                 ((LPCREATESTRUCT) lParam)-&gt;hInstance,
                                 NULL);                    

           /* Scrollbars Einschalten */                                    
           EnableScrollBar(hScroll,SB_BOTH,ESB_ENABLE_BOTH);
           /* nun noch die Positions Startwerte 0,0 */
           xPos = 0;
           yPos = 0;                                                                
           /* hier setzten wir nun auch schon mal die Memebers der ScrollInfo */
           /* für die H-Scroll */
           si.cbSize = sizeof(si); 
           si.fMask  = SIF_RANGE | SIF_PAGE | SIF_POS; 
           si.nMin   = 0; 
           si.nMax   = 170; /* Bildbreite - Anzeigebreite (und höhe) + Scrollbar*/
           si.nPage  = 50; 
           si.nPos   = 0; 
           SetScrollInfo(hScroll, SB_HORZ, &amp;si, TRUE);
           /* und V-Scroll */ 
           SetScrollInfo(hScroll, SB_VERT, &amp;si, TRUE); 
           UpdateWindow(hScroll);                                           
            break;
        }    
        case WM_SIZE:
                /* hier setzten wir die Scrollbox mit Position und Größe */
                MoveWindow(hScroll, 10, 10, 250, 250, TRUE);
                break;    
        case WM_DESTROY:
            PostQuitMessage (0);       
            break;
        default:                      
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}
/* nun die WndProc für die Scrollbox */
LRESULT CALLBACK ScrollProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  
    {          
        case WM_HSCROLL:
        {
            /*nun ermitteln wir die H-Position, bzw. setzen diese */
            switch (LOWORD(wParam)) 
            { 

            case SB_PAGEUP: 
                xPos = xPos - 50; 
                break; 

            case SB_PAGEDOWN: 
                xPos = xPos + 50; 
                break; 

            case SB_LINEUP: 
                xPos = xPos - 5; 
                break; 

            case SB_LINEDOWN: 
                xPos = xPos + 5; 
                break; 

            case SB_THUMBPOSITION: 
                xPos = HIWORD(wParam); 
                break;

            case SB_THUMBTRACK: 
                xPos = HIWORD(wParam); 
                break;

            default: 
                xPos = xPos; /* nur zum verständnis ;-) */ 
        }
        /* prüfen ob nicht kleiner 0 */
        if (xPos &lt;0) xPos = 0;
        /* und nicht größer Bild (400-250+20) */
        if (xPos &gt;170) xPos=170;
        /* Und Window schieben */
        ScrollWindowEx(hScroll, -xPos, -yPos, (CONST RECT *) NULL, 
            (CONST RECT *) NULL, (HRGN) NULL, (LPRECT) NULL, 
            SW_INVALIDATE); 
        UpdateWindow(hScroll);
        /* nun noch die daten in der ScollInfo ändern und setzen */ 
        si.cbSize = sizeof(si); 
        si.fMask  = SIF_POS; 
        si.nPos   = xPos; 
        SetScrollInfo(hScroll, SB_HORZ, &amp;si, TRUE); 

            break;    
        }
        /* nun das ganze auch noch für V-Scroll */
        case WM_VSCROLL:
        {
            /*nun ermitteln wir die V-Position, bzw. setzen diese */
            switch (LOWORD(wParam)) 
            { 

            case SB_PAGEUP: 
                yPos = yPos - 50; 
                break; 

            case SB_PAGEDOWN: 
                yPos = yPos + 50; 
                break; 

            case SB_LINEUP: 
                yPos = yPos - 5; 
                break; 

            case SB_LINEDOWN: 
                yPos = yPos + 5; 
                break; 

            case SB_THUMBPOSITION: 
                yPos = HIWORD(wParam); 
                break;

            case SB_THUMBTRACK: 
                yPos = HIWORD(wParam); 
                break;

            default: 
                yPos = yPos; /* nur zum verständnis ;-) */ 
        }
        /* prüfen ob nicht kleiner 0 */
        if (yPos &lt;0) yPos = 0;
        /* und nicht größer Bild (400-250+20) */
        if (yPos &gt;170) yPos=170;
        /* Und Window schieben */
        ScrollWindowEx(hScroll, -xPos, -yPos, (CONST RECT *) NULL, 
            (CONST RECT *) NULL, (HRGN) NULL, (LPRECT) NULL, 
            SW_INVALIDATE); 
        UpdateWindow(hScroll);
        /* nun noch die daten in der ScollInfo ändern und setzen */ 
        si.cbSize = sizeof(si); 
        si.fMask  = SIF_POS; 
        si.nPos   = yPos; 
        SetScrollInfo(hScroll, SB_VERT, &amp;si, TRUE); 

            break;    
        }
        case WM_PAINT:
        {
            /* und das Bild malen */
            InvalidateRect(hScroll,NULL,true);
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hScroll, &amp;ps);
            HDC hdcMem = CreateCompatibleDC(NULL); 
            SelectObject(hdcMem, dasBild); 
            BitBlt(hdc, 0,0, 250, 250,hdcMem,xPos,yPos, SRCCOPY);                    
            DeleteDC(hdcMem);        
            EndPaint(hScroll, &amp;ps); 

            break;    
        }            
        case WM_DESTROY:
            PostQuitMessage (0);       
            break;
        default:                     
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}
</code></pre>
<p>Ich erwähne es nochmal, <strong>NICHT</strong> für eigene projekte übernehmen, sondern nur raus lehrnen, höchstens zum Testen und Fummeln 1:1 kopieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/637508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/637508</guid><dc:creator><![CDATA[MiC++ha]]></dc:creator><pubDate>Mon, 25 Oct 2004 21:32:46 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmap scrollen und zoomen on Tue, 26 Oct 2004 16:35:37 GMT]]></title><description><![CDATA[<p>hey, du hast echt zuviel zeit! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
aber danke viel mal!!<br />
das bringt grade einige ordnung in meine gedanken. nicht gewusst, dass man sich auch noch um die scrollbars<br />
kümmern muss. denn bei einem &quot;edit&quot; geht das ja automatisch.. eben, so lernt man ständig neues..<br />
gruss nate</p>
<p>übrigens: die WinMain hab ich tatsächlich schon gekannt! <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="😉"
    /> (man glaubt es kaum..)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/638137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/638137</guid><dc:creator><![CDATA[nate7]]></dc:creator><pubDate>Tue, 26 Oct 2004 16:35:37 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmap scrollen und zoomen on Tue, 26 Oct 2004 16:52:54 GMT]]></title><description><![CDATA[<p>nate7 schrieb:</p>
<blockquote>
<p>...denn bei einem &quot;edit&quot; geht das ja automatisch...</p>
</blockquote>
<p>Eben nicht, auch das Edit hat eine WndProc in der die ScrollBars gesteuert werden, nur damit hast du nichts zu tun, da die WndProc von Windows vorgegeben ist, du kannst auch mit SetWindowLong eine eigene WndProc dem Edit zuteilen, solltest aber am Ende deiner WndProc die alte des Edits aufrufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/638150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/638150</guid><dc:creator><![CDATA[MiC++ha]]></dc:creator><pubDate>Tue, 26 Oct 2004 16:52:54 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmap scrollen und zoomen on Tue, 26 Oct 2004 17:55:37 GMT]]></title><description><![CDATA[<p>ja, klar.. automatisch läuft ja (leider?) gar nichts..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/638203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/638203</guid><dc:creator><![CDATA[nate7]]></dc:creator><pubDate>Tue, 26 Oct 2004 17:55:37 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmap scrollen und zoomen on Tue, 26 Oct 2004 21:29:59 GMT]]></title><description><![CDATA[<p>nate7 schrieb:</p>
<blockquote>
<p>hey, du hast echt zuviel zeit! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Darauf hatte ich ja noch gar nicht Reagiert,<br />
wenn du erst mal Fit bist in WinAPI, zumindest für die normalen üblichen Sachen, dann leierst du sowas in 15-30min. (je nach dem wieviele Warsteiner schon weg hast <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> ) runter.</p>
<p>Bastelstunden Progger und Copy´n Paste Devs brauchen 2 Tage um zu verstehen was SetWindowText() macht.</p>
<p>Zur Zeit sei gesagt, das ich wenig davon habe, aber zwischendurch mal rein schaue, und ich habe auch noch Familie und mich selbst, daher würde ich mich nicht hinsetzten und Stundenlang was Proggen um nen Fremden zu Zeigen wie was geht, bei sowas billigen mach auch ich mal ne Ausnahme und nehme mir paar Minuten zeit.</p>
<p>Und nicht nur mir ist meine Zeit wichtig, und grob verplant, sondern bei allen anderen auch, daher frage ich mich immer warum einige Noobs es nicht verstehen das man ihnen hier keinen vollen Code liefert.</p>
<p>Sie sahen: Off-Topic by MiC++ha</p>
]]></description><link>https://www.c-plusplus.net/forum/post/638342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/638342</guid><dc:creator><![CDATA[MiC++ha]]></dc:creator><pubDate>Tue, 26 Oct 2004 21:29:59 GMT</pubDate></item></channel></rss>