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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2009, 07:02   #1
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию почему не хочет установить формат пикселя??

Код:
// GL2.cpp: определяет точку входа для приложения.
//

#include <windows.h>
#include <stdlib.h>
//#include <GL\GL.h>
//#include <GL\glu.h>
//#pragma comment(lib,"opengl32.lib")

WNDCLASS MWC;
HWND WH;
MSG M;
HDC DC;

LRESULT CALLBACK WProc(
    HWND hwnd,	// handle of window
    UINT uMsg,	// message identifier
    WPARAM wParam,	// first message parameter
    LPARAM lParam 	/*second message parameter*/)
{
	switch(uMsg)
	{
		case WM_CREATE:
			{
				DC=GetDC(WH);
				if(!DC)
				{
					MessageBox(WH,"Ошибка с контекстом окна","Ошибка",MB_OK);
					break;
				}
				PIXELFORMATDESCRIPTOR pf;
				ZeroMemory(&pf,sizeof(pf));
				pf.nSize=sizeof(pf);
				pf.nVersion=1;
				pf.cDepthBits=32;
				pf.iLayerType=PFD_MAIN_PLANE;
				pf.dwFlags=PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_GENERIC_ACCELERATED;
				int i=ChoosePixelFormat(DC,&pf);
				if(!i)
				{
					MessageBox(WH,"Ошибка подбора формата пикселя","Ошибка",MB_OK);
					break;
				}
				if(!SetPixelFormat(DC,i,&pf))
				{
					MessageBox(WH,"Не удалось установить формат пикселя","Ошибка",MB_OK);//
				}
				break;
			}
		case WM_DESTROY: 
			{
				PostQuitMessage(0);
				break;
			}
		default:return DefWindowProc(hwnd,uMsg,wParam,lParam);
	}
	return 0;
}
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
	MWC.style=CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
	MWC.cbWndExtra=0;
	MWC.hInstance=hInstance;
	MWC.hIcon=LoadIcon(NULL, IDI_APPLICATION);;
	MWC.hbrBackground=(HBRUSH)COLOR_BACKGROUND+1;
	MWC.lpfnWndProc=&WProc;
	MWC.lpszClassName="MyWindow";
	MWC.cbClsExtra=0;
	MWC.hCursor=LoadCursor(NULL, IDC_ARROW);
	MWC.lpszMenuName=0;
	if(!RegisterClass(&MWC))
	{
		MessageBox(0,"Не удалось зарегистрировать класс","Ошибка!",MB_OK);
		return 1;
	}
	WH=CreateWindow("MyWindow","OpenGL",WS_CLIPCHILDREN|WS_CLIPSIBLINGS|WS_OVERLAPPEDWINDOW,0,0,640,480,0,0,hInstance,0);
	if(!WH)
	{
		MessageBox(0,"Не удалось создать окно","Ошибка!",MB_OK);
		return 1;
	}
	ShowWindow(WH,SW_SHOW);
	while(-1!=GetMessage(&M,WH,0,0))
	{
		TranslateMessage(&M);
		DispatchMessage(&M);
	}
	return GetLastError();
}
что не так то
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.11.2009, 14:45   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Вместо WH внутри оконной процедуры лучше использовать hwnd, особенно при обработке сообщения WM_CREATE, так как оно посылается ф-цией CreateWindow и попадает в оконную процедуру ещё до возвращения значения хэндла этой ф-цией. То бишь WH на момент получения DC содержит в себе мусор.
netrino вне форума Ответить с цитированием
Старый 14.11.2009, 22:21   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
почему у меня формат php не открывается в web browsere? vagif.ka1995 PHP 2 11.10.2009 17:00
Простая Программа в DEV C++ не хочет работать! Почему? RomT24 Общие вопросы C/C++ 6 06.08.2009 17:25
Как установить формат даты на всю книгу ? SD_KOROLEV Microsoft Office Excel 3 02.03.2008 20:14
почему не хочет увеличыватся digit2.Value? ZhekON Помощь студентам 2 19.04.2007 18:23