Шаг 34 - Реализуем – Blt

Мы с вами создадим функцию CopySurfToSurf которая будет производить копирование из первого внеэкранного буфера на вторичную поверхность.

Visual Basic
Visual C++

Visual Basic

Создаем метод:

Public Function CopySurfToSurf() As Boolean
On Error GoTo Errors:
 
	Dim r As RECT
	r.Top = 0
	r.Left = 0
	r.Right = 100
	r.Bottom = 240

	SecondarySurf.Blt r, OffSrc1, r, DDBLT_WAIT
	CopySurfToSurf = True
	Exit Function
  
Errors:
CopySutrToSurf = False
End Function

И вызовем его при загрузки формы.

Private Sub Form_Load()
.........
If (DirectDrawClass.CopySurfToSurf() = False) Then
End
End If

DirectDrawClass.Flips

End Sub

В результате Вы увидите стоящего рядом с машиной полицейского после запуска программы.

Visual C++

Создаем функцию.

BOOL CDirectDraw::CopySurfToSurf()
{
	DDBLTFX ddb;
	memset(&ddb,0, sizeof(DDBLTFX));
	ddb.dwSize = sizeof(DDBLTFX);
	ddb.dwDDFX = DDBLTFX_MIRRORLEFTRIGHT;
 
	CRect r;
	r.top = 0;
	r.left = 0;
	r.right = 100;
	r.bottom = 240;
	if (SecondarySurf->Blt(r,offscr1,r,DDBLT_WAIT,&ddb) != DD_OK)
		return FALSE;
	return TRUE;
}

И вызовем ее при загрузки диалога.

BOOL CDirectDlg::OnInitDialog()
{
.........
	if (cDirecDraw.CopySurfToSurf()!=TRUE)
	{
		return FALSE;
	}

	cDirecDraw.Flips(); 

	return TRUE;  // return TRUE  unless you set the focus to a control
}

В результате Вы увидите стоящего рядом с машиной полицейского после запуска программы.


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.