Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2010, 14:22   #1
i-cpp
Пользователь
 
Регистрация: 05.12.2009
Сообщений: 33
По умолчанию Как правильно запустить приложение в полноэкранном режиме? (DirectX)

Я инициализирую DirectX следующим образом (см. ниже код). В результате полноэкранный режим запускается, но не так как хотелось бы если нажать в углу экрана где обычно находится кнопка закрыть - приложение закрывается и если наводишь на граници монитора появляются стрелочки для изменения размера окна, а этого быть не должно, должно все блокироваться. Как исправить проблему? (ОС Windows 7)

Код:
HRESULT InitDX(HWND hWnd, bool FullScreen)
{
	if(NULL==(pD3D=Direct3DCreate9(D3D_SDK_VERSION)))	//создание основного интерфейса
		return E_FAIL;
	
	D3DPRESENT_PARAMETERS Direct3DParametr; // Структура с настройками
	ZeroMemory(&Direct3DParametr,sizeof(Direct3DParametr)); // Обнуление структуры
	Direct3DParametr.EnableAutoDepthStencil = TRUE; // Управление буфером глубины
	Direct3DParametr.AutoDepthStencilFormat = D3DFMT_D16; // Формат буфера глубины

	if (FullScreen == true) {
		D3DDISPLAYMODE Display;	// структура с настройками монитора
		if (FAILED(pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT,&Display))) // получение настроек монитора
			return E_FAIL;
		Direct3DParametr.Windowed = false; // Рeжим отображения приложения - полноэкранный
		Direct3DParametr.FullScreen_RefreshRateInHz = Display.RefreshRate; // Частота обновления экрана (только в FullScreen)
		Direct3DParametr.SwapEffect = D3DSWAPEFFECT_FLIP; // Метод переключения буферов
		Direct3DParametr.BackBufferFormat = Display.Format; // Формат пикселя(колличество разрядов цвета)
		Direct3DParametr.BackBufferWidth = Display.Width; // Ширина буфера
		Direct3DParametr.BackBufferHeight = Display.Height; // Высота буфера
		Direct3DParametr.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
	} else {
		Direct3DParametr.Windowed = true; // Рeжим отображения приложения - оконный
		Direct3DParametr.SwapEffect = D3DSWAPEFFECT_DISCARD; // Метод переключения буферов
		Direct3DParametr.BackBufferFormat = D3DFMT_UNKNOWN; // Формат пикселя(колличество разрядов цвета)
		Direct3DParametr.BackBufferWidth = 800; // Ширина буфера
		Direct3DParametr.BackBufferHeight = 600; // Высота буфера
	}

	if (FAILED(pD3D->CreateDevice(D3DADAPTER_DEFAULT, // используемая видеокарта
		D3DDEVTYPE_HAL, // тип устройства
		hWnd, // дескриптор родительского окна
		D3DCREATE_SOFTWARE_VERTEXPROCESSING, // режим обработки шейдеров
		&Direct3DParametr, // структура с настройками
		&pD3DDevice))) // указатель на устройство
			return E_FAIL;

	// установить перспективу
	float Aspect = (float)Direct3DParametr.BackBufferWidth / (float)Direct3DParametr.BackBufferHeight;
	D3DXMATRIX matProjection;
	D3DXMatrixPerspectiveFovLH(&matProjection, D3DX_PI/4.0f, Aspect, 2.0f, 1000.0f);
	pD3DDevice->SetTransform(D3DTS_PROJECTION, &matProjection);
	// по умолчанию освещение отключено
	pD3DDevice->SetRenderState(D3DRS_LIGHTING, false);

	return S_OK;
}

Последний раз редактировалось i-cpp; 24.02.2010 в 14:29.
i-cpp вне форума Ответить с цитированием
Старый 26.02.2010, 12:44   #2
Виталий Серов
Заснувший
Форумчанин
 
Регистрация: 13.03.2009
Сообщений: 213
По умолчанию

Может родительское окно создаётся не с тем стилем, попробуй WS_POPUP например
Виталий Серов вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как запустить приложение делфи в фоновом режиме(как процесс)? Diakon Общие вопросы Delphi 4 16.11.2009 13:06
Как запустить приложение через список выделенных файлов simpolmix Общие вопросы Delphi 3 07.05.2009 23:14
Запустить приложение Gawwws Microsoft Office Excel 5 05.12.2008 04:53
как запустить приложение из к примеру текст файла!!! Volkogriz Общие вопросы Delphi 12 12.10.2007 12:27
Как запустить приложение, дождаться его исполнения и только потом выполнять код? il76 Win Api 6 19.07.2007 14:00