VB6平面編01.ウィンドウ

何もないウィンドウとりあえずウィンドウが表示されないとDirectDraw使う意味がないんでウィンドウをまず表示できるようにします。
何より先に用意しなければならないのは当然ウィンドウそのもの、つまりVBなのでフォームです。
余計なイベントが発生して厄介なことになるといやので、一応BorderStyle=0にしておきます。
サイズはプログラム側で決めるので適当で構いません。
コントロールメニューがないので終了用のコードも忘れずに。

準備

Dim dd7 As DirectDraw7
Dim ddsPrimary As DirectDrawSurface7
Dim ddsBack As DirectDrawSurface7

これがなきゃどうにもなりませんわな。
続いてフォームの初期設定を。

BorderStyle = 0
Move 0, 0, 640 * Screen.TwipsPerPixelX, 480 * Screen.TwipsPerPixelX
Show

本当はこれらは必要ないのですが、クリッパーやらなにやらの面倒な設定を避けたいためにこうしています。

フルスクリーン

Dim ddsd As DDSURFACEDESC2
Dim ddscaps As DDSCAPS2
Set dd7 = dx7.DirectDrawCreate("")
dd7.SetCooperativeLevel hWnd, DDSCL_EXCLUSIVE Or DDSCL_FULLSCREEN
dd7.SetDisplayMode 640, 480, 16, 0, DDSDM_DEFAULT
With ddsd
    .lFlags = DDSD_CAPS Or DDSD_BACKBUFFERCOUNT
    .ddscaps.lCaps = DDSCAPS_PRIMARYSURFACE Or DDSCAPS_FLIP Or DDSCAPS_COMPLEX
    .lBackBufferCount = 1
End With
Set ddsPrimary = dd7.CreateSurface(ddsd)
ddscaps.lCaps = DDSCAPS_BACKBUFFER
Set ddsBack = ddsPrimary.GetAttachedSurface(ddscaps)

このあたりはほぼ定型なので一つ一つの解説は省略。
dd7.SetDisplayModeの16のところは24にするともっときれいな画像が表示できるようになるとか。

ウィンドウ

Dim ddsd As DDSURFACEDESC2
Dim ddscaps As DDSCAPS2
Set dd7 = dx7.DirectDrawCreate("")
dd7.SetCooperativeLevel hWnd, DDSCL_NORMAL
With ddsd
    .lFlags = DDSD_CAPS
    .ddscaps.lCaps = DDSCAPS_PRIMARYSURFACE
End With
Set ddsPrimary = dd7.CreateSurface(ddsd)
With ddsd
    .lFlags = DDSD_CAPS Or DDSD_WIDTH Or DDSD_HEIGHT
    .lWidth = 640
    .lHeight = 480
    .ddscaps.lCaps = DDSCAPS_OFFSCREENPLAIN Or DDSCAPS_VIDEOMEMORY
End With
Set ddsBack = dd7.CreateSurface(ddsd)

えっとですね、今回はクリッパーの設定を抜いています。
まあこっちもほぼ定型なんで説明は要らないでしょ?

サンプル(1.83kilobyte)