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´s und DOS Programmierung
Gehe zu Seite 1, 2  Weiter
 
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
kyunk



Anmeldungsdatum: 13.01.2007
Beiträge: 11
Wohnort: Dortmund

BeitragVerfasst am: 16.01.2007, 17:49    Titel: WinAPI´s und DOS Programmierung Antworten mit Zitat

Hallo! Mal wieder zwei sinnlose Fragen von mir grinsen
Also, ich lese an jeder Ecke von Windows API´s.
Allerdings weiss ich nicht, wie man diese verwendet!
Könntet ihr mir das kurz erklären? Scheint ja wohl doch nicht so einfach
zu sein.

Das zweite ist: Wie Programmiere ich ein Programm für DOS?
Ich habe aus der FB-hilfe entnommen, das man dies mit
#IFDEF __FB_DOS__ realisierbar ist. Kann ich dann wie gewohnt programmieren? Also einfach auf "Run->Kompilieren" klicken und die Datei in DOS starten?

Danke im vorraus!
Mfg, kyunk!
_________________
"Ich mag kein Italienisch, ich hol mir lieder ´ne Pizza grinsen"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Jojo
alter Rang


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

BeitragVerfasst am: 16.01.2007, 19:30    Titel: Antworten mit Zitat

zu 1) Banal gesagt sind APIs einfach nur SUBs und FUNCTIONs. API-Funktionene kannst du über eine DECLARE-Anwiesung in deinem prog bekannt machen und dann wie jeden anderen fb-befehl nutzen.

2) das ifdef __fb_dos__ ist nur nötig, wenn ud willst ,dass ein bestimmtes stück quellcode NUR für dos kompiliert werden soll. das problem ist, dass du für dos, linux und windows verschiedene compiler brauchst. also für dos benötigst dueine andere fbc.exe als für windows.
_________________
» 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
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 16.01.2007, 19:38    Titel: Antworten mit Zitat

Hi,
1. hier wurde gerade ein Thread ausgegraben:
http://forum.qbasic.at/viewtopic.php?p=11791#11791
Sonst schau dich mal unter Windows-spezifische Fragen um.

2.
Zitat:
"Run->Kompilieren" klicken und die Datei in DOS starten?
Das glaube ich nicht, da es keine Benutzeroberfläche (GUI) für DOS gibt bleibt nur die Batch-Datei!
_________________
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
kyunk



Anmeldungsdatum: 13.01.2007
Beiträge: 11
Wohnort: Dortmund

BeitragVerfasst am: 16.01.2007, 22:16    Titel: Antworten mit Zitat

Danke für eure Antworten!
@Jojo: Weisst du, woher ich den Kompiler für DOS bekomme? (Brauch man für Linux auch einen anderen?)

Mfg, kyunk!
_________________
"Ich mag kein Italienisch, ich hol mir lieder ´ne Pizza grinsen"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Devilkevin
aka Kerstin


Anmeldungsdatum: 11.11.2004
Beiträge: 2532
Wohnort: nähe Mannheim

BeitragVerfasst am: 16.01.2007, 22:30    Titel: Antworten mit Zitat

kyunk hat Folgendes geschrieben:
Danke für eure Antworten!
@Jojo: Weisst du, woher ich den Kompiler für DOS bekomme? (Brauch man für Linux auch einen anderen?)


Da: http://freebasic.net/index.php/download
... und ja; für Linux brauchst du auch einen anderen zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
FreakBasic



Anmeldungsdatum: 19.11.2006
Beiträge: 49

BeitragVerfasst am: 17.01.2007, 04:34    Titel: WinAPI und DOS Antworten mit Zitat

Zitat:
Also, ich lese an jeder Ecke von Windows API´s.


Ich auch schimpfen

Zitat:
Das zweite ist: Wie Programmiere ich ein Programm für DOS?


1. (sicher) DOS Version von FB. Zunge rausstrecken

2. (??? unsicher) Target DOS, Crosscompileren von Windoof

Zitat:
Ich habe aus der FB-hilfe entnommen, das man dies mit
#IFDEF __FB_DOS__ realisierbar ist.


Falsch. Dieses "testet" nur ob fuer DOS compilert wird oder nicht.

Zitat:
Kann ich dann wie gewohnt programmieren?


Jein. Insbesondere die Windoof-API steht dann NICHT zur
Verfuegung grinsen grinsen Also RBIL, VGA, VESA, HW-ports, ...

Zitat:
Also einfach auf "Run->Kompilieren" klicken und die Datei in DOS starten?


Mindestens:
1. Target DOS
2. Musst du ueberhaupt erst DOS haben. Hast du ein DOS ?? Zunge rausstrecken
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
croco97



