mboost-dp1
Fullscreen i Delphi eller C Builder
- Forside
- ⟨
- Forum
- ⟨
- Programmering
Fullscreen i Delphi eller C BuilderHej
Jeg ville bare lige høre om der er nogen der har haft erfaringer med at lave programmer som kører i fullscreen mode, altså helt uden nogen startbar eller noget andet på skærmen end det program som kører fullscreen.
Hvis der er nogen der har noget eksempel kode som viser hvordan man gør dette enten i Delphi eller C++ Builder så ville det være fedt hvis i kunne smide det her på forumet.
HMN
Jeg ville bare lige høre om der er nogen der har haft erfaringer med at lave programmer som kører i fullscreen mode, altså helt uden nogen startbar eller noget andet på skærmen end det program som kører fullscreen.
Hvis der er nogen der har noget eksempel kode som viser hvordan man gør dette enten i Delphi eller C++ Builder så ville det være fedt hvis i kunne smide det her på forumet.
HMN
DirectXEneste måde jeg kender hvor du kan gå i 'rigtig' fullscreen er ved at skifte mode til DirectX, så har du 100% styr på din page. Ellers kan du jo fuske ved at gøre dit program til 'on-top' og så checke på størrelsen af billedet for derefter at gøre den større f.eks. fra -1,-1 til 1025,769 (du ved hvad jeg mener)
ASM Jeg har noget kode til VC++, der laver en simpel "plasma"(simpel sinus color i r,g og b) fullscreen.. vi DX--- men - der er i ASM hvis du kan bruge det.
RE: Fullscreen i Delphi eller C Builderder er kun en måde, hvorpå man kan få rigtig fuldskærm i windows, og det er v.h.a. directx. den før nævnte metode, med et vindue, der fylder hele skærmen, vil se ud som fuldskærm, men så ved man så kan man jo ikke være sikker på størrelsen, så man skal checke hver gang man starter op, og det programmet bliver enormt beregningstungt hvis brugeren kører noget andet end 640x480, selv simple ting hakker ved 1600x1200. Jeg har i forbindelse med win32 versionen af se99 eksempler lavet directx kode til både fuldskærm og window mode.
du kan finde kode og se99 tutorialsne på
http://www.demo-scene.dk
Har lige klippet lidt kode ud, fra et slideshow program jeg engang lavede.
var WindowHandle: HWND;begin (* Gør formen lige så stor som skærmen *) Form1.BorderStyle := bsNone; Form1.Width := Monitor.Width; Form1.Height := Monitor.Height; Form1.Left := 0; Form1.Top := 0; (* Skjul/vis Taskbar *) WindowHandle := FindWindow('Shell_TrayWnd', nil); if WindowHandle 0 then begin ShowWindow(WindowHandle, SW_HIDE); // Skjul Taskbar ShowWindow(WindowHandle, SW_SHOW); // Vis Taskbar end;
end;
var WindowHandle: HWND;begin (* Gør formen lige så stor som skærmen *) Form1.BorderStyle := bsNone; Form1.Width := Monitor.Width; Form1.Height := Monitor.Height; Form1.Left := 0; Form1.Top := 0; (* Skjul/vis Taskbar *) WindowHandle := FindWindow('Shell_TrayWnd', nil); if WindowHandle 0 then begin ShowWindow(WindowHandle, SW_HIDE); // Skjul Taskbar ShowWindow(WindowHandle, SW_SHOW); // Vis Taskbar end;
end;
"Uhm, nu fatter jeg ikke en skid c/c++/delphi, men kan OpenGL ikke lave full-scre[e]n i Windows?"
Jo, men så kan man ikke bruge alle de componenter der følger med til Delphi/C++ Builder. Hvis man fx vil lave en browser der skal kunne gå i full-screen, er det ikke særlig fedt at skulle skrive ALLE komponenter fra bunden, fordi de skal vises i OpenGL.
Hektor, nej, det er ChangeDisplaySettings() [en Win32-API funktion], der sørger for det. Den er desuden ret buggy, så det anbefales at man bruger directx til at skifte opløsning med i stedet.
Rettelse: Det er ikke svært at skifte opløsning med ChangeDisplaySettings, det er faktisk ret simpelt.
Man skal bare sørge for at tjekke om skærmen nu også kan køre i den opløsning man sætter den til.
procedure ChangeScreenRes(Width, Height, Bits, Freq : Word);
var
Dev : DEVMODE;
begin
with Dev do
begin
dmPelsWidth := Width; // bredde i pixels
dmPelsHeight := Height; // højde i pixels
dmBitsPerPel := Bits; // dpi
dmDisplayFrequency := Freq; // opdateringshastighed
end;
ChangeDisplaySettings(Dev, CDS_UPDATEREGISTRY);
end;
Man skal bare sørge for at tjekke om skærmen nu også kan køre i den opløsning man sætter den til.
procedure ChangeScreenRes(Width, Height, Bits, Freq : Word);
var
Dev : DEVMODE;
begin
with Dev do
begin
dmPelsWidth := Width; // bredde i pixels
dmPelsHeight := Height; // højde i pixels
dmBitsPerPel := Bits; // dpi
dmDisplayFrequency := Freq; // opdateringshastighed
end;
ChangeDisplaySettings(Dev, CDS_UPDATEREGISTRY);
end;
Gå til top
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.