C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




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

Шаг 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 завершение работы программы могло приводить к ошибкам. Об этом в следующем шаге не пугайтесь. А так программа должна просто запускаться и все. Вы пока нечего не видите кроме смены режима.


Загрузить проект | | |
Автор Каев Артем.
[AD]