Anmeldungsdatum: 04.11.2005
Beiträge: 260

BeitragVerfasst am: 17.01.2007, 10:00    Titel: Antworten mit Zitat

Ich möchte an dieser Stelle mal auch die ketzerische Frage stellen, wie sinnvoll denn es ist, mit der Win-API zu programmieren. Seit Mitte der 90er-Jahre, als Borland seine OWL und MS seine MFC vorgestellt hat, gilt API-Programmieren meines Wissens aus guten Gründen als out, weil ineffizient. Auch für FB gibt es jede Menge gute Bibliotheken wie z.B. GTK (und viele andere) für GUI, FMOD für Sound, winsock fürs Netzwerk usw.

Viele Grüsse!

Croco
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 17.01.2007, 11:41    Titel: Antworten mit Zitat

(ketzerische Antwort)
Bei größeren Programmierobjekten ist die Benutzung reiner Win-API wohl nicht effizient und sinnvoll. Aber weshalb soll ich mir die Module (dll's) dieser Bibliotheken an das Programm hängen wenn ich nur Teile der Win-API (Messagebox, Dateiauswahl etc.) nutzen möchte.
Zum Anderen findet man keine Bibliotheken die zum Beispiel Videocapturing, einfache Sprachausgabe ermöglichen oder sie sind noch weit komplizierter als die Win-API.
Und dann noch die Kostenfrage. Mit der Windows-Lizenz darf ich auch in kommerziellen Programmen die Win-API benutzen aber leider sind nicht alle anderen Bibliotheken damit kostenfrei.
Ein guter Grund gegen die Win-API ist natürlich das Programm auch für andere Plattformen nutzbar zu machen.
_________________
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: 17.01.2007, 16:02    Titel: Antworten mit Zitat

Für Fensterprogrammierung ist auch die VCL von Borland nicht zu vergessen. grinsen (Aber wohl nur für Delphi-Programmierer wichtig. Und auch die gehen mittlerweile wieder hin zur nonVCL-Programmierung. Heißt, alles (auch Fenster und Controls) wie bei FB selbst über WinAPI erstellen.)

@FreakBasic:
Du widersprichst dir selber. Zunge rausstrecken
Ein Crosscompiler ist ein Compiler, der für ein System compilieren kann, das momentan nicht läuft. Heißt, er braucht dafür auch kein DOS.
Und da der Großteil (leider) sowieso Windows benutzt, ist eine DOS-Emulation (ntvdm) eh dabei.
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Devilkevin
aka Kerstin


Anmeldungsdatum: 11.11.2004
Beiträge: 2532
Wohnort: nähe Mannheim

BeitragVerfasst am: 17.01.2007, 16:36    Titel: Antworten mit Zitat

volta hat Folgendes geschrieben:
(ketzerische Antwort)
Bei größeren Programmierobjekten ist die Benutzung reiner Win-API wohl nicht effizient und sinnvoll. Aber weshalb soll ich mir die Module (dll's) dieser Bibliotheken an das Programm hängen wenn ich nur Teile der Win-API (Messagebox, Dateiauswahl etc.) nutzen möchte.
Zum Anderen findet man keine Bibliotheken die zum Beispiel Videocapturing, einfache Sprachausgabe ermöglichen oder sie sind noch weit komplizierter als die Win-API.
Und dann noch die Kostenfrage. Mit der Windows-Lizenz darf ich auch in kommerziellen Programmen die Win-API benutzen aber leider sind nicht alle anderen Bibliotheken damit kostenfrei.
Ein guter Grund gegen die Win-API ist natürlich das Programm auch für andere Plattformen nutzbar zu machen.


... und weil ein Programm das die native WinAPI nutzt schneller läuft als eines das z.B. GTK verwendet.
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: 17.01.2007, 16:54    Titel: Antworten mit Zitat

Warum einfach wenn's auch kompliziert geht? Das ist ein Motto, wenn man zu externen bibliotheken greift, die genau das selbe können wie die winAPI. natürlich ist es was anderes, wenn man FMOD oder OpenGL verwendet, denn die bieten ja viel mehr als die API, nur mal so als beispiel..
_________________
» 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
croco97



Anmeldungsdatum: 04.11.2005
Beiträge: 260

BeitragVerfasst am: 17.01.2007, 19:08    Titel: Antworten mit Zitat

Zitat:
Warum einfach wenn's auch kompliziert geht?


Eben. Dann machen wir mal mit der WinAPI ein einfaches Fenster auf. Unter 60 Zeilen ist da nichts zu wollen, angefangen mit
Code:

defint a-z
function WinMain ( byval hInstance as long, _
                   byval hPrevInstance as long, _
                   szCmdLine as string, _
                   byval iCmdShow as integer ) as integer   
     
     dim wMsg as MSG
     dim wcls as WNDCLASS     
     dim szAppName as string
     dim hWnd as unsigned long

     
     WinMain = 0
     
     ''
     '' Setup window class
     ''
     szAppName = "HelloWin"
     
     with wcls
        .style         = CS_HREDRAW or CS_VREDRAW
        .lpfnWndProc   = @WndProc
        .cbClsExtra    = 0
        .cbWndExtra    = 0
        .hInstance     = hInstance
        .hIcon         = LoadIcon( null, IDI_APPLICATION )
        .hCursor       = LoadCursor( null, IDC_ARROW )
        .hbrBackground = GetStockObject( WHITE_BRUSH )
        .lpszMenuName  = null
        .lpszClassName = strptr( szAppName )
     end with

   (...)
   (...)
   (...)


usw. Ist das einfach? Nicht nach meinem Geschmack...

So, und nun machen wir das Ganze mit GTK+:

Code:

   Dim win1  as GtkWidget ptr
   Dim btn1  as GtkWidget ptr
   Dim btn1c as GtkWidget ptr
   
   gtk_init( 0, 0 )

    win1 = gtk_window_new( GTK_WINDOW_TOPLEVEL )
     gtk_window_set_title( GTK_WINDOW(win1), "My test window" )
     gtk_widget_set_usize( win1, 640, 480 )
     gtk_widget_set_uposition( win1, 200, 200 )
     gtk_container_set_border_width( GTK_CONTAINER(win1), 5 )



...und gut ist. Dass ich dafür noch ne DLL ans Proggi dranhängen muss, ist im GB-Zeitalter nun wirklich kein relevantes Kriterium mehr - auch wen n ich natürlich Programme, die aus einer einzigen 10k-exe bestehen und einen kompletten Ego-Shooter damit realisieren auch schnuckelig finde...zwinkern

Grüsse!

Croco
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


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

BeitragVerfasst am: 17.01.2007, 20:01    Titel: Antworten mit Zitat

so ein beispiel meinte ich nicht durchgeknallt
ich meinte eigentlich die ganzen tollen winAPI-funktionen wie z.B. messageboxen, filesystem, und so weiter.
_________________
» 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
kyunk



Anmeldungsdatum: 13.01.2007
Beiträge: 11
Wohnort: Dortmund

BeitragVerfasst am: 17.01.2007, 20:29    Titel: Antworten mit Zitat

Hehe, sind ja schon wieder einige Begriffe und Sachen,
welche mir nicht ganz klar sind.

Ich fange mal an zwinkern
@FreakBasic:
DOS direkt habe ich nicht, aber eine MS-Dos startdiskette erstellt.
Ein bekannter von mir gibt mir nächsten Monat eine Festplatte, wo ich dann DOS drauf installieren kann (1GB, aber ich denke (hoffe) das das reicht zwinkern ).
Dann hab ich mir GTK+ 2.8 runtergeladen und deinen Code einfach mal in mein FB Fenster reinkopiert - tut sich nichts. Welche Dateien muss ich denn kopieren (habe ich so verstanden) oder was muss ich machen?

Bibliotheken - sind doch DLL´s welche Funktionen oder Routinen beinhalten oder?
Ist also GTK+ auch nur eine DLL Datei, oder wie ist das zu verstehen?
Habe dafür noch nicht ganz den durchblick verwundert

Danke für alle eure Antworten zwinkern

Mfg, kYunk!
_________________
"Ich mag kein Italienisch, ich hol mir lieder ´ne Pizza grinsen"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
croco97



Anmeldungsdatum: 04.11.2005
Beiträge: 260

BeitragVerfasst am: 17.01.2007, 23:05    Titel: Antworten mit Zitat

Hallo kyunk!

Das generelle Prinzip, wie sich OS, Win-API, Libs, Headers etc. zueinander verhalten,
ist hier erklärt. . Wie das dann technisch funktioniert,
ist hier recht ausführlich beschrieben..

Summary: Im Prinzip brauchst du die passende bi-Datei, die bei FB mit dabei ist und die passende dll. (Praktisch ist auch noch eine
dll.a-Datei, da du dann statisch linken kannst.) Das erweitert dann quasi den Befehlssatz von FB um die entsprechenden Funktionen,
bei GTK z.B. hauptsächlich GUI, bei Fmod Sound, bei OpenGL 3D-Animation usw.

Es ist eine Stärke von FB, dass es Zugang zu einer Unzahl von solchen Libs bietet. (Im Prinzip zu allen, die auch von C/C++ aus zugänglich sind.)


Viele Grüsse!

Croco
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 18.01.2007, 13:59    Titel: Antworten mit Zitat

croco97 hat Folgendes geschrieben:

Zitat:
Warum einfach wenn's auch kompliziert geht?
Eben. Dann machen wir mal mit der WinAPI ein einfaches Fenster auf. Unter 60 Zeilen ist da nichts zu wollen, angefangen mit
Code:
 Win-API ...

usw. Ist das einfach? Nicht nach meinem Geschmack...
So, und nun machen wir das Ganze mit GTK+:
Code:
 GTK+ ...

...und gut ist. Dass ich dafür noch ne DLL ans Proggi dranhängen muss, ist im GB-Zeitalter nun wirklich kein relevantes Kriterium mehr - auch wen n ich natürlich Programme, die aus einer einzigen 10k-exe bestehen und einen kompletten Ego-Shooter damit realisieren auch schnuckelig finde...zwinkern

und noch einfacher in FB ist die fbgfx-lib, als Einzeiler geschockt
Code:
Screen 18,32
... grinsen
Ich will dich damit nicht ärgern oder provozieren, ich empfinde nur eine pauschale Ablehnung der Win-API als ungerechtfertigt.
Sie hat Ihre sinnvollen Nischenanwendungen.
_________________
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
croco97



Anmeldungsdatum: 04.11.2005
Beiträge: 260

BeitragVerfasst am: 18.01.2007, 14:23    Titel: Antworten mit Zitat

Zitat:

und noch einfacher in FB ist die fbgfx-lib, als Einzeiler


Das ist sachlich nicht klärend, die gfxlib ist keine GUI-Lib. Aber mit GTK kann man mind. 80% dessen abdecken, was man mit der Win-API auch machen kann. Vielleicht kann man die CD-Schublade nicht öffnen, OK...

Zitat:

Sie hat Ihre sinnvollen Nischenanwendungen.


Das sei unbestritten. Aber ich glaube nicht, dass es hier viele Leute gibt, die diese Nischenanwendungen im Blick haben, wenn sie nach der Win-API fragen...

Wie dem auch sei: Es ist immer wichtig, das richtige Vorbild zu haben. Für mich ist das im Hinblick auf Effizienz der Delphi- und der .NET-Programmierer, die beide in er Lage sind, mit Hilfe ihrer Ressourcen innerhalb von 2 Tagen Anwendungen auf die Beine zu stellen, die dem Bedienungskomfort-Anspruch professioneller Software voll gerecht werden. Bis dahin hat FB inkl. GTK und Konsorten noch einen weiten Weg, behaupte ich mal. (Gegenbeispiele sind willkommen!) Das ist OK so. Aber der Weg sollte nicht rückwärts beschritten werden...

Grüsse!

Croco





Grüsse!

Croco
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
kyunk



Anmeldungsdatum: 13.01.2007
Beiträge: 11
Wohnort: Dortmund

BeitragVerfasst am: 18.01.2007, 17:16    Titel: Antworten mit Zitat

Hallo croco97 und alle anderen!
Danke für deine erklärung, die hat mich schonmal weiter gebracht zwinkern
Werde mich jetzt nur noch über Befehle und Funktionen in GTK+ informieren!

Eine Frage zur DOS Programmierung habe ich noch, undzwar:
Ich habe mir den Compiler runtergeladen, endtpackt und die fbc.exe in den FB Einstellungen ausgewählt. Allerdings klappt es nicht, ein Programm welches ich so Kompiliert habe, unter DOS zu starten.
Es kommt eine seltsame Fehlermeldung aus einige Zeichen.
Das Programm greift auf keine API´s und LIB´s zu, sondern ist ganz einfach (http://nopaste.info/e0b296f536.html).

Was muss ich machen, damit mein "Programm" unter DOS läuft?

Gruß, kYunk!
_________________
"Ich mag kein Italienisch, ich hol mir lieder ´ne Pizza grinsen"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Jojo
alter Rang


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

BeitragVerfasst am: 18.01.2007, 18:18    Titel: Antworten mit Zitat

Fehlt dir *ganz zufällig* der DPMI-Speichermanager?
_________________
» 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
kyunk



Anmeldungsdatum: 13.01.2007
Beiträge: 11
Wohnort: Dortmund

BeitragVerfasst am: 18.01.2007, 19:05    Titel: Antworten mit Zitat

peinlich Was ein zufall zwinkern

Muss ich den einfach in das Verzeichnis wo die EXE Datei ist einfügen?
Und wo bekomme ich den her? (Bei google finde ich nichts)

Mfg, kyunk
_________________
"Ich mag kein Italienisch, ich hol mir lieder ´ne Pizza grinsen"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
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
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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