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:

WinApi mit Screenres?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 27.11.2017, 21:16    Titel: WinApi mit Screenres? Antworten mit Zitat

Kann man Funktionen der WinApi (Checkbox, Radiobuttons, ...) bei einem mit Screenres erstellten Fenster anwenden? Oder geht das nur mit diesem (hWnd = CreateWindow ...)? Das wäre schon toll, wenn man eine Trackbar auf ein mit Screenres erstellten Fenster anwenden könnte! Vielleicht kennt einer eine Lösung?

Gruß
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 28.11.2017, 12:53    Titel: Antworten mit Zitat

Meintest du sowas?
Code:
#Include Once "windows.bi"

Dim As Integer style
Dim As HWND fensterhandle
Dim As RECT r

ScreenRes 400,300,32

fensterhandle = GetForegroundWindow()
style = GetWindowLong(fensterhandle, GWL_STYLE)
GetWindowRect(fensterhandle, @r)

SetWindowLong(fensterhandle, GWL_STYLE, style Or WS_VSCROLL Or WS_HSCROLL)
SetWindowPos(fensterhandle, HWND_TOP, r.left, r.top, r.right - r.left, r.bottom - r.top, SWP_DRAWFRAME)

Sleep


Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 28.11.2017, 17:49    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
Meintest du sowas?
Code:
#Include Once "windows.bi"

Dim As Integer style
Dim As HWND fensterhandle
Dim As RECT r

ScreenRes 400,300,32

fensterhandle = GetForegroundWindow()
style = GetWindowLong(fensterhandle, GWL_STYLE)
GetWindowRect(fensterhandle, @r)

SetWindowLong(fensterhandle, GWL_STYLE, style Or WS_VSCROLL Or WS_HSCROLL)
SetWindowPos(fensterhandle, HWND_TOP, r.left, r.top, r.right - r.left, r.bottom - r.top, SWP_DRAWFRAME)

Sleep


Gruß
grindstone
Nicht ganz, denn auf dem Fenster müsste bzw. sollte ein Radiobutton oder eine Checkbox, ... sein. Aber das würde schon in die richtige Richtung gehen.

Gemeint ist: Ich erstelle ein Fenster mit ScreenRes und auf dem Fenster kann man einen der verschiedenen Radiobuttons anklicken.

Keine Ahnung ob so etwas geht?

Gruß
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 29.11.2017, 10:53    Titel: Antworten mit Zitat

Er hat dir ja auch nur ein Beispiel gegeben, nicht dein Programm fertig geschrieben. Mit dem Fenster Handle kannst du einfach deine WinAPI Befehle verwenden und tun und lassen, was du möchtest.

Übrigens: Mit ScreenControl kriegst du das Fenster Handle direkt raus, ohne auf das Fenster im Vordergrund zu vertrauen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 29.11.2017, 11:21    Titel: Antworten mit Zitat

@ALWIM:
Sicher geht das, der Aufwand ist aber genauso groß wie bei einem "echten" Windows - Fenster.

MOD hat Folgendes geschrieben:
Mit ScreenControl kriegst du das Fenster Handle direkt raus, ohne auf das Fenster im Vordergrund zu vertrauen.
Stimmt, das ist besser. Der Mensch ist halt ein Gewohnheitstier... grinsen


Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 29.11.2017, 14:57    Titel: Antworten mit Zitat

MOD hat Folgendes geschrieben:
Er hat dir ja auch nur ein Beispiel gegeben, nicht dein Programm fertig geschrieben. Mit dem Fenster Handle kannst du einfach deine WinAPI Befehle verwenden und tun und lassen, was du möchtest.

Übrigens: Mit ScreenControl kriegst du das Fenster Handle direkt raus, ohne auf das Fenster im Vordergrund zu vertrauen.
Ein fertiges Programm will ich ja gar nicht! Nur die Antwort ob es möglich ist.

grindstone hat Folgendes geschrieben:
@ALWIM:
Sicher geht das, der Aufwand ist aber genauso groß wie bei einem "echten" Windows - Fenster.

Wenn es geht, ist es ja gut. Dann schaue ich mal wie es geht. Mir ist nur noch nicht ganz klar, wo ich das normale mit "Sreenres" erstellte Fenster angebe.

Ich danke vielmals für die Hilfe!

