Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

button im freebasic screen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
pebisoft
gesperrt


Anmeldungsdatum: 28.11.2004
Beiträge: 131

BeitragVerfasst am: 13.10.2006, 13:13    Titel: button im freebasic screen Antworten mit Zitat

hallo, gibt es eigentlich schon button in einem normalen freebasic-screen?
zb mit abfrage ob sich die maus im einem button-bereich befindet und der knopfstatus abgefragt wird?

da freebasic sehr schnell ist , könnte man doch irgendwie ein event dort hineinproggen .

würde mich interessieren, wie so ein event geht.

interessant wären auch 2 geöffnete freebasic-screen die miteinander kommunizieren so wie unter windows mit "send" oder ähnlichen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 13.10.2006, 14:09    Titel: Antworten mit Zitat

Zum Ersten:
Nö, kannst' dir aber leicht selber basteln:
Code:

Line Step (50, 50)-Step(100, 30),  7, BF ; Button zeichnen
GetMouse(MouseX, MouseY, Buttons) ; Mauskoordinaten und Button-Status holen
; Abfrage, ob in dem gewählten Rechteck, erspare ich mir hier


Zum zweiten Problem: schon was von verdeckten Kanälen gehört?
Dafür kannst du zum Beispiel Dateien verwenden. Entweder 1, was relativ langsam ist, oder gleich 8 - um immer ein Byte zu "versenden". Wichtig ist hierbei perfektes Timing: Ein Byte, nehmen wir hier mal 65 (ein "A"), soll übertragen werden. Dafür nehmen wir die Bitfolge 01000001. Dementsprechend setzt man den Status der ersten Datei zu normal zurück, der zweiten zu "gesperrt", die nächsten 5 wieder normal und die letzte gesperrt. Das lässt sich alles mit Systemaufrufen machen (hab' das schonmal unter Linux probiert). Die WinAPI bietet ähnliche Funktionen. Achja: das andre Programm liest den Status der Dateien aus und "rekonstruiert" daraus wieder ein Byte. Is' nützlich wenn ein Client, meinetwegen ein Steuerberechnungsprogramm, und ein (gefakter) Server kommunizieren. Es gibt in Unix soweit ich weiß einige Mechanismen, die erkennen, wenn man direkt Daten an eine andere Anwendung sendet und diese wegen der Sicherheit unterdrücken. So...der Server kann ganz normal sein (bis auf eine kleine Ausnahme): er kommuniziert über diesen verdecken Kanal mit einem anderen Programm, das nur dem Zweck dient, Daten über Personen zu sammeln.
Allerdings bleibt die Frage offen, ob du nicht lieber gleich eine einzige Datei nehmen willst und dort das jeweilige reinschreibst (weiß ja net, was du austauschen willst). zwinkern
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
pebisoft
gesperrt


Anmeldungsdatum: 28.11.2004
Beiträge: 131

BeitragVerfasst am: 13.10.2006, 14:24    Titel: Antworten mit Zitat

wenn ich jetzt in einem screenfenster ein bufferbereich anlege und dem anderen fenster diese adresse vom bufferbereich mitteile müsste es doch gehen, oder?

ist nur die frage , wie teile ich dem anderen programm die bufferadresse mit?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 13.10.2006, 14:29    Titel: Antworten mit Zitat

Die Adresse eines Grafikbuffers?
Egal, es lässt sich sagen: das ist nicht möglich -> Speicherschutz. Jede Anwendung kann nur auf ihren eigenen Speicher zugreifen, Threads mit einbezogen. Es ließe sich höchstens realisieren, dass du noch 'nen 2ten Thread startest, in deinem Programm - der könnte dann auf den Speicher zugreifen. Aber sonst? Nee. Sonst könnt ich ja auch einfach mal eben mit 'nem selbstgeschriebenem FB-Programm den Speicher von Windows überschreiben... durchgeknallt
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
pebisoft
gesperrt


Anmeldungsdatum: 28.11.2004
Beiträge: 131

BeitragVerfasst am: 13.10.2006, 15:54    Titel: Antworten mit Zitat

kann man denn mit zwei programmen auf eine dll zugreifen um dann eine datenübegabe zu realisieren.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 13.10.2006, 20:43    Titel: Antworten mit Zitat

in freebasic gibt es doch buttons! aber auch nur über umwege über die winapi.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 13.10.2006, 20:45    Titel: Antworten mit Zitat

Soweit ich weiß kann man die auch ganz normal im FreeBASIC Screen platzieren, Lutz_Ifer hatte glaube ich mal ein Menü zum FreeBASIC Screen hinzugefügt, einfach mal fragen happy
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 13.10.2006, 21:08    Titel: Antworten mit Zitat

resourcen is da wohl das zauberwort...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 13.10.2006, 21:27    Titel: Antworten mit Zitat

@Jojo:
Er hat aber net gesagt, dass er 'nen WinAPI-Fenster hat. Zunge rausstrecken
Er meinte nur den FB-Screen, naja, wie auch immer. zwinkern
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Lutz Ifer
Grillmeister


Anmeldungsdatum: 23.09.2005
Beiträge: 555

BeitragVerfasst am: 13.10.2006, 23:20    Titel: Antworten mit Zitat

das menü im screen-fenster ist wenn ich mich recht erinnere eigentlich von volta.

einen button hinzuzufügen habe ich bis dato nicht geschaft - wage ich auch zu bezweifeln, da die fbgfx in der regel per openGL realisiert wird, und man in nen opengl-kontext net einfach nen winapi-control reinsetzen kann... aber belehrt mich eines besseren, vielleicht war einfach auch nur doof...

Lutz böse Ifer
_________________
Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 14.10.2006, 00:50    Titel: Antworten mit Zitat

Hi,
ich kann dich beruhigen Lutz_Ifer..
.. du hast wahrscheinlich noch nicht mit Dialogs.Bas rumgespielt..
Ich hab mal das Button-Beispiel rauskopiert..
Code:
'====================================================================
'' Button grid demo, modal dialog as main.
'====================================================================
'von MichaelW
#include "dialogs.bas"

'====================================================================

Function DialogProc( Byval hDlg As  HWND, _
                     Byval uMsg As UINT, _
                     Byval wParam As WPARAM, _
                     Byval lParam As LPARAM ) As Integer

  Static state(100 To 200) As Integer

  Select Case uMsg

    Case WM_COMMAND

      If hiword(wParam) = BN_CLICKED Then

        If state(loword(wParam)) Then
          SetDlgItemText( hDlg, loword(wParam), "" )
          state(loword(wParam)) = 0
        Else
          SetDlgItemText( hDlg, loword(wParam), "X" )
          state(loword(wParam)) = 1
        End If

      End If

    Case WM_CLOSE

      EndDialog( hDlg, null )

  End Select

  Return 0

End Function

'====================================================================

Dim As LPDLGTEMPLATE lpdt

Dim As Short id, r, c

Dialog( 100, 0, 0, 122, 130, "Button Grid Demo", lpdt, _
        WS_OVERLAPPED Or WS_SYSMENU Or DS_CENTER )

id = 100
For c = 10 To 100 Step 10
  For r = 10 To 100 Step 10
    PushButton( id, r, c, 9, 9, "", WS_TABSTOP )
    id += 1
  Next
next

CreateModalDialog( 0, @DialogProc, 0, lpdt )

'====================================================================


..Buttons ohne Ende grinsen
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Lutz Ifer
Grillmeister


Anmeldungsdatum: 23.09.2005
Beiträge: 555

BeitragVerfasst am: 14.10.2006, 10:17    Titel: Antworten mit Zitat

...Hab ich da jetzt was nicht mitgekriegt?

Nen Button in ein per WinApi erstelltes Fenster (*hüstel* und da fällt die "dialog()"-Funktion aus dem von dir genannten Beispiel rein */hüstel*) is einfach, und nicht das Problem.

Aber wenn ich pebisoft nicht ganz falsch verstanden habe, möchte er gerne ein winapi-button in ein per "screen" erstelltes Fenster zaubern. und das habe ich noch nicht geschafft.

Lutz böse Ifer
_________________
Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 14.10.2006, 12:36    Titel: Antworten mit Zitat

@Lutz_Ifer:
Es ist mir schon klar, daß es für dich eher langweilig ist, zu lesen, wie unter Windows Buttons erstellt werden können grinsen
In einem Konsolen Fenster ist es genauso einfach: happy
Code:
[Pseudo-Code}
Erstelle Bild für Button
Erstelle Bild für Button gedrückt
Erstelle Verwaltungsvariablen für die Position der beiden Bilder
Lade die beiden Bilder
Do
  Prüfe an geeigneter Stelle im Programm, ob der Mausklick auf das Bild fällt
  Ändere ggfs. da Bild
  Führe das verknüpfte Unterprogramm aus
Loop Until Endebedingungerfüllt
[/Pseudo-Code]
Wie jetzt dieser Pseudo-Code mit FreeBASIC-Anweisungen umzusetzen ist, weiß ich leider auch nicht..
(.noch viel weniger, wie das mit dem WnAPI verwaltet wird..)
..aber wie heißt es so treffend:
Geht nicht, gibts nicht..
..oder doch?
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 14.10.2006, 13:42    Titel: Antworten mit Zitat

Lutz Ifer hat Folgendes geschrieben:
einen button hinzuzufügen habe ich bis dato nicht geschaft - wage ich auch zu bezweifeln, da die fbgfx in der regel per openGL realisiert wird, und man in nen opengl-kontext net einfach nen winapi-control reinsetzen kann... aber belehrt mich eines besseren, vielleicht war einfach auch nur doof...


Es gibt eine Möglichkeit, FB mitzuteilen, dass es einen anderen Treiber für seine Gfx-Modi verwenden soll; wie man in der Referenz unter >Die GfxLib< nachlesen kann, muss man nur die Umgebungsvariable "FBGFX" setzen. Ein SET FBGFX=GDI sollte da Wunder wirken!
Selbstverständlich kann das nicht im eigentlichen Prog geschehen, sondern muss schon vor dem Compilern geschehen... nebenher also immer die Shell offen halten.

In dem Fall könnte es also möglich sein - erst den entsprechenden Treiber mit Umgebungsvariable setzen, dann über GetWindowHandle die ID ausfindig machen, und schon sollte dieser Spielerei nichts mehr im Wege stehen...
Einziger Nachteil: Es heißt, dass GDI wesentlich langsamer ist als GL

However, try out, würde ich sagen.


Have a nice day
Ciao
Dusky_Joe
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 14.10.2006, 16:16    Titel: Antworten mit Zitat

mao hat Folgendes geschrieben:
Jede Anwendung kann nur auf ihren eigenen Speicher zugreifen
? 'filemapping' heißt das Zauberwort ( http://volta.freebasic.de/speedfan.html )
Lutz böse Ifer hat Folgendes geschrieben:
das menü im screen-fenster ist wenn ich mich recht erinnere eigentlich von volta.
einen button hinzuzufügen habe ich bis dato nicht geschaft - wage ich auch zu bezweifeln
wage es nicht grinsen , wo ein Menue geht, gehen auch Button ( mit den Augen rollen ob das noch für die gfxlib2 gilt??).
Ist aber eine elende Frickelei and i'm too lazy.
Ytwinkys Vorschlag ist da viel einfacher.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
pebisoft
gesperrt


Anmeldungsdatum: 28.11.2004
Beiträge: 131

BeitragVerfasst am: 15.10.2006, 19:53    Titel: Antworten mit Zitat

hallo volta, wie könnte man denn mit deiner idee von einem 2. laufenden freebasicprogramm auf die variable eines anderen laufenden freebasicprogramm zugreifen ?

mfg
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 15.10.2006, 21:58    Titel: Antworten mit Zitat

nein, ist keine Idee von mir,
das ist eine WinAPI Funktion (CreateFileMapping),
und damit kann man nicht die Variable eines anderen Programms auslesen.

Es wird ein Speicherbereich reserviert, auf den mehrere Windowsanwendungen schreibend und lesend zugreifen können.
Mao hat Folgendes geschrieben:
Jede Anwendung kann nur auf ihren eigenen Speicher zugreifen
das ist auch richtig, mit dieser kleinen Ausnahme.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 16.10.2006, 11:29    Titel: Antworten mit Zitat

Argh...wie ich doch die Windows-Innereien (wurgs) hasse. durchgeknallt
Jede Anwendung glaubt doch ernsthaft, ihr Speicher wäre an Adresse 0, obwohl dieser über Paging nur virtuell dort hingemappt wird. grinsen

Aber persönlich hab ich's auch noch nie gebraucht, das 2 Anwendungen von mir, auf den gleichen Speicher zugreifen müssen. Dafür läuft Windows ja im PM, damit es keine 64-Kilobyte Segment-Beschränkung gibt. lachen
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz