Мы все как-то, полноэкранный режим использовали, но есть возможность подобными методами работать и в обычном режиме. Вот на картинке ниже, что мы получим.
Мы получим доступ ко всему экрану и выведем на экране по нажатию на кнопку наш вертолет. Я сделал совсем просто, а вам никто не мешает убрать фон. Итак, в чем отличия этого режима. Экран используется не только Вами, но и всеми другими программами. Значит, в любой момент Ваш рисунок могут затереть. При установке уровня доступа к экрану нужно указывать DDSCL_NORMAL.
Visual Basic Итак, создаем проект на основе формы. На форму элемент Picture и делаем его невидимым. Кроме того помещаем кнопку. По нажатию на нее будет выводиться рисунок. Производим инициализацию при загрузке формы.
Выводим рисунок по нажатию на кнопку.
Visual C++
Visual Basic
Private Sub Form_Load()
On Error GoTo Ends:
Picture1.Picture = LoadResPicture(101, vbResBitmap)
Set objDirectX = New DirectX7
Set objDirectDraw = objDirectX.DirectDrawCreate("")
objDirectDraw.SetCooperativeLevel Form1.hWnd, DDSCL_NORMAL
stSurfDesc.lFlags = DDSD_CAPS
stSurfDesc.ddsCaps.lCaps = DDSCAPS_PRIMARYSURFACE
Set PrimarySurf = objDirectDraw.CreateSurface(stSurfDesc)
Dim stSurfDescOff As DDSURFACEDESC2
stSurfDescOff.lFlags = DDSD_CAPS Or DDSD_HEIGHT Or DDSD_WIDTH
stSurfDescOff.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN
stSurfDescOff.lHeight = 92
stSurfDescOff.lWidth = 128
Set OffSrc = objDirectDraw.CreateSurface(stSurfDescOff)
a = OffSrc.GetDC
hCompt = CreateCompatibleDC(a)
SelectObject hCompt, Picture1.Picture
BitBlt a, 0, 0, 128, 92, hCompt, 0, 0, SRCCOPY
OffSrc.ReleaseDC (a)
Exit Sub
Ends:
End
End Sub
Private Sub Command1_Click()
Dim r As RECT
r.Top = 0
r.Left = 0
r.Right = 128
r.Bottom = 92
PrimarySurf.Blt r, OffSrc, r, DDBLT_WAIT
End Sub