Gruß
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


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

BeitragVerfasst am: 29.11.2017, 15:20    Titel: Antworten mit Zitat

Wie MOD schon gesagt hat, bekommst du mit SCREENRES und GET_WINDOW_HANDLE das Handle, das du dann wie ein beliebiges anderes Fenster-Handle verwenden kannst.
_________________
» 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
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 29.11.2017, 17:26    Titel: Antworten mit Zitat

Ich habe vor einiger Zeit schon mal was in diese Richtung probiert, es dann aber mangels Erfordernis nicht weiterverfolgt. Mal sehen, ob ich es wiederfinde und ein kleines Beispiel daraus basteln kann.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 30.11.2017, 12:52    Titel: Antworten mit Zitat

Jetzt weiß ich wieder, wo ich damals hängengeblieben bin: Der Grafikscreen weigert sich hartnäckig, das Kindfenster anzuzeigen.

Code:
#Include Once "windows.bi"
#Include "fbgfx.bi"
Using fb

Dim Shared As LONG_PTR PrevWindowProc

Dim Shared As HWND fensterhandle, hButton
Dim Shared As Long instanz

Declare Function umleitung(hWnd As  HWND, uMsg As UINT, wParam As WPARAM, lParam As LPARAM ) As Integer

ScreenRes 400,300,32

fensterhandle = GetForegroundWindow()
'ScreenControl GET_WINDOW_HANDLE, fensterhandle
? "fensterhandle ";fensterhandle
instanz = GetWindowLong(fensterhandle, GWL_HINSTANCE)

hButton = CreateWindowEx(WS_EX_WINDOWEDGE, "BUTTON", "ButtoN", _
                              WS_VISIBLE Or WS_CHILD Or BS_GROUPBOX, _ ' // Styles
                              5, 5, 10, 30, _
                              fensterhandle, 1, instanz, NULL)

ShowWindow(hButton, SW_SHOW)
? "hButton ";hButton
? "Button ID";GetDlgCtrlID(hButton)

PrevWindowProc = SetWindowLongPtr(fensterhandle, GWLP_WNDPROC, Cast(Integer,@umleitung))

Sleep


Function umleitung(hWnd As  HWND, uMsg As UINT, wParam As WPARAM, lParam As LPARAM ) As Integer
      
   Locate 10,1
   ? "umleitung";Timer
   ? String(50, " ")
   Locate 11, 1
   ? hWnd;Tab(10);uMsg;Tab(20);wParam;Tab(30);lParam
   
   Select Case uMsg
      Case WM_SIZE
         MoveWindow(hButton, LOWORD(lParam) / 2 - 80, HIWORD(lParam) - 30, 160, 22, TRUE)
      Return 0
         
      Case Else
         Return CallWindowProc(Cast(WNDPROC, PrevWindowProc), hWnd, uMsg, wParam, lParam )
   End Select
      
   Return 0
   
End Function

Wie man sieht, wurde das Kindfenster ordnungsgemäß erstellt, und die Umleitung der Fensterprozedur funktioniert auch (zum Testen einmal mit der Maus drüberfahren).

Ebenso zeigt ein Scan der Fensterhandles, daß der Button dem Grafikscreen ordnungsgemäß als Kindfenster zugeordnet ist.
    ...
    C 328664
    C 721780

    P 4260756 neuerStyle2_u
    C 3605392 ButtoN

    P 3736558 D:\basic\freeBasic\GUI\neuerStyle2_u.exe

    P 328608 Das deutsche QBasic- und FreeBASIC-Forum :: Antwort schreiben - Mozilla Firefox

    P 1245696 FreeBASIC - Referenz
    C 1180164
    ...

Irgend jemand eine Idee, wo es hakt?

Gruß
grindstone

Ach ja: Mit SCREENCONTROL (darum auskommentiert) bekomme ich die Fehlermeldung:
    neuerStyle2_u.bas(15) error 98: No matching overloaded function, SCREENCONTROL() in 'ScreenControl GET_WINDOW_HANDLE, fensterhandle'

_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 30.11.2017, 14:54    Titel: Antworten mit Zitat

OK, das Problem mit der Anzeige habe ich gelöst. Das Grafikfenster muß (zusätzlich) den Stil WS_CLIPCHILDREN bekommen:
Code:
#Include Once "windows.bi"
#Include "fbgfx.bi"
Using fb

