Wie gehts jetzt weiter??



  • Ich hab jetzt nen code, mitdem ich ein DX8 - Fenster öffne:

    //////////////////// Main.cpp ////////////////////
    
    #include <windows.h>   
    #include <dx\ddraw.h>   
    #include "error.hpp" //Für die error-funktionen  ///////////////////////////             
    
    LPDIRECTDRAW7 DirectDraw;           // Pointer auf das DirectDraw-Object
    HRESULT       ddrval;               // Wichtig für unsere Rückgabewerte
    
    // Die Nachrichtenverarbeitungsschleife.
    // Alles was mit unserem Fenster geschieht kann hier verarbeitet werden.
    
    LRESULT CALLBACK WindowProc (HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
    {
      switch (message)
      {
    
       // Wenn die Nachricht kommt das das Fenster geschlossen werden soll landen wir hier.
       case WM_DESTROY:
    	{
         // DirectDraw zurücksetzen.
         DirectDraw->Release();
         DirectDraw = NULL;
         PostQuitMessage(0);  // Schließt das Fenster
    	 return(0);
    	}
    	 break;
    
    // Ansonsten passiert nichts.
    	default: break;
      }
      return (DefWindowProc(hwnd,message,wparam,lparam));
    }
    
    int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hprevinst, LPSTR lpcmdline, int ncmdshow)
    {
     WNDCLASSEX winclass;   // Die Fensterstruktur
     HWND       hwnd;
     MSG        message;
     const char szclassname[]="Klassenname";
    
      // Wir füllen die Fensterstruktur mit Informationen 
      winclass.cbSize        = sizeof(WNDCLASSEX);
      winclass.style         = CS_HREDRAW | CS_VREDRAW;
      winclass.lpfnWndProc   = WindowProc;
      winclass.cbClsExtra    = 0;
      winclass.cbWndExtra    = 0;
      winclass.hInstance     = hinst;
      winclass.hIcon         = LoadIcon(NULL,IDI_APPLICATION);
      winclass.hIconSm       = LoadIcon(NULL, IDI_APPLICATION); //Wichtig, sonst läuft der ganze scheiß nicht ;)
      winclass.hCursor       = LoadCursor(NULL,IDC_ARROW);
      winclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
      winclass.lpszMenuName  = NULL;
      winclass.lpszClassName = szclassname;
      //Fenster registrieren
      if(!RegisterClassEx (&winclass))
      {
        //Den letzten Fehler an error übergeben
        error(GetLastError(), __LINE__, "Fensterklasse konnte nicht registriert werden.", "RegisterClassEx-Error");
       return 0;
      }
    
     hwnd = CreateWindowEx (/*NULL*/WS_EX_APPWINDOW, szclassname, "Titelleiste", WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hinst, NULL);
    
     ShowWindow(hwnd,ncmdshow);
     UpdateWindow(hwnd);
    
     ddrval = DirectDrawCreateEx(NULL, (VOID**)&DirectDraw, IID_IDirectDraw7, NULL); 
     DDSCL_FULLSCREEN für eine
     ddrval = DirectDraw->SetCooperativeLevel (hwnd, DDSCL_NORMAL | DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
    
     ddrval = DirectDraw->SetDisplayMode (800,600,16, 0, 0);
    
      while (GetMessage(&message,NULL,0,0))
      { 
     	TranslateMessage(&message);
    	DispatchMessage(&message);
      }
    
     return message.wParam ;
    }
    

    Wie muss ich jetzt vorgehen, wenn ich ein Bitmap (16*16) einfügen möchte??
    (Muss nicht unbedingt nen code sein)

    Kann ich jetzt einfach ne ein Bitmap einfügen, oder muss ich vorher noch irgendwas erstellen (z.B. eine fläche, auf der man Bitmaps einfügen kann) ??



  • In der Window Proc Message WM_PAINT abfangen und dann kanns los gehen 😉



  • ok, danke


Anmelden zum Antworten