Windowsprogramierung brauche Hillfe

Online-tutorials.net Forenübersicht/C++ / C#/Windowsprogramierung brauche Hillfe

Antworten Neues Thema Bottom Seite 1 

Autor | Nachricht      nächster Thread

hanse
Online-tutorials.net Team

avatar

Registriert seit: 01.1970
Wohnort:Erde
Beiträge:74

Windowsprogramierung brauche Hillfe
Hallo zusammen!
Da ich noch ein ziemlicher Neuling auf dem Gebiet der C++ Programmierung bin habe ich nach einem Sourcecode gesucht der ein Bild in ein Windowsfenster lädt und bin hier fündig geworden:
www.online-tutorials.net/grafik/sourcecodes-17.html

Einziges prob: Ich verstehe leider nur Bahnhof cry Könnte mir Bitte jemand erklären wie das funzt *bitte, bitte, bitte*

22.08.2004 19:17Profil >> Zitat >> IP gespeichert 

Simon
Online-tutorials.net Administrator

avatar

Registriert seit: 01.1970
Wohnort:Dornbirn
Beiträge:1181

Windowsprogrammierung
Ich kommentiere den Code am besten mal:

Code:


//Windowsheader Datei
#include  
    
//Die Windowscallback funktion, kümmert sich um die Nachrichten
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); 

//Typbezeichnung
char szClassName[ ] = "LoadBMP"; 
    
//Windows main Funktion
int WINAPI WinMain (HINSTANCE hThisInstance,HINSTANCE hPrevInstance,     
                    LPSTR lpszArgument,int nFunsterStil)     

    //Erstellt ein Handle für das Fenster (damit kann man auf das Fenster zugreifen)
    HWND hwnd;               
    
    //Msg variable für die Nachrichten an das Fenster
    MSG messages;          

    //Windowinfostructur
    WNDCLASSEX wincl;       

    //Instanz vom Fenster (für dich unwichtig, einfach das hier benutzen)
    wincl.hInstance = hThisInstance; 

    //Klassename
    wincl.lpszClassName = szClassName; 

    //Callback Funktion, wird ausgeführt wenn eine Nachricht kommt
    wincl.lpfnWndProc = WindowProcedure;       

    //Style vom Fenster
    wincl.style = CS_DBLCLKS;                  

    //Größe der Struktur
    wincl.cbSize = sizeof (WNDCLASSEX); 

    //Das Icon (hier AFAIK standardicon, ansonsten löschen) (hier entweder unten in der Taskleiste oder oben beim Fenster)
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION); 

    //Icon 2 (wie oben)
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION); 

    //Standardcursor
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW); 

    //Kein menü
    wincl.lpszMenuName = NULL;                 

    //Vermutlich keine ClearScreenExtras
    wincl.cbClsExtra = 0;                       

    //Keine extras
    wincl.cbWndExtra = 0;       

    //Hintergrund
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND; 

    //Registriert die Klasse wenn Fehlgeschlagen -> abbrechen
    if (!RegisterClassEx (&wincl)) 
    
        return 0; 

    //Erstellt das Fenster Parameter sihe www.msdn.com
    hwnd = CreateWindowEx (0, szClassName, szClassName,     
           WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, 
           CW_USEDEFAULT,544,375,HWND_DESKTOP, 
           NULL,hThisInstance,NULL); 

   //Zeigt das Fenster im Stiel Parameter 2 an    
    ShowWindow (hwnd, nFunsterStil);     
 
    //Solange keine Abbruch msg kommt
    while (GetMessage (&messages, NULL, 0, 0)) 
    {  
        //Callback usw.
        TranslateMessage(&messages);     
        DispatchMessage(&messages); 
    }    
    
    //Gibt die letze msg zurück
    return messages.wParam;     


//Callback Funktion    
LRESULT CALLBACK WindowProcedure  (HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) 
{  
    //Device Context fürs GDI zum Zeichen (so ne Art handle)
    HDC hdc, hdcMem; 
    
    //Bitmap handle
    static HBITMAP      hBitMap; 
    static BITMAP        bitmap ; 
    
    //Ne Struct zum ziechen
    PAINTSTRUCT        ps ; 
    
    
    switch (message)                  
    {    
        //Wenn msg WM_CREATE (wurde erstellt) erhalten
        case WM_CREATE: 

            //Ladet ein Bitmap
            hBitMap = (HBITMAP)LoadImage(0,"bitmap.bmp",IMAGE_BITMAP, 0, 0, 
                LR_DEFAULTSIZE|LR_LOADFROMFILE|LR_CREATEDIBSECTION);  
      
          //Fehler
          if(hBitMap==NULL) 
          { 
            //Gibt einen Fehler aus
            MessageBox(hwnd,"Bild konnte nicht geladen werden","Error",0); 
    
          return -1; 
          } 
         
          //Lässt das eine Handle auf das andere handle zeigen
          GetObject (hBitMap, sizeof (BITMAP), &bitmap) ;         
                  
          return 0; 
        
       case WM_PAINT: 

         //Holt das Handle vom GDI, muss man beim start vom GDI immer machen
         hdc = BeginPaint (hwnd, &ps) ; 

         //kA was das macht, msdn.com gibt sicher hinweise
         hdcMem = CreateCompatibleDC (hdc) ; 

         //Wählt das Objekt aus
         SelectObject (hdcMem, hBitMap) ; 

         //Blittet (Zeichnet) das Object
         BitBlt (hdc, 0, 0, bitmap.bmWidth, bitmap.bmHeight,  
                                    hdcMem, 0, 0, SRCCOPY) ; 

         //Wichtig wieder freigeben
         DeleteDC (hdcMem) ; 

         //DC wieder freigeben (wichtig2)
         EndPaint (hwnd, &ps) ; 
            
         return 0 ; 
         
       case WM_DESTROY: 

         //Löscht das bitmap
         DeleteObject (hBitMap) ;     

         //Sendet Quit
         PostQuitMessage (0);       

         break; 
         
       default:                      

         return DefWindowProc (hwnd, message, wParam, lParam); 
    
    } 
    
    return 0;     
}


-------------------

http://www.online-tutorials.net/wiki/funktionsname

Für was Personal Firewalls GnuGP emails verschlüsseln C++ Tutorial Sicherheits Tutorials



22.08.2004 20:05Homepage >> icq status >>Profil >> Zitat >> IP gespeichert 
Keywords:Hilfe, C++, Windows, Sourcecode,

hanse
Online-tutorials.net Team

avatar

Registriert seit: 01.1970
Wohnort:Erde
Beiträge:74


Super Danke und wie kann ich jetzt machen das sich das Bild z.B. ständig dreht *mit fragen überhäufen* question

22.08.2004 20:19Profil >> Zitat >> IP gespeichert 
Keywords:drehen, Bild

hanse
Online-tutorials.net Team

avatar

Registriert seit: 01.1970
Wohnort:Erde
Beiträge:74


Es hat sich erledigt! Danke für die Bemüungen

24.08.2004 17:13Profil >> Zitat >> IP gespeichert 
                   nächster Thread

Antworten Neues Thema Top Seite 1