AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Mehrdimensionales Array MagSetWindowTransform
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrdimensionales Array MagSetWindowTransform

Ein Thema von EWeiss · begonnen am 29. Jan 2018 · letzter Beitrag vom 30. Jan 2018
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.374 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Mehrdimensionales Array die Hunderste

  Alt 29. Jan 2018, 08:13
aber beides funktioniert nicht.

Hmmm..
Irgendwelche Ideen?
Mein Auto sprang heute Morgen nicht.

Hmmm..
Irgendwelche Ideen?

Oder anders ausgedrückt:
Was funktioniert nicht?
Fehler bei der Zuweisung?
Daten stehen nicht im Array?
Exception?
...
Peter
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Mehrdimensionales Array die Hunderste

  Alt 29. Jan 2018, 08:15
Zitat:
Mein Auto sprang heute Morgen nicht.
Liebe Leute lest doch einfach mal.

Zitat:
Das Array? Was sonst.
Und was die Matrix ist sieht man doch oben beim Type oder?
Beide Schreibweisen bringen kein Resultat.. Das Bitmap vom Window soll dann um den Faktor 2 skaliert werden.
Zitat:
Fehler bei der Zuweisung?
Daten stehen nicht im Array?
Alles nein...

Es wird nicht skaliert weder mit der einen noch der anderen Schreibweise.
Wenn beide richtig sind wo liegt dann der Fehler?

gruss
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#3

AW: Mehrdimensionales Array die Hunderste

  Alt 29. Jan 2018, 08:17
Wenn man die Infos erst nachträglich hineineditiert, darf man sich auch nicht wundern. Zum Problem: müssten die Arrays nicht 0-indiziert sein?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Mehrdimensionales Array die Hunderste

  Alt 29. Jan 2018, 08:24
Wenn man die Infos erst nachträglich hineineditiert, darf man sich auch nicht wundern. Zum Problem: müssten die Arrays nicht 0-indiziert sein?
Zitat:
Er: Heute, 09:13
Ich: Geändert von EWeiss (Heute um 09:14 Uhr)
Bevor er das abgeschickt hat hätte er die Änderung mitbekommen müssen.. Aber egal.

Zu deiner frage und laut der API eigentlich nicht.

Delphi-Quellcode:
type
  tagMAGTRANSFORM = record
    v: array[1..3, 1..3] of Single;
  end;
  MAGTRANSFORM = tagMAGTRANSFORM;
  TMagTransform = tagMAGTRANSFORM;
  PMagTransform = ^TMagTransform;
In wie weit das nun richtig ist kann ich nicht sagen.
Die Unit ist nicht von mir.

Habe es mal umgeschrieben funktioniert auch nicht.
Sobald ich die Matrix addiere zeichnet er das Bitmap nicht mehr.
Auch ein resize hilft da nicht.

Ohne die Matrix bekomme ich bei deaktivierter Desktoptheme "Floating Point invalid Operation"

EDIT:
Laut Microsoft

gruss

Geändert von EWeiss (29. Jan 2018 um 08:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.374 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Mehrdimensionales Array die Hunderste

  Alt 29. Jan 2018, 08:26
Titel passt halt nicht zum Fehler. Deine Änderungen habe ich nicht gemeldet bekommen beim Abschicken. Aber egal.

Die Magnification API ist nur für 32Bit. Unter 64Bit wirst du Probleme bekommen. Könnte es daran liegen?
Peter
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Mehrdimensionales Array die Hunderste

  Alt 29. Jan 2018, 08:29
Titel passt halt nicht zum Fehler. Deine Änderungen habe ich nicht gemeldet bekommen beim Abschicken. Aber egal.

Die Magnification API ist nur für 32Bit. Unter 64Bit wirst du Probleme bekommen. Könnte es daran liegen?
Es ging mir in erster Linie erst mal um die Schreibweise.
Von daher passt der Titel schon.

Eigentlich nicht.
Die Anwendung ist 32Bit.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.374 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Mehrdimensionales Array die Hunderste

  Alt 29. Jan 2018, 08:37
Deine Verlinkung besagt nur, dass es ein 3x3 Array ist. Dennoch sollte der Zähler null-basiert sein.
Hier ein C++-Beispiel Quelle :
Code:

// Description:
//   Sets the magnification factor for a magnifier control.
// Parameters:
//   hwndMag - Handle of the magnifier control.
//   magFactor - New magnification factor.
//
BOOL SetMagnificationFactor(HWND hwndMag, float magFactor)
{
    MAGTRANSFORM matrix;
    memset(&matrix, 0, sizeof(matrix));
    matrix.v[0][0] = magFactor;
    matrix.v[1][1] = magFactor;
    matrix.v[2][2] = 1.0f;

    return MagSetWindowTransform(hwndMag, &matrix);
}
Außerdem macht Delphi aus einem Record üblicherweise ein packed Record, wenn ich mich richtig erinnere. Evtl. musst du das über den entsprechenden Compiler-Schalter deaktivieren.
Peter
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: Mehrdimensionales Array die Hunderste

  Alt 29. Jan 2018, 08:57
OK habe das auf 0 hin geändert.
Das Problem lag wohl eher da dran das ich das Array vorher nicht genullt (FillChar) habe.

Es geht um das Projekt (Thema).
Habe den Kram jetzt komplett neu geschrieben.

Es funktioniert 100% mit ausgeschalteter DesktopTheme nach dem ich die Matrix jetzt korrigiert habe.
Mit eingeschalteter geht es nur wenn man das Fenster in der Größe verändert bis das Bitmap angezeigt wird.
Es scheint das es hier Probleme mit DWM gibt.

Hab das Projekt mal angehängt.
Wer es testen möchte. Bitte schön. (D2010)

gruss

Geändert von EWeiss (11. Jul 2019 um 15:49 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: Mehrdimensionales Array die Hunderste

  Alt 29. Jan 2018, 08:59
Zitat:
Übrigens hat die Matrix 0 bis 2 in beiden Dimensionen und nicht 1 bis 3.
Sieht man in der Doku zu MagSetWindowTransform.
Ja entschuldige bitte mal die API bzw. die Unit war nicht von mir.
Dort war es nun mal so definiert.
Diese kommt von hier.

Habe es lediglich neu geschrieben.
Und sie arbeitet gut mit 64Bit nur nicht in Verbindung mit DWM.

gruss

Geändert von EWeiss (29. Jan 2018 um 09:10 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.079 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Mehrdimensionales Array die Hunderste

  Alt 29. Jan 2018, 08:55
Titel passt halt nicht zum Fehler. Deine Änderungen habe ich nicht gemeldet bekommen beim Abschicken. Aber egal.

Die Magnification API ist nur für 32Bit. Unter 64Bit wirst du Probleme bekommen. Könnte es daran liegen?
Eigentlich nicht.
Die Anwendung ist 32Bit.
Seine Anmerkung zielte eher darauf ab, dass ein 32-Bit Programm, welches die Magnification API benutzt, nicht korrekt unter 64-Bit funktioniert.
Zitat:
Note The Magnification API is not supported under WOW64; that is, a 32-bit magnifier application will not run correctly on 64-bit Windows.
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Übrigens hat die Matrix 0 bis 2 in beiden Dimensionen und nicht 1 bis 3.
Sieht man in der Doku zu MagSetWindowTransform.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz