快速程式碼展示之快速的例子程式碼片段(轉)

post0發表於2007-08-12
快速程式碼展示之快速的例子程式碼片段(轉)[@more@]

  [建立一個DirectDraw物件]

  

  LPDIRECTDRAW lpDD;

  HRESULT ddrval;

  ddrval = DirectDrawCreate( NULL, &lpDD, NULL );

  if( ddrval != DD_OK )

  {

  // 在這裡輸出一些錯誤檢測程式碼

  }

  

  [設定協作級別]

  

  ddrval = lpDD->SetCooperativeLevel( hWnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN );

  if( ddrval != DD_OK)

  {

  // 在這裡輸出一些錯誤檢測程式碼

  }

  

  [設定影片模式]

  

  ddrval = lpDD->SetDisplayMode( 640, 480, 8);

  if( ddrval != DD_OK)

  {

  // 在這裡輸出一些錯誤檢測程式碼

  }

  

  [建立主表面]

  

  LPDIRECTDRAWSURFACE lpDDSPrimary;

  DDURFACEDESC ddsd;

  HRESULT ddrval;

  

  // 清除結構中所有的資料

  memset( &&ddsd, 0, sizeof(ddsd) );

  

  // 設定標記

  ddsd.dwSize = sizeof( ddsd );

  ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;

  ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP | DDSCAPS_COMPLEX;

  ddsd.dwBackBufferCount = 1;

  

  // 建立表面

  ddrval = lpDD->CreateSurface( &ddsd, &lpDDSPrimary, NULL );

  

  if( ddrval != DD_OK )

  {

  // 在這裡輸出一些錯誤檢測程式碼

  }

  

  [建立後表面]

  

  DDSCAPS ddscaps;

  

  LPDIRECTDRAWSURFACE lpDDSBack; ddscaps.dwCaps = DDSCAPS_BACKBUFFER;

  ddrval = lpDDSPrimary->GetAttachedSurface( &ddscaps, &lpDDSBack );

  if( ddrval != DD_OK )

  {

  // 在這裡輸出一些錯誤檢測程式碼

  }

  

  [建立離屏表面]

  

  LPDIRECTDRAWSURFACE lpDDSOffscreen;

  DDSURFACEDESC ddsd;

  HRESULT ddrval;

  

  ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;

  ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;

  ddsd.dwHeight = 480;

  ddsd.dwWidth = 640;

  

  ddrval = lpDD->CreateSurface( &ddsd, &lpDDSOffscreen, NULL );

  if( ddrval != DD_OK )

  {

  // 在這裡輸出一些錯誤檢測程式碼

  

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-951806/,如需轉載,請註明出處,否則將追究法律責任。

相關文章