[Delphi] probleempje met resolutie van monitor

Pagina: 1
Acties:

  • jopiek
  • Registratie: September 2000
  • Laatst online: 30-03 18:57

jopiek

Tja... 'ns ff denken.

Topicstarter
ik heb een applicatie welke ik full screen wil draaien op een van te voren te bepalen monitor. Omdat ik een beamer gebruik is de resolutie van de secondaire monitor vaak anders dan de primaire.

Ik heb naar dit voorbeeld gekeken om een en ander werkend te krijgen...

http://www.delphi-forum.d...7e8dc661c672447af4832d432

so far so good, alles werkt, maar het lukt alleen als beide resoluties evengroot zijn... Dit stuk code deelt blijkbaar gewoon de beschikbare ruimte in twee stukken waarbij doodleuk er vanuit gegaan wordt dat de resolutie van beide monitoren gelijk is...

Alleen, hoe krijg ik de juiste gegevens om te zorgen dat het wel goed gaat? Ik kan natuurlijk per monitor de bschikbare ruimte opvragen en dan de left veranderen, maar vooralsnog zie ik door de bomen het bos niet...

Cogito Ergo Credo


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Kan je de hoogte en breedte van beide schermen al opvragen? Zoja, wat is dan nu precies je probleem/vraag?

We adore chaos because we like to restore order - M.C. Escher


  • jopiek
  • Registratie: September 2000
  • Laatst online: 30-03 18:57

jopiek

Tja... 'ns ff denken.

Topicstarter
LordLarry schreef op maandag 01 augustus 2005 @ 13:19:
Kan je de hoogte en breedte van beide schermen al opvragen? Zoja, wat is dan nu precies je probleem/vraag?
Ik kan alleen de hoogte en breedte van de totale desktop opvragen met deze code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
   result:=false;
   numMon:=GuessNumberMonitors; //aantal monitors, in mijn geval 2
   if (numMon > 0) and (monNum > 0) then begin
      dr:=GetDesktopDimensions;
      width := dr.right - dr.left ;
      start := dr.left;
      pxpMon:=width div numMon;
      if GetwindowRect(hnd,dr) then begin
         newX:=start +(dr.Left mod pxpMon)+((pxpmon*monNum)-pxpmon);
         if movewindow(hnd, newX, dr.Top, dr.right - dr.Left, dr.Bottom - dr.Top,true) then
           result := true; //verplaatst het scherm naar de juist monitor
      end;
   end;


Hier heb ik dus niet al te veel aan, omdat het venster op het scherm met 1024x768 resolutie getoond wordt alsof het 1400x1050 is, terwijl alleen mijn primaire monitor deze resolutie heeft. Ik krijg dus een deel van het venster daarop te zien...

Voor dr krijg ik nu als waarden:

dr: (0, 0, 2424, 1050, (0, 0), (2424, 1050))

[ Voor 17% gewijzigd door jopiek op 01-08-2005 13:36 ]

Cogito Ergo Credo


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 14:55

Janoz

Moderator Devschuur®

!litemod

Wat doet 'GetDesktopDimensions' ? Het lijkt me dat daarin veel meer info staat over het achterhalen hoe groot het scherm is. Deze code plaatst alleen het window aan de hand van waarden gekregen uit eerder genoemnde functie.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 17:49

Knutselsmurf

LED's make things better

Met screen.monitorcount kun je het aantal monitoren opvragen. Vervolgens kun je met screen.monitors[] de properties van de monitoren opvragen.

- This line is intentionally left blank -


  • jopiek
  • Registratie: September 2000
  • Laatst online: 30-03 18:57

jopiek

Tja... 'ns ff denken.

Topicstarter
Knutselsmurf schreef op maandag 01 augustus 2005 @ 13:35:
Met screen.monitorcount kun je het aantal monitoren opvragen. Vervolgens kun je met screen.monitors[] de properties van de monitoren opvragen.
Mja, idd, ik heb me een beetje teveel af laten leiden door die andere lui hun code...
code:
1
2
3
4
5
6
7
8
9
10
11
var
   r : TRect;
begin
  ProjectorScreen.Show;
  with ProjectorScreen, Screen.Monitors[MonitorListbox.ItemIndex]do
  begin
    Borderstyle := bsNone;
    r := WorkareaRect;
    SetBounds(r.Left, r.Top, r.Right-r.Left, r.Bottom-r.Top);
  end;
end;

Zo simpel was het, maar ja, soms lijken simpele dingen erg moeilijk :s
tnx luitjes, ik ga weer de meer interessante features proggen...

[ Voor 1% gewijzigd door jopiek op 01-08-2005 13:41 . Reden: code tag toegevoegd ]

Cogito Ergo Credo


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 03-05 23:13

alienfruit

the alien you never expected

Screen.Monitors, kan je toch gebruiken?
Ooh, weet ie inmiddels al, stomme RSI prog :p
Je moet dan wel even opletten of het ook werkt op kaarten die zelf al meerdere monitoren ondersteunen, zonder meerdere videokaarten in je computer te stoppen. Dat gaf volgens mij nog wel eens problemen.

[ Voor 94% gewijzigd door alienfruit op 01-08-2005 13:48 ]


  • jopiek
  • Registratie: September 2000
  • Laatst online: 30-03 18:57

jopiek

Tja... 'ns ff denken.

Topicstarter
alienfruit schreef op maandag 01 augustus 2005 @ 13:46:
Screen.Monitors, kan je toch gebruiken?
Ooh, weet ie inmiddels al, stomme RSI prog :p
Je moet dan wel even opletten of het ook werkt op kaarten die zelf al meerdere monitoren ondersteunen, zonder meerdere videokaarten in je computer te stoppen. Dat gaf volgens mij nog wel eens problemen.
Het werkt iig op mijn laptop (radeon 9000), ik zal onze media server met een PCIe met twee uitgangen ook ff aan de tand voelen...

Cogito Ergo Credo

Pagina: 1