WinBlitz3D Styles?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Eingeproggt

Betreff: WinBlitz3D Styles?

BeitragFr, Jun 04, 2010 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Ich habe heute versucht mich mit der WinBlitz3D anzufreunden.
Und da gibts ein paar Verständnisprobleme - Sie versteht mich nicht und ich sie nicht Confused

Ich möchte fragen ob jemand schon Erfahrung in der Verwendung der beigelegten "Styles" gemacht hat.
Also mit den Flags die man bei den diversen Gadgets angeben kann. Bei mir kommt da nur Blödsinn raus, um das zu demonstrieren (minimaler Code der grad das tut was er soll):

Code: [AUSKLAPPEN]
Include "WB3DStyles.bb"

Global RuntimeWindow_hWnd=WB3D_InitializeGUI(SystemProperty("AppHwnd"),10,10,500,500)
WB3D_HideGadget RuntimeWindow_hWnd

hwnd=WB3D_CreateWindow("Test",200,100,230,100,0,0)
WB3D_CreateLabel("Willkommen!",10,10,200,20,hwnd,0) ;SS_BLACKFRAME

WB3D_FlushEvents()

Repeat
   Delay 20
   Select WB3D_WaitEvent()
      Case WB3D_EVENT_WINDOW_CLOSE
         Select WB3D_EventSource()
            Case hwnd
               Exit
         End Select
   End Select
Forever
WB3D_EndGUI()
End


Das klappt soweit, Ergebnis sieht so aus:
[EDIT 12.7.2010: Ich habe mein Archiv aufgeräumt, und dieses Bild fiel der Aktion zum Opfer]

Wenn ich nun die Zeile
Code: [AUSKLAPPEN]
WB3D_CreateLabel("Willkommen!",10,10,200,20,hwnd,0) ;SS_BLACKFRAME

ändere in
Code: [AUSKLAPPEN]
WB3D_CreateLabel("Willkommen!",10,10,200,20,hwnd,SS_BLACKFRAME) ;0


Kommt kompletter Käse raus, nämlich das hier:
[EDIT 12.7.2010: Ich habe mein Archiv aufgeräumt, und dieses Bild fiel der Aktion zum Opfer]

Und es ist wie angedeutet vollkommen wurscht welchen Style ich da benutzen will... Es klappt auch bei anderen gadgets nicht (beispielsweise Textbox auf "Passwort" oder was weiß ich).

(In den Smples gibts kein Beispiel zur Verwendung...)

Ja ich hab schon gehört dass WB3D verbuggt sei aber dass GAR NIX geht das kanns ja ned sein, was mach ich da falsch? Ich verwende Blitz3D v1.104 und lass das auf WinXP laufen.

mfG, Christoph

PS: ja es heißt WinBlitz3D aber da es hier nicht um 3D-Funktionen geht dachte ich Allgemein wäre besser?
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
  • Zuletzt bearbeitet von Eingeproggt am Mo, Jul 12, 2010 23:59, insgesamt einmal bearbeitet

Badudel

BeitragSa, Jun 05, 2010 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit den Labels ist mir aufgefallen. Es scheint, als wäre das ein einziger Bug - ich habe noch nichts gefunden, was man für Labels benutzen kann.

Auch das mit dem Passwort habe ich mich schon rumgeärgertz - keine Lösungsvariante. An deinem Code liegt es auf jeden Fall nicht.

Gruß!
Wir werden dem Schwein schon schlachten, auch wenn ihm quiekt.
Zum Teufel mit das Grammatik!

EPS

BeitragSo, Jun 06, 2010 1:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Knackpunkt bei WinBlitz3D ist, das es kein GUI ist, sondern eigentlich nur eine Schnittstelle zur Windows API. Genau so muß man es auch handhaben.

Dein Label ist eigentlich ein STATIC Control und ein einzeln gewünschter Parameter wie SS_BLACKFRAME ist nur selten zu setzen. Letztlich sind in Windows alles Fenster deren bestimmte Eigenschaften sie zu einem bestimmten Control machen, in deinem Fall bestimmen verschiedene Parameter das es ein Label ist (mal ganz einfach ausgedrückt).

Schon beim erstellen des Labels setzt WinBlitz3D mehrere Parameter ein die du nicht siehst, z.B. "WS_CHILD or WS_VISIBLE or SS_LEFT". All diese bestimmen die "Darstellung" bzw. die Eigenschaften des Controls, also seine Darstellung, Funktionsweise, Rahmen, etc.pp.

Wenn du dem Control nun NUR die Eigenschaft SS_BLACKFRAME gibst, entstehen unkontrollierbare oder sagen wir mal merkwürdige Darstellungen. Z.b. nimmst du eben WS_CHILD aus der Parameterliste und somit ist dein Label kein Child des Parent mehr, oder anders gesagt dein Label (Control) ist plötzlich ein eigenes Fenster.

Kurzum: MSDN wälzen und sich mit den möglichen Parametern der einzelnen Controls vertraut machen.

Der Lösungsweg ist nun folgender.

1. Die momentan gesetzten Parameter des Controls ermitteln
2. Den gewünschten Parameter hinzufügen (per OR)
3. Den neuen Parameter wieder an das Control übermitteln

Wie macht man das? SendMessage heißt hier das Zauberwort. Damit kannst du "kontakt" zu deinen Controls halten. Du sendest Nachrichten die entweder Parameter holen oder eben setzen.

Als Beispiel sei hier mal die Message "WM_SETTEXT" genannt. Diese an ein Control gesendet setzt dort den Text. "WM_GETTEXT" wiederum würde den aktuellen Text vom Control holen.

Es gibt aber auch andere Befehle die Bestimmte Informationen vom Control holen und/oder setzen. Z.B. GetWindowLong und SetWindowLong - wären mal 2 Befehle die du dir näher anschauen solltest.

Natürlich benötigst du die user32.decls um diese Funktionen von B3D aus nutzen zu können, sind schließlich Windows Funktionen der user32 API.

Ich hoffe das hilft weiter.
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group