Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Mehrdimensionales Array MagSetWindowTransform (https://www.delphipraxis.net/195037-mehrdimensionales-array-magsetwindowtransform.html)

EWeiss 29. Jan 2018 08:04


Mehrdimensionales Array MagSetWindowTransform
 
Sollte eigentlich stimmen.

Delphi-Quellcode:
type
  tagMAGTRANSFORM = record
    v: array[1..3, 1..3] of Single;
  end;

const
  MagFactor = 2.0;
...
matrix.v[1][1] := MagFactor;
matrix.v[2][2] := MagFactor;
matrix.v[3][3] := 1.0;

//oder
matrix.v[1,1] := MagFactor;
matrix.v[2,2] := MagFactor;
matrix.v[3,3] := 1.0;
aber beides funktioniert nicht.

Hmmm..
Irgendwelche Ideen?

gruss

freimatz 29. Jan 2018 08:05

AW: Mehrdimensionales Array die Hunderste
 
Es wäre hilfreich wenn du noch schreiben würdest was nicht funktioniert und was "MagFactor" und "matrix" ist.

EWeiss 29. Jan 2018 08:07

AW: Mehrdimensionales Array die Hunderste
 
Zitat:

Zitat von freimatz (Beitrag 1392350)
Es wäre hilfreich wenn du noch schreiben würdest was nicht funktioniert und was "MagFactor" und "matrix" ist.

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.

Delphi-Quellcode:
MagSetWindowTransform(hWndMag, matrix);


gruss

Jasocul 29. Jan 2018 08:13

AW: Mehrdimensionales Array die Hunderste
 
Zitat:

Zitat von EWeiss (Beitrag 1392349)
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?
...

EWeiss 29. Jan 2018 08:15

AW: Mehrdimensionales Array die Hunderste
 
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

DeddyH 29. Jan 2018 08:17

AW: Mehrdimensionales Array die Hunderste
 
Wenn man die Infos erst nachträglich hineineditiert, darf man sich auch nicht wundern. Zum Problem: müssten die Arrays nicht 0-indiziert sein?

EWeiss 29. Jan 2018 08:24

AW: Mehrdimensionales Array die Hunderste
 
Zitat:

Zitat von DeddyH (Beitrag 1392355)
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

Jasocul 29. Jan 2018 08:26

AW: Mehrdimensionales Array die Hunderste
 
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?

EWeiss 29. Jan 2018 08:29

AW: Mehrdimensionales Array die Hunderste
 
Zitat:

Zitat von Jasocul (Beitrag 1392358)
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

Jasocul 29. Jan 2018 08:37

AW: Mehrdimensionales Array die Hunderste
 
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.

TiGü 29. Jan 2018 08:55

AW: Mehrdimensionales Array die Hunderste
 
Zitat:

Zitat von EWeiss (Beitrag 1392360)
Zitat:

Zitat von Jasocul (Beitrag 1392358)
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.

EWeiss 29. Jan 2018 08:57

AW: Mehrdimensionales Array die Hunderste
 
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

EWeiss 29. Jan 2018 08:59

AW: Mehrdimensionales Array die Hunderste
 
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

TiGü 29. Jan 2018 09:22

AW: Mehrdimensionales Array die Hunderste
 
Zitat:

Zitat von EWeiss (Beitrag 1392367)
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.

Witzig wie du immer gleich ganz entrüstet und schwer betroffen bist, nur weil man dich auf solche Kleinigkeiten hinweist, um dir zu HELFEN. :-D

Nur weil irgendwer irgendwann irgendwas als Delphi-Übersetzung gepostet hat, entbindet dich doch nicht von "Pflicht" trotzdem in der MSDN nachzuschauen, was die einzelnen Sachen bedeuten und wie man sie anwendet.

EWeiss 29. Jan 2018 09:27

AW: Mehrdimensionales Array MagSetWindowTransform
 
:thumb:
Wir lieben uns nicht. :(
Und ja weil genau das 2 Beiträge vorher schon gepostet wurde.
Zitat:

nur weil man dich auf solche Kleinigkeiten hinweist
Ich wurde schon darauf hingewiesen.

greets

TiGü 29. Jan 2018 10:03

AW: Mehrdimensionales Array MagSetWindowTransform
 
Zitat:

Zitat von EWeiss (Beitrag 1392372)
:thumb:
Wir lieben uns nicht. :(
Und ja weil genau das 2 Beiträge vorher schon gepostet wurde.
Zitat:

nur weil man dich auf solche Kleinigkeiten hinweist
Ich wurde schon darauf hingewiesen.

Ich kann ja meinen Beitrag nachträglich editieren, so dass der Sinnzusammenhang des Threads ganz entstellt wird. :roll:

freimatz 29. Jan 2018 15:21

AW: Mehrdimensionales Array die Hunderste
 
Zitat:

Zitat von Jasocul (Beitrag 1392358)
Titel passt halt nicht zum Fehler. Deine Änderungen habe ich nicht gemeldet bekommen beim Abschicken.

Zumal wenn ich es richtig sehe die Änderung nach deinem Abschicken war. Und selbst wenn, wenn ich auf Antworten klicke und eine Antwort schreibe, kann das schon mal ne Weile dauern bis ich die dann abschicke. Wenn ein neuer Beitrag in der Zwischenzeit kam bekomme ich eine Nachricht, aber ob da einer was geändert hat schaue ich nicht nochmals nach.

Zitat:

Zitat von Jasocul (Beitrag 1392358)
Aber egal.

Mir nicht. Ich habe nicht vor, ihm wieder versuchen zu helfen. Er mag andere anpampen.

EWeiss 29. Jan 2018 16:39

AW: Mehrdimensionales Array MagSetWindowTransform
 
Zitat:

Mir nicht. Ich habe nicht vor, ihm wieder versuchen zu helfen. Er mag andere anpampen.
Du hast mir geholfen bzw. Überhaupt schon einmal. Wo?
Das es Leute gibt die sich immer für so wichtig halten und die glauben das es ohne sie nicht geht.
Kann es sein das du dich gerne selber lesen hörst und oder überschätzt.

Mal anders rum gefragt..
Wieviele Tips, Quelltext, Schnipsel, Ideen hast du aus meinen Projekten entnommen wo du nicht weiter gekommen bist?

EDIT:
Manche meinen wenn sie bei einem Problem geholfen haben wer weis was für eine Leistung sie vollbracht haben.
Ich setze mich auch schon mal hin und schreibe auch ein Projekt komplett neu wenn es denn sein muss,
nur um jemanden zu helfen weil es mit einer einfachen Zeile nicht lösbar ist.
Ihr missversteht hier einiges ich brauchte und ich verwende das Projekt persönlich nicht es war eine Hilfestellung für jemand anderem.
Und auf solche Leute wie dich kann ich gern verzichten.

Ihr solltet mal alle nicht so tun als hätte noch niemand von meinen Quelltexten profitiert also kommt von euren hohen Ross herunter.

Egal von daher.

gruss

Fukiszo 29. Jan 2018 17:07

AW: Mehrdimensionales Array MagSetWindowTransform
 
Darf man erfragen, worum es bei dem MagXXXX überhaupt handelt?
Ich hab auch den anderen Thread gelesen aber werd irgendwie daraus nicht schlau was das Ziel sein soll.
Ich vermute das es eine Api funktion ist mit der man Bildschirmfotos erstellen kann,
nur verstehe ich Sinn und Zweck noch nicht so ganz warum per Api und nicht einfach per Delphi Bildschirmfoto Code wie hier http://www.delphipraxis.net/1392225-post2.html von mir als "Basis-Beispiel" beschrieben wurde.

Oder geht es um das vergrößern (=magnification) eines Fotos?
Ich blick da noch nicht so ganz durch.

Also ich mein, warum diese api überhaupt nutzen wollen wenn microsoft schreibt:
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.
Ich glaub ich erwarte noch nichtmal eine Antwort da ich bis jetzt das gesamte Thema nicht begreife ;-/

Grüße & Frieden in der Galaxie

EWeiss 29. Jan 2018 17:20

AW: Mehrdimensionales Array MagSetWindowTransform
 
Zitat:

Ich glaub ich erwarte noch nichtmal eine Antwort da ich bis jetzt das gesamte Thema nicht begreife ;-/
Ich begreife es auch nicht (warum überhaupt diese Dll dafür verwenden) aber destotrotz habe ich versucht zu helfen.
Nur um einen Screenshot zu erstellen hätte man nicht die Magnification.dll verwenden müssen.
Das wäre einfacher gegangen wie in deinem Beispiel.

Und wenn eine DLL dann madVr damit kann ich Screenshots von 800% der original Größe erstellen.

gruss

Fukiszo 29. Jan 2018 17:45

AW: Mehrdimensionales Array MagSetWindowTransform
 
Dem kann ich nur beipflichten,

In diesem Sinne,

Grüße


ps: ja helfen ist immer gut, egal ob blödsinn (keine direkte lösung, andere möglichkeit zeigen) ist oder direkt auf einen source reagieren und verbesserungen vorschlagen, ich pers. find jede hilfe gut da man ja nur daraus lernen kann wie andere an ein problem und dessen lösung rangehen. Welche möglichkeit genutzt wird, liegt ja dann beim "Leser".

Jasocul 30. Jan 2018 07:24

AW: Mehrdimensionales Array MagSetWindowTransform
 
Da freimatz auf meinen Kommentar eingegangen ist und eweiss darauf reagiert hat, möchte ich abschließend auch noch was dazu loswerden.

Wenn ich schreibe, dass mir das egal ist, dann meine ich das so. Ich brauche Niemanden, der sich dann bei sowas nochmal einklinkt. Das war eine Sache zwischen eweiss und mir.
Welche Konsequenzen mein "egal" hat, habe ich nirgendwo geschrieben. Daher kann es durchaus so sein, wie freimatz es selbst geschrieben hat. Aber das ist dann meine Sache.
Dass die Korrekturen nach meinem Post gemacht wurden, ist offensichtlich, wie man leicht am Beitrag #7 sehen kann. Ich habe um 9:13 gepostet, die Änderungen waren um 9:14. Dass eweiss das falsch herum interpretiert hat, ist ein klassisches Eigentor. Daher war mir der Rest egal. Das musst durch Niemanden noch mal extra erwähnt werden.

Wie oben schon geschrieben, hoffe ich, dass damit dieses Thema abgeschlossen ist. Wenn dazu noch jemand was loswerden will, empfehle ich PN, da das Forum dafür zu schade ist.

EWeiss 30. Jan 2018 12:19

AW: Mehrdimensionales Array MagSetWindowTransform
 
Zitat:

Dass eweiss das falsch herum interpretiert hat, ist ein klassisches Eigentor.
Du hast natürlich recht war falsch interpretiert von mir..
Entschuldige bitte.

Manchmal ist es so das man einen roten Kasten zu sehen bekommt wenn vorher ein neuer bzw. ein Post editiert wurde.
In deinem Fall konntest du das natürlich nicht sehen da du diese eine Minute vorher abgeschickt hast.
Gut für mich ist das auch erledigt.

Und danke für deine Hilfe so konnte ich dadurch anderen helfen.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz