Seite 2 von 2

Verfasst: 08.06.2006 09:38
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?

Verfasst: 08.06.2006 10:49
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

Verfasst: 08.06.2006 11:03
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.

Verfasst: 08.06.2006 11:11
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...

Verfasst: 08.06.2006 11:15
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?

Verfasst: 08.06.2006 11:32
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