W8 und Survace pro, Bug bei OpenWindow()

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
tft
Beiträge: 650
Registriert: 08.09.2004 20:18
Computerausstattung: GFX 3060 Ti , i7 12700F , 32 GB Ram , 900 GB SSD , TV
Wohnort: Dachsen
Kontaktdaten:

W8 und Survace pro, Bug bei OpenWindow()

Beitrag von tft »

Hallo,

ich schreibe für mich selber gerade ein Programm zum Abspielen einer Speziellen Playliste, die Anime Videos
Anzeigt. Auf meinem Survace pro 3 habe ich das Problem das beim öfffnen eines Fenster die Werte für
Pos X und Pos Y nur funktionieren wenn ich sie halbiere. Dabei ist die verwendete Auflösung des Desktop
nicht massgeblich. Wie stelle ich fest das der Code auf einer Survace Pro 3 Maschiene läuft. Damit ich darauf
entsprechend reagieren kann. Denn ein BugFix ist nicht so schnell in sicht oder ?

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , CH-Dachsen/DE-Berlin/TR-Antalya
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung

PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler :-)
pstryk
Beiträge: 4
Registriert: 03.12.2013 20:46

Re: W8 und Survace pro, Bug bei OpenWindow()

Beitrag von pstryk »

Du musst in den Eigenschaften von deinem Programm die Skalierung bei hohem DPI-Wert deaktivieren. Die Deaktivierung ist auch über ein spezielles Manifest, dass in den Compiler-Optionen im Register "Ressourcen" eingetragen wird möglich.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: W8 und Survace pro, Bug bei OpenWindow()

Beitrag von ts-soft »

@pstryk
Haste zufällig nen link oder den Text der Manifest?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
pstryk
Beiträge: 4
Registriert: 03.12.2013 20:46

Re: W8 und Survace pro, Bug bei OpenWindow()

Beitrag von pstryk »

Der Text der Manifest-Datei lautet:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="X86"
    name="CompanyName.ProductName.YourApp"
    type="win32" />
  <description></description>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        processorArchitecture="X86"
        publicKeyToken="6595b64144ccf1df"
        language="*" />
    </dependentAssembly>
  </dependency>
  <application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings>
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
    </windowsSettings>
  </application>
</assembly>
Eingebunden wird es über eine RC-Datei mit folgendem Inhalt:

1 24 "D:\\Programieren\\main.manifest"

__________________________________________________
Code-Tags hinzugefügt
27.02.2015
RSBasic
Benutzeravatar
tft
Beiträge: 650
Registriert: 08.09.2004 20:18
Computerausstattung: GFX 3060 Ti , i7 12700F , 32 GB Ram , 900 GB SSD , TV
Wohnort: Dachsen
Kontaktdaten:

Re: W8 und Survace pro, Bug bei OpenWindow()

Beitrag von tft »

Hallo,

das mit dem Manifest verstehe ich leider nicht. Und die Option bei PB kann ich nicht finden.
Gets fieleicht etwas genauer ??? Danke

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , CH-Dachsen/DE-Berlin/TR-Antalya
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung

PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler :-)
Benutzeravatar
tft
Beiträge: 650
Registriert: 08.09.2004 20:18
Computerausstattung: GFX 3060 Ti , i7 12700F , 32 GB Ram , 900 GB SSD , TV
Wohnort: Dachsen
Kontaktdaten:

Re: W8 und Survace pro, Bug bei OpenWindow()

Beitrag von tft »

Hallo,
das mit der Option habe ich gefunden. Die Befindet sich im Icon der Start exe. Aber das macht
die sachen nur noch schlimmer. Jetzt sind die Fenster komplett im a a.

Gruss TFT

PS: Dann werde ich wohl bei Desktops Grösser Full HD die Werte einfach teilen durch 2, bis ich eine andere
lösung habe
TFT seid 1989 , Turgut Frank Temucin , CH-Dachsen/DE-Berlin/TR-Antalya
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung

PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler :-)
pstryk
Beiträge: 4
Registriert: 03.12.2013 20:46

Re: W8 und Survace pro, Bug bei OpenWindow()

Beitrag von pstryk »

Erzeuge zwei Dateien:

"main.manifest" - mit dem Manifest-Text

und

"manifest.rc" - mit den zwei Zahlen und dem Pfad zu "main.manifest".

Die "manifest.rc" bite im Register Ressourcen hinzufügen.

"Moderne Themen-Unterstützung" bitte deaktivieren, um das Standard manifest zu deaktivieren.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: W8 und Survace pro, Bug bei OpenWindow()

Beitrag von Danilo »

Das Surface Pro 3 hat 216 PPI, deshalb die runde Verdoppelung der Größe (gegenüber normalen 96 DPI).

Wenn man es DPI-aware macht, werden Fontgrößen automatisch angepasst. Koordinaten (X, Y, Höhe, Breite) muß man aber,
je nach DPI auf dem System, skalieren. Ein kleines Beispiel dazu:

Code: Alles auswählen

Prototype proto_SetProcessDPIAware()

If OpenLibrary(0,"user32.dll")
    SetProcessDPIAware.proto_SetProcessDPIAware = GetFunction(0,"SetProcessDPIAware")
    If SetProcessDPIAware
        ;Debug "calling SetProcessDPIAware()"
        SetProcessDPIAware() ; Windows Vista+ / Windows Server 2008+
    EndIf
EndIf

Global _dpiScaleFactorX.d = GetDeviceCaps_(GetDC_(0),#LOGPIXELSX) / 96
Global _dpiScaleFactorY.d = GetDeviceCaps_(GetDC_(0),#LOGPIXELSY) / 96

Macro dpiX(_num_) : (_num_ * _dpiScaleFactorX) : EndMacro
Macro dpiY(_num_) : (_num_ * _dpiScaleFactorY) : EndMacro


; Load the font
t=LoadFont(1, "Arial", 10, #PB_Font_HighQuality) ;Load Arial Font, Size 10 - 28/NOV/2013
SetGadgetFont(#PB_Default, FontID(1))
If t=0 : MessageRequester("Error", "Can't load Arial font.") : EndIf  

If OpenWindow(0, dpiX(0), dpiY(0), dpiX(640), dpiY(285), "DPIaware", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ButtonGadget(0, dpiX(10),dpiY( 10),dpiX(200),dpiY(25), "Standard Button")
    ButtonGadget(1, dpiX(10),dpiY( 40),dpiX(200),dpiY(25), "Left Button", #PB_Button_Left)
    ButtonGadget(2, dpiX(10),dpiY( 70),dpiX(200),dpiY(25), "Right Button", #PB_Button_Right)
    ButtonGadget(3, dpiX(10),dpiY(100),dpiX(200),dpiY(60), "Multiline Button  (longer text gets automatically wrapped)", #PB_Button_MultiLine)
    ButtonGadget(4, dpiX(10),dpiY(170),dpiX(200),dpiY(25), "Toggle Button", #PB_Button_Toggle)
    
    ListViewGadget(5, dpiX(430),dpiY(10),dpiX(200),dpiy(185))
    For i = 0 To 100 : AddGadgetItem(5,-1,"Item "+i) : Next
    
    CanvasGadget(6, dpiX(220),dpiY(10),dpiX(200),dpiy(185))
    If StartDrawing( CanvasOutput(6) )
        Box(0,0,OutputWidth(),OutputHeight(),RGB($40,$40,$40))
        Line(dpiX( 0) ,dpiY(0), dpiX(200),dpiy(185),RGB($FF,$FF,$00))
        Line(dpiX(200),dpiY(0),-dpiX(200),dpiy(185),RGB($FF,$FF,$00))
        StopDrawing()
    EndIf
    
    If LoadImage(0,#PB_Compiler_Home+"Examples/Sources/Data/PureBasicLogo.bmp")
        ResizeImage(0,dpiX(ImageWidth(0)),dpiY(ImageHeight(0)))
        ImageGadget(7,dpiX(10),dpiY(205),dpiX(381),dpiY(68),ImageID(0))
    EndIf
    
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Das hat auch absolut nichts mit "exklusiv Surface Pro 3" zu tun. Mit PB schreibst Du nur normale Windows-Desktop-Anwendungen, keine "Modern UI Apps".
Das gilt also überall, wo ein Monitor/Display mit mehr als 100% (96 DPI) verwendet wird. Oder auch allgemein, immer wenn der User die
Größenanpassung in den Systemeinstellungen auf mehr als 100% setzt. Bei dem Surface Pro 3 wird das bestimmt auf 200% eingestellt sein,
sonst erkennt man bei 2160 x 1440 auf 12 Zoll kaum noch etwas.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
tft
Beiträge: 650
Registriert: 08.09.2004 20:18
Computerausstattung: GFX 3060 Ti , i7 12700F , 32 GB Ram , 900 GB SSD , TV
Wohnort: Dachsen
Kontaktdaten:

Re: W8 und Survace pro, Bug bei OpenWindow()

Beitrag von tft »

Hallo,

danke für die sehr aussage kräftigen Infos.

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , CH-Dachsen/DE-Berlin/TR-Antalya
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung

PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler :-)
Benutzeravatar
tft
Beiträge: 650
Registriert: 08.09.2004 20:18
Computerausstattung: GFX 3060 Ti , i7 12700F , 32 GB Ram , 900 GB SSD , TV
Wohnort: Dachsen
Kontaktdaten:

Re: W8 und Survace pro, Bug bei OpenWindow()

Beitrag von tft »

Hallo,

@Danilo der Code ist spitze .... du solltest Ihn fielleicht beim PureArea.Net einfliesen lassen.

gruss TFT
TFT seid 1989 , Turgut Frank Temucin , CH-Dachsen/DE-Berlin/TR-Antalya
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung

PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler :-)
Antworten