- fMonitor:= mainform.Monitor;
- Result:= glCreateWnd(fMonitor.Left, fMonitor.Top, fMonitor.Width, fMonitor.Height, BitsPerPel, FHwnd);
- ...
- function glCreateWnd(Left, Top, Width, Height: Integer; PixelDepth: Integer; var FHwnd: HWND): Boolean;
- ...
- //Grab An Instance For Our Window
- h_Instance:= GetModuleHandle(nil);
- // Clear the window class structure
- ZeroMemory(@wndClass, SizeOf(wndClass));
- // Set up the window class
- with wndClass do begin
- Style:= CS_HREDRAW or CS_VREDRAW or CS_OWNDC;
- lpfnWndProc:= @FS_WndProc;
- cbClsExtra:= 0;
- cbWndExtra:= 0;
- HInstance:= h_Instance;
- hIcon:= LoadIcon(HInstance, 'MAINICON');
- hCursor:= LoadCursor(0, IDC_ARROW);
- hbrBackground:= 0;
- lpszMenuName:= nil;
- lpszClassName:= PChar(MainSoftwareName);
- end;
- // Attemp to register the window class
- if (Windows.RegisterClass(wndClass) = 0) then begin
- DLGError_UnableToSwitchToFullScreen;
- Result:= False;
- Exit;
- end;
- DestroyIcon(wndClass.hIcon);
- // Set parameters for the screen setting
- ZeroMemory(@dmScreenSettings, SizeOf(dmScreenSettings));
- dmScreenSettings.dmSize:= SizeOf(dmScreenSettings);
- EnumDisplaySettings(nil, Cardinal(-1), dmScreenSettings);
- Frequency:= dmScreenSettings.dmDisplayFrequency;
- ZeroMemory(@dmScreenSettings, SizeOf(dmScreenSettings));
- dmScreenSettings.dmSize:= SizeOf(dmScreenSettings);
- //Imporove: search a perfect mode (if possible)
- with dmScreenSettings do begin // Set parameters for the screen setting
- dmSize:= SizeOf(dmScreenSettings);
- dmPelsWidth:= Width; // Window width
- dmPelsHeight:= Height; // Window height
- dmBitsPerPel:= PixelDepth; // Window color depth
- dmDisplayFrequency:= Frequency;
- dmFields:= DM_PELSWIDTH or DM_PELSHEIGHT or DM_BITSPERPEL or DM_DISPLAYFREQUENCY;
- end;
- // Try to change screen mode to fullscreen
- if (ChangeDisplaySettings(dmScreenSettings, CDS_FULLSCREEN) = DISP_CHANGE_FAILED) then begin
- DLGError_UnableToSwitchToFullScreen;
- Result:= False;
- Exit;
- end;