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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2012, 19:53   #1
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию Создание окна CreateWindowEx

Добрый вечер. Я создал тему не только для получение результата, но и для того, чтобы узнать причину ошибки. Есть рабочий и не рабочий код, которые должны инициализировать полноэкранный режим и создать окно. Второй просто не создает его. Почему?
Вот рабочий код(можно не смотреть) Но здесь использована CreateWindow
Код:
 DEVMODE scrmode;
	memset(&scrmode,0,sizeof(scrmode));
	scrmode.dmSize=sizeof(scrmode);
	scrmode.dmPelsWidth=640;
	scrmode.dmPelsHeight=480;
	scrmode.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
	if(ChangeDisplaySettings(&scrmode,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL) MessageBox(NULL,NULL,NULL,NULL);

	WNDCLASS WinClass={0};
	WinClass.hInstance=hInst;
	WinClass.lpfnWndProc=(WNDPROC)WndProc;
	WinClass.hCursor=LoadCursor(NULL,IDC_ARROW);
	WinClass.style=CS_VREDRAW|CS_HREDRAW;
	WinClass.lpszClassName=lpClassName;
	RegisterClass(&WinClass);

	hWnd=CreateWindow(lpClassName,TEXT("Kub"),WS_OVERLAPPEDWINDOW|WS_VISIBLE,0,0,1680,1050,NULL,NULL,hInst,NULL);

	return 0;
Нерабочий.
Код:
ATOM CreateOpenGLWindow(char* title,HINSTANCE hInstance, LPCTSTR lpzClassName,int Width, int Height,int Bits)
{
WNDCLASS WinClass={0};
	WinClass.hInstance=hInstance;
	WinClass.lpfnWndProc=(WNDPROC)WndProc;
	WinClass.hCursor=LoadCursor(NULL,IDC_ARROW);
	WinClass.style=CS_VREDRAW|CS_HREDRAW;
	WinClass.lpszClassName=lpzClassName;
	WinClass.hIcon=LoadIcon(NULL,IDI_WINLOGO);
	WinClass.style=CS_HREDRAW|CS_VREDRAW|CS_OWNDC;
	WinClass.hbrBackground=NULL;
	WinClass.lpszMenuName=NULL;

	if(!RegisterClass(&WinClass)) MessageBox(NULL,NULL,NULL,NULL);
	

	DEVMODE scrmode;
	memset(&scrmode,0,sizeof(scrmode));
	scrmode.dmSize=sizeof(scrmode);
	scrmode.dmPelsWidth=Width;
	scrmode.dmPelsHeight=Height;
	scrmode.dmBitsPerPel=Bits;
	scrmode.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
	if(ChangeDisplaySettings(&scrmode,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL) 
MessageBox(NULL,"Невозможно перейти в полноэкранный режим","Ошибка",1);

	hWnd=CreateWindowEx(WS_EX_APPWINDOW,
		                lpzClassName,
						title,
						WS_POPUP,
						0,0,
						Width,
						Height,
						NULL,
						NULL,
						hInstance,
						NULL);
	if (!hWnd)
	{
		MessageBox(NULL,NULL,NULL,NULL);
	}
	
	
	return 0;
}
//---------------------------------
// далее вызов функции
CreateOpenGLWindow("Texture",hInstance,TEXT("Kub"),1680,1050,32);
В итоге
Цитата:
Поток 'Поток Win32' (0x1588) завершился с кодом 0 (0x0).
Поток 'Поток Win32' (0x964) завершился с кодом 0 (0x0).
Поток 'Поток Win32' (0x1648) завершился с кодом 0 (0x0).
Вторые сутки разобраться не могу.
Буду благодарен.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось rpy3uH; 20.02.2012 в 20:27. Причина: Забыл написать симптомы
_PROGRAMM_ вне форума Ответить с цитированием
Старый 20.02.2012, 20:00   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ошибка в расширеном стиле.

поидее стиль WS_EX_APPWINDOW не применяется с WS_POPUP.

кстати, это нехороший способ перехода в фулскрин.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.02.2012, 20:06   #3
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
кстати, это нехороший способ перехода в фулскрин.
Nehe писал. хм как-то писал текст и вставилась цитата Ctrl не жал
Вот как он пишет
Код:
if (fullscreen)// Are We Still In Fullscreen Mode?
	{
		dwExStyle=WS_EX_APPWINDOW;	// Window Extended Style
		dwStyle=WS_POPUP;		// Windows Style
		ShowCursor(FALSE);		// Hide Mouse Pointer
	}
Менял на другие варианты - не помогает.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось rpy3uH; 20.02.2012 в 20:27.
_PROGRAMM_ вне форума Ответить с цитированием
Старый 20.02.2012, 20:37   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

помоему при таком способе все ярлыки на рабочем столе слетают...

правильнее через DirectDraw.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.02.2012, 21:25   #5
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
помоему при таком способе все ярлыки на рабочем столе слетают...

правильнее через DirectDraw.
Да ладно, забудем про полноэкранный режим. Окошко почему не открывается?

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 20.02.2012, 21:30   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

перечитаем первый ответ.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.02.2012, 21:34   #7
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
перечитаем первый ответ.
А вы перечитайте №3 . Независимо от стилей окна не открывается. Много чего подставлял, при этом if (!hWnd) MessageBox(NULL,NULL,NULL,NULL); не срабатывает. Окно как бы создано.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 20.02.2012, 21:39   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

может к расширному стилю я зря придрался.

во втором коде, кто окно то покажет?(нет ни стиля WS_VISIBLE, ни ShowWindow)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.02.2012, 21:47   #9
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Гениально! Спасибо
Цитата:
WS_VISIBLE
А где его взять? Куда вставлять?.
Цитата:
правильнее через DirectDraw.
Оно не на том же принципе сделано?

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 20.02.2012, 21:54   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

простой стиль окна, там где WS_POPUP.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа виснет на CreateWindowEx YourLastSong Win Api 8 12.01.2012 02:09
проблема с CreateWindowEx MasterSporta Win Api 3 17.03.2011 02:52
Создание окна Stas96 Win Api 1 29.10.2010 21:58
FormStyle:=none, с помощью CreateWindowEx Alex Cones Общие вопросы Delphi 5 06.11.2009 19:45
Создание окна через CreateWindowEx Nowichok Win Api 18 16.12.2006 16:37