Шаг 16 - Создаем функцию получения вторичной поверхности

Мы с Вами создадим метод GetSecondarySurf который будет получать вторичную поверхность. Так как он может завершиться ошибкой, тип будет BOOL и возврат TRUE в случае успеха, иначе FALSE.

Visual Basic
Visual C++

Visual Basic

Объявляем переменную объекта вторичной поверхности и структуру DDSCAPS2.

Private PrimarySurf As DirectDrawSurface7
Private SecondarySurf As DirectDrawSurface7
Private strsurf As DDSURFACEDESC2
Private strsurfsec As DDSCAPS2
................

Создаем метод и реализуем получение поверхности.

Public Function GetSecondarySurf() As Boolean
On Error GoTo Errors:
	strsurfsec.lCaps = DDSCAPS_BACKBUFFER
	Set SecondarySurf = PrimarySurf.GetAttachedSurface(strsurfsec)
	GetSecondarySurf = True
	Exit Function
Errors:
	GetSecondarySurf = False
End Function

Используем данный метод при запуске формы, если ошибка прекращаем программу.

Private Sub Form_Load()
...........
If (DirectDrawClass.GetSecondarySurf() = False) Then
	MsgBox ("Error Get Secondary ")
End If

End Sub

Еще один маленький нюанс. В зависимости от Вашей Windows - 9x-2000 завершение работы программы могло приводить к ошибкам. Об этом в следующем шаге не пугайтесь. А так программа должна просто запускаться и все. Вы пока нечего не видите кроме смены режима.

Visual C++

Объявляем переменную объекта вторичной поверхности и структуру DDSCAPS.

class CDirectDraw  
{
public:
..........
private:
	LPDIRECTDRAW lpDD;
	LPDIRECTDRAWSURFACE PrimarySurf;
	LPDIRECTDRAWSURFACE SecondarySurf;
	DDSCAPS strsurfsec;
	HRESULT rezult;
	DDSURFACEDESC strsurf;
};

Создаем функцию и реализуем получение поверхности.

BOOL CDirectDraw::GetSecondarySurf()
{
	strsurfsec.dwCaps = DDSCAPS_BACKBUFFER;
	if (PrimarySurf->GetAttachedSurface(&strsurfsec,
		&SecondarySurf)!= DD_OK) return FALSE;
	return TRUE;
}

Используем данный метод при запуске диалога, если ошибка прекращаем программу.

BOOL CDirectDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	............

	if (cDirecDraw.GetSecondarySurf()   !=TRUE)
	{
		AfxMessageBox("Error Secondary Surf");
			return FALSE;
	}

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

Еще один маленький нюанс. В зависимости от Вашей Windows - 9x-2000 завершение работы программы могло приводить к ошибкам. Об этом в следующем шаге не пугайтесь. А так программа должна просто запускаться и все. Вы пока нечего не видите кроме смены режима.


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