Dim Shared As LONG_PTR PrevWindowProc, PrevButtonProg

Dim Shared As HWND fensterhandle, hButton
Dim Shared As Long instanz

Declare Function umleitung(hWnd As  HWND, uMsg As UINT, wParam As WPARAM, lParam As LPARAM ) As Integer

ScreenRes 400,300,32

fensterhandle = GetForegroundWindow()
'ScreenControl GET_WINDOW_HANDLE, fensterhandle
? "fensterhandle ";fensterhandle

SetWindowLong(fensterhandle, GWL_STYLE, GetWindowLong(fensterhandle, GWL_STYLE) Or WS_CLIPCHILDREN)

instanz = GetWindowLong(fensterhandle, GWL_HINSTANCE)

hButton = CreateWindowEx(WS_EX_WINDOWEDGE, "BUTTON", "ButtoN", _
                              WS_VISIBLE Or WS_CHILD, _ ' // Styles
                              100, 30, 100, 30, _
                              fensterhandle, Cast(HMENU, 1), Cast(HINSTANCE, instanz), NULL)

UpdateWindow(fensterhandle)

? "hButton ";hButton
? "Button ID";GetDlgCtrlID(hButton)

PrevWindowProc = SetWindowLongPtr(fensterhandle, GWLP_WNDPROC, Cast(Integer,@umleitung))

Dim As MSG uMsg
Do While GetMessage(@uMsg, NULL, NULL, NULL)
   TranslateMessage(@uMsg)
   DispatchMessage(@uMsg)
Loop

Function umleitung(hWnd As  HWND, uMsg As UINT, wParam As WPARAM, lParam As LPARAM ) As Integer
   Static As Double zeitmerken
      
   Locate 10,1
   ? "umleitung";Timer
   ? String(50, " ")
   Locate 11, 1
   ? hWnd;Tab(10);uMsg;Tab(20);wParam;Tab(30);lParam
   
   If Timer > zeitmerken Then
      Locate 20,10
      ? "               "
   EndIf
      
   Select Case uMsg
      Case WM_COMMAND
         Select Case lParam
            Case hButton
               Locate 20,10
               ? "TUUUUUUUUUUUUT!"
               zeitmerken = Timer + 1
         End Select
      
      Case Else
         Return CallWindowProc(Cast(WNDPROC, PrevWindowProc), hWnd, uMsg, wParam, lParam )
   End Select
      
   Return 0
   
End Function


Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 01.12.2017, 15:25    Titel: Antworten mit Zitat

Habe es mal getestet. Es funktioniert auch mit einem Radiobutton ohne Probleme! Nun muss ich nur noch schauen, was ich genau brauche und es dementsprechend programmieren.

Danke für die Hilfe!

Gruß
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 01.12.2017, 15:48    Titel: Antworten mit Zitat

Gern geschehen. Wie man allerdings bei diesem "Fensterln" ohne Trickserei oder Multithreading noch ein normales Programm laufen lassen kann, entzieht sich leider (immer noch) meiner Kenntnis.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Lothar Schirm



Anmeldungsdatum: 24.04.2006
Beiträge: 63
Wohnort: Bayern

BeitragVerfasst am: 10.01.2020, 16:55    Titel: WinApi mit ScreenRes Antworten mit Zitat

Ich habe mal sowas probiert, sieht ziemlich einfach aus: SCREENRES mit einem Button und einer Editbox. In die Editbox kann man was reinschreiben, und wenn man den Button drückt, wird der Text auf das Konsolenfenter kopiert.

Code:
'EditBox_Screen.bas
'Multiline Editbox mit ScreenRes

#Include "windows.bi"
'#include "fbgfx.bi"
'Using FB

Dim As MSG msg
Dim As HWND hWnd, btn1, edt1
Dim As Long textsize
Dim As String text

'Graphikfenster:
ScreenRes 500, 300, 32
WindowTitle "Hello"
Color 0, &HFFFFFF
Cls
hWnd = GetForegroundWindow()
'ScreenControl GET_WINDOW_HANDLE, hWnd   <--- funktioniert nicht - Fehlermeldung!


