Windows 10 und Fenstergröße

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
kartmanne
Beiträge: 108
Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
Kontaktdaten:

Windows 10 und Fenstergröße

Beitrag von kartmanne »

HI,

das größte Fenster meines pb-Programms hat die Pixelgröße 700*950. Das erstelle und compiliere ich auf XP. Sowohl auf XP,W7 und auch W8 paßt das proportional "richtig" in die Bildschirmgrößen. W10 hab ich nicht und kann es nicht testen. Nun bekomme ich eine Meldung eines Freundes, der mein Programm auf W10 laufen läßt. Er schreibt, dass der Bildschirm die Auflösung von 3200*1800 hat und das größte Fenster meines Programms paßt in der Höhe nicht auf den Bildschirm. Ich habe eine Abfrage im Programm, die eine "zu kleine" Bildschirmgröße per Messagerequester anzeigt - in seinem Falle aber nicht.

Was kann er tun, damit das Fenster doch voll angezeigt wird - oder was muß ich programmieren, dass es geht?

EDIT: pb5.50
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Windows 10 und Fenstergröße

Beitrag von STARGÅTE »

Bei der Größenangabe des Fensters in OpenWindow() gibst du die "innere" Fenstergröße an, also ohne die Ränder und den Fensterkopf.

Windows 10 hat vermutlich ziemlich große Ränder, sodass es damit zu groß wird.
Du kannst die "außere" Größe deines Fenster ermitteln indem zu WindowHeight() mit dem Flag #PB_Window_FrameCoordinate nutzt. So bekommst du raus, wie groß dein Fenster wirklich wird, wenn du diese und jene innere Größe vergibst.
Du kannst diesen Übergang dann erst mal für ein kleines Fenster ermitteln und dann für das größte berücksichtigen.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
kartmanne
Beiträge: 108
Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
Kontaktdaten:

Re: Windows 10 und Fenstergröße

Beitrag von kartmanne »

HI,

mein Fenster hat die (innere) Höhe 950, der W10-Bildschirm ist 1800 hoch - ich glaube nicht wirklich an einen W10-Fensterrand in der Größenordnung von 900 Pixel...

Ich denke eher, dass das Fenster irgendwie mit Faktor 2 angezeigt wird - ich weiß aber nicht, wer da was einstellen muß, dass es paßt. Ich trage nach, dass der Bildschirm ein 13,3"-Schirm sein soll.

edit: ok, dann hab ich schonmal den Hinweis, dass mein Fenstergrößenwarner nur die innere Fenstergröße anzeigt, denn das von Dir beschriebene flag kannte ich bis heute nicht.
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Windows 10 und Fenstergröße

Beitrag von GPI »

Das Problem ist nicht der Rahmen des Fensters, sondern das ein Scale-Factor in Windows aktiviert ist - vermutlich 200%. Der Monitor ist höchst wahrscheinlich sehr hochauflösend und alte Programme, die das nicht beachten, würden ansonsten ewig kleine Fenster erzeugen, die unbedienbar sind. Dein Programm erzeugt also kein 900 Pixel hohes Fenster, sondern 1800 Pixel. PB unterstützt von sich aus keine Möglichkeit, diesen Scallierungsfaktor zu umgehen.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

Re: Windows 10 und Fenstergröße

Beitrag von _JON_ »

950 Pixel als Höhe ist aber auch etwas daneben :shock:
Das würden hier nur die Desktops schaffen, meisten unserer Laptops würden es nicht komplett anzeigen können.
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
es_91
Beiträge: 383
Registriert: 25.01.2011 04:48

Re: Windows 10 und Fenstergröße

Beitrag von es_91 »

So müsstest Du den Scaling-Faktor unter Windows abrufen können:

Code: Alles auswählen

dc=GetDC_(#Null)

#DefaultDPIX=96.0
#DefaultDPIY=96.0

If dc
	lpx=GetDeviceCaps_(dc,#LOGPIXELSX)
	lpy=GetDeviceCaps_(dc,#LOGPIXELSY)
	If lpx>0
		ScaleDPIx=lpx/#DefaultDPIX
	EndIf
	If lpy>0
		ScaleDPIy=lpy/#DefaultDPIY
	EndIf
	ReleaseDC_(#Null,dc)
EndIf

debug ScaleDPIx
debug ScaleDPIy
Quelle: http://www.purebasic.fr/english/viewtop ... 12&t=40507
Antworten