Witam. Mój problem jest następujący: pisałem kiedyś małe demko w OpenGl (obracający się sześcian). Standardowo jako okna graficznego użyłem komponentu Panel. Później wpadłem na pomysł, że fajnie jak owo demko szalałoby na pulpicie. Problem w tym, iż pomimo pobrania kontekstu pulpitu program wysypywał się komunikatem Access volitation error... Nie wiem gdzie jest błąd. Oto fragment programu gdzie ładuję konteksty:
PROCEDURE TForm1.FormCreate(Sender: TObject);
VAR pfd : TPIXELFORMATDESCRIPTOR;
pf : Integer;
BEGIN
// gdzie chcemy rysowac
dc:=GetDC(Panel1.Handle);
// *********************************************
// powyższą linię zastąpiłem na
// GetWindowDC(GetDesktopWindow);
// *********************************************
// PixelFormat
pfd.nSize:=sizeof(pfd);
pfd.nVersion:=1;
pfd.dwFlags:=PFD_DRAW_TO_WINDOW OR PFD_SUPPORT_OPENGL OR PFD_DOUBLEBUFFER OR 0;
pfd.iPixelType:=PFD_TYPE_RGBA; // PFD_TYPE_RGBA OR PFD_TYPEINDEX
pfd.cColorBits:=16;
pf :=ChoosePixelFormat(dc, @pfd); // Returns format that most closely matches above pixel format
SetPixelFormat(dc, pf, @pfd);
rc :=wglCreateContext(dc); // Rendering Context = window-glCreateContext
wglMakeCurrent(dc,rc); // Make the DC (Form1) the rendering Context
// Initialist GL environment variables
glInit();
END; {TForm1.FormCreate }
Teoretycznie powinno działać. Niestety, teoria i praktyka mijają się. Jak ktoś ma pomysł to poproszę. Z góry dziękuję.