Hintergrundbild in Fenster realisieren

Für allgemeine Fragen zur Programmierung mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

kennt sich jemand näher mit dem code aus?

meine frage:

SetClassLong_() mit #GCL_HBRBACKGROUND entspricht dem, wenn man im VisualEditor das Bild direkt zuweist.
ist der "Umweg" über den Brush nötig? macht der Editor das im grunde auch?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag von Kurzer »

*nochmalzwischendrängel* ;)
Sorry Kaeru, aber leider ich habe mit der brush-structure noch so meine Probleme. Das wollte ich nochmal aufdröseln... nicht, daß ich mir hier was falsches einpräge.

Es geht wieder um

Brush.LOGBRUSH\lbStyle=#BS_PATTERN
Brush\lbColor=#DIB_RGB_COLORS
Brush\lbHatch=ImageID(1)


Als einzige Info dazu habe ich die "C" Struktur aus der Win32.hlp

typedef struct tagLOGBRUSH { // lb
UINT lbStyle;
COLORREF lbColor;
LONG lbHatch;
} LOGBRUSH;


Ich vergleiche das jetzt mal zu (meinem) besseren Verständnis mit dem Beispiel aus der PB Hilfe.

1)
Wenn das eine Strucrure ist, die bereits vordefiniert ist, dann kann ich mir also sowas wie...

Structure LOGBRUSH
lbStyle.w
lbColor.? ; wobei ich hier nicht ersehen kann, welcher Datentyp das ist.
lbHatch.l
EndStructure

..sparen, richtig?

2)
Das Erzeugen der Struktur...

Dim Brush.LOGBRUSH(1)

... passiert scheinbar mit folgendem Code:

Brush.LOGBRUSH\lbStyle=#BS_PATTERN

Sehe ich das richtig, daß hier die Erzeugung der Struktur und die Zuweisung des ersten Elementes gleichzeitig passiert?

Naja und der Rest ist dann ja eine ganz normale Zuweisung.

Sind meine Vorstellungen korrekt?

Gruß Markus
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

soweit korrekt.

in der ersten zeile wird eine strukturierte variable des typs LOGBRUSH erzeugt, und einem teil der struktur, nämlich lbStyle der wert #BS_PATTERN zugewiesen.

weitere zuweisung, darunter auch die des bildes, folgen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag von Kurzer »

Also würde auch folgendes gehen?

Code: Alles auswählen

...
Dim Brush.LOGBRUSH(1)

Brush\lbStyle=#BS_PATTERN
Brush\lbColor=#DIB_RGB_COLORS
Brush\lbHatch=UseImage(1)
    SetClassLong_(WindowID(0),#GCL_HBRBACKGROUND,CreateBrushIndirect_(Brush)) 
...
Gruß Markus

PS: Kanns nicht testen, habe gerade keinen PB4 Rechner zur Hand...
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

nein, dann müsstest du

Code: Alles auswählen

Brush(1)\lbStyle=#BS_PATTERN 
usw schreiben.

PS:
außerdem werden Brush(0) und Brush(1) erzeugt.. is klar, gell?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag von Kurzer »

Kaeru Gaman hat geschrieben:nein, dann müsstest du

Code: Alles auswählen

Brush(1)\lbStyle=#BS_PATTERN 
usw schreiben.
PS:
außerdem werden Brush(0) und Brush(1) erzeugt.. is klar, gell?
Oh, äh ja... sorry Anfängerfehler. :)
(ich war gedanklich wohl noch in der PB4 Hilfe bei den Strukturen:
"...Dies bedeutet, dass a[2] ein Array von 0 bis 1 definiert, wogegen Dim a(2) ein Array von 0 bis 2 anlegt. "
Aber das ist ja wieder was anderes)

Jetzt ist alles nachvollziehbar für mich, Danke.

Gruß Markus
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Antworten