' Create window
'hWnd = CreateWindowEx( 0, "#32770", "Hello", WS_OVERLAPPEDWINDOW Or WS_VISIBLE, 100, 100, 500, 300, 0, 0, 0, 0 )
' Button:
btn1 = CreateWindowEx( 0, "BUTTON", "Copy text to console", WS_VISIBLE Or WS_CHILD, 20, 10, 150, 20, hWnd, 0, 0, 0 )
' Editbox:
edt1 = CreateWindowEx( 0, "EDIT", "Type text here...",ws_border Or WS_VISIBLE Or WS_CHILD Or WS_HSCROLL Or WS_VSCROLL Or ES_AUTOHSCROLL Or ES_AUTOVSCROLL Or ES_MULTILINE, 20, 50, 400, 200, hWnd, 0, 0, 0 )

While GetMessage( @msg, 0, 0, 0 )
   TranslateMessage( @msg )
   DispatchMessage( @msg )
   
   Select Case msg.hwnd
     Case hWnd
       If msg.message = 273 Then End
          
     Case btn1   'Text aus der Editbox ins Konsolenfenster
         If msg.message = WM_LBUTTONDOWN Then
            textSize = GetWindowTextLength(edt1)
            text = Space(textsize)
            GetWindowText(edt1, text, textsize + 1)
            text = RTrim(text, Chr(0))
            Open Cons For Output As #1
            Print #1, text
            Close #1
         End If
   End Select
   
Wend

End


Wer die Original Windows-Syntax mit den vielen Nullen nicht mag, kann ja mal meine WinGUI Bibliothek ausprobieren .https://www.freebasic-portal.de/downloads/bibliotheken/wingui-eine-einfache-winapi-gui-bibliothek-358.html. Die ist zwar für eine WindowsDialogbox (Konstante "#32770") konzipert, basiert eber auf der gleiche Methode wie dieses Beispiel und müsste so auch auf einem SCREENRES-Fenster funktionieren.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Lothar Schirm



Anmeldungsdatum: 24.04.2006
Beiträge: 63
Wohnort: Bayern

BeitragVerfasst am: 11.01.2020, 17:01    Titel: WinAPI mit ScreenRes Antworten mit Zitat

Hier kommt eine bereinigte und "verbesserte" Version, da die Windows Message Nr. 273 beim FB Screen nicht erscheint, d.h. das Fenster muss durch die Abfrage inkey = Chr(255, 107) geschlossen werden:

Code:
'EditBox_Screen.bas
'Multiline Editbox mit ScreenRes
'12.01.2020

'Stürzt ab wenn man in der Menüleiste rumfummelt
'Messagebox löscht controls

#Include "windows.bi"
#Include "fbgfx.bi"

Dim As MSG msg
Dim As HWND hWnd, btn_copy, btn_close, edt
Dim As Long textsize
Dim As String text

'Graphikfenster:
ScreenRes 500, 300, 32
WindowTitle "Hello"
Color 0, &HFFFFFF
Cls
hWnd = GetForegroundWindow()

' Buttons:
btn_copy = CreateWindowEx( 0, "BUTTON", "Copy text to console", WS_VISIBLE Or WS_CHILD, 20, 10, 150, 20, hWnd, 0, 0, 0 )
btn_close = CreateWindowEx( 0, "BUTTON", "Close", WS_VISIBLE Or WS_CHILD, 400, 260, 80, 20, hWnd, 0, 0, 0 )
' Editbox:
edt = CreateWindowEx( 0, "EDIT", "Type text here...",ws_border Or WS_VISIBLE Or WS_CHILD Or WS_HSCROLL Or WS_VSCROLL Or ES_AUTOHSCROLL Or ES_AUTOVSCROLL Or ES_MULTILINE, 20, 50, 400, 200, hWnd, 0, 0, 0 )

Do
  GetMessage( @msg, 0, 0, 0 )
   TranslateMessage( @msg )
   DispatchMessage( @msg )
   
   Select Case msg.hwnd
               
      Case btn_copy
         If msg.message = WM_LBUTTONDOWN Then
          'Text aus der Editbox ins Konsolenfenster kopieren:
          textSize = GetWindowTextLength(edt)
          text = Space(textsize)
          GetWindowText(edt, text, textsize + 1)
          text = RTrim(text, Chr(0))
          Open Cons For Output As #1
          Print #1, text
          Close #1
          ' Messagebox (0, "Text kopiert!", "Info!", 0) <--- löscht Teile des Fensters!!!
         End If
         
      Case btn_close
         If msg.message = WM_LBUTTONDOWN Then Exit Do
         
   End Select
 
Loop Until inkey = Chr(255, 107)

End         


Funktioniert aber auch nicht ganz zuverlässig, und es gibt Fehler, die im Code kommentiert sind. Ich würde abraten WinAPI auf dem FB Screen zu verwenden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Lothar Schirm



Anmeldungsdatum: 24.04.2006
Beiträge: 63
Wohnort: Bayern

BeitragVerfasst am: 04.02.2020, 19:51    Titel: Antworten mit Zitat

Hier ist ein modifiziertes entbuggtes Beispiel:
Code:
'===============================================================================
' EditBox_Screen.bas
' Multiline Editbox mit ScreenRes
' Erstellt am 12.01.2020
' Letzte Bearbeitung am 04.02.2020
'===============================================================================

#Include "windows.bi"

Dim As MSG msg
Dim As HWND hwnd, btn_copy, btn_close, edt1, edt2
Dim As Long textsize
Dim As String text

'Fenster:
ScreenRes 500, 600, 32
WindowTitle "GUI auf Grafikfenster"
Color 0, &HFFFFFF
Cls

'Maus darf nicht im Windows-Menü herumklicken, sonst gibt es Abstürze
SetMouse(,,,1)    'clipped to graphics window

'Windowhandle des Fensters ermitteln:
hWnd = GetForegroundWindow()

' Buttons:
btn_copy = CreateWindowEx( 0, "BUTTON", "Copy text ", WS_VISIBLE Or WS_CHILD, 20, 10, 100, 20, hWnd, 0, 0, 0 )
btn_close = CreateWindowEx( 0, "BUTTON", "Close", WS_VISIBLE Or WS_CHILD, 340, 500, 80, 20, hWnd, 0, 0, 0 )
' Editboxen:
edt1 = CreateWindowEx( 0, "EDIT", "Type text here...",ws_border Or WS_VISIBLE Or WS_CHILD Or WS_HSCROLL Or WS_VSCROLL Or ES_AUTOHSCROLL Or ES_AUTOVSCROLL Or ES_MULTILINE, 20, 50, 400, 200, hWnd, 0, 0, 0 )
edt2 = CreateWindowEx(0, "Edit", "", ws_border Or WS_VISIBLE Or WS_CHILD Or WS_HSCROLL Or WS_VSCROLL Or ES_AUTOHSCROLL Or ES_AUTOVSCROLL Or ES_READONLY Or ES_MULTILINE, 20, 280, 400, 200, hWnd, 0, 0, 0 )

Do
  GetMessage( @msg, 0, 0, 0 )
   TranslateMessage( @msg )
   DispatchMessage( @msg )
   
   Select Case msg.hwnd
               
      Case btn_copy
         If msg.message = WM_LBUTTONDOWN Then
          'Text aus der Editbox1 in die Editbox2 kopieren:
          textSize = GetWindowTextLength(edt1)
          text = Space(textsize)
          GetWindowText(edt1, text, textsize + 1)
          text = RTrim(text, Chr(0))
          SetWindowText(edt2, text)
         End If
         
      Case btn_close
         If msg.message = WM_LBUTTONDOWN Then Exit Do
         
   End Select
 
Loop
   
End

Wichtig ist der Befehl "SetMouse(,,,1)", damit die Maus nicht ins System-Menü des Fensters kommt. Man muss das Fenster dann eben mit einem extra "Close"-Button schließen. Und eine Messagebox habe ich auch nicht verwendet. Vielleicht erfinde ich noch ein Beispiel, wo man ein Windows-GUI im FreeBASIC Screen zusammen mit der GFX Library von FreeBASIC verwenden kann, sonst hat man ja eigentlich keinen Vorteil davon.

Es ist übrigens genau so einfach, das obige Beispiel für das Konsolenfenster zu verwenden (einfach Screen 0 statt ScreenRes) , jedoch kann man dann die Maus nicht hindern, im System-Menü herumzuklicken, und das kann dann wieder zu Abstürzen führen.
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 -> Windows-spezifische Fragen 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