|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 27.05.2005, 19:42 Titel: Problem beim beenden eines Programms mit 3 Win-GUI-Fenstern |
|
|
Hi Leute!
Ich bin grade an diesem Programm:
LINK
Problem: Beim Beenden von Fenster #2 bleibt entweder die Konsole noch da (und das Prog damit aktiv), und/oder eine Fehlermeldung wird ausgegeben:
Die Anweisung in /Hex-Adresse/ verweist auf Speicher in /Hex-Adresse/. Der Vorgang "written" konnte nicht auf dem Speicher durchgeführt werden
Es geht ein bisschen von der klassischen WinMain/WndProc-Struktur weg...
Darum kurz die Funktionsweise:
Alle Objekte (Fenster und Buttons) werden zweifach identifiziert: Einmal ganz einfach durch ihren Handle, zum Anderen durch einen Arrayindex. Dieser Index bezieht sich auf...
hWnds() => Array, in dem die Handles zu den Fenstern gespeichert werden
DWnds() => UDT-Array, das Infos zum Fenster speichert (wird nur bei der Erstellung benutzt).
Zuerst werden in InitWindows die Fenster mit den in der selben SUB angegebenen Daten erstellt, die Handles in hWnds() gespeichert.
Die selbe Prozedur dann nochmal mit den Buttons, in der SUB InitControls.
Über ActiveID ist der Index aus hWnds(), über den das aktive Fenster identifiziert wird.
Interessant dürfte die Function WinMain sein:
Code: | Function WinMain ( Byval ID As Integer, Byval iChdShow As Integer ) As Integer
Dim wMsg As MSG
ActiveID = ID
ShowWindow hWnds(ActiveID), iChdShow
UpdateWindow hWnds(ActiveID)
While ( GetMessage( wMsg, null, 0, 0 ) <> false )
TranslateMessage wMsg
DispatchMessage wMsg
Print wmsg.hWnd, (wmsg.hWnd = hWnds(1)); (wmsg.hWnd = hWnds(2)); (wmsg.hWnd = hWnds(3))
Wend
WinMain = wMsg.wParam
End Function |
Sicher keine Elegante Lösung, aber sie sollte doch eigentlich funktionieren...
Was hab ich mir nur bei dem Gerüst gedacht... _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
|
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 28.05.2005, 13:03 Titel: *erledigt* |
|
|
Das Problem hat sich erledigt, war ein kleiner Fehler mit den Indexen der Arrays:
Code: | DIM DButtons(1 TO ButtonCount)
For i = 0 To ButtonCount
With DButtons(i)
... |
Wie man sieht, wird auf DButtons(0) zugegriffen, obwohl dieser Index gar nicht existiert.
In der jetztigen Version habe ich das Prog ziemlich umstrukturiert, es ist jetzt sehr viel klarer und weniger fehleranfällig.
Es wir im nächsten Tut erklärt, das vermutlich nächste Woche rauskommt... (wenn wieder schule ist )
Danke fürs Ansehen! _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|