 |
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 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 10.04.2010, 12:35 Titel: Fehler und fehlendes in Commctrl.bi |
|
|
Hi zusammen, bei verschiedenen Controls (TreeView, ListView, StatusBar etc. ) ist mir aufgefallen das es einige Fehler und fehlendes in der Commctrl.bi gibt.
Einige Zeilen sind auch auskommentiert, insbesondere Makros, weil es anscheinend nicht richtig funktioniert.
Gibt es neuere, bereinigte Varianten von deren Existienz ich nichts weis?
Ich benutze die Compiler Version 0.20.0 Beta. _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 10.04.2010, 12:59 Titel: |
|
|
In meiner Version sind genau zwei auskommentierte #define Zeilen und meine Version stammt auch aus der 0.20.0 Version des Compilers.
Die .bi aus der 0.21.0 SVN Version unterscheidet sich wiederrum nicht von der, die der 0.20.0 Version beiliegt.
Entweder du hast eine noch ältere Version oder irgendwas ist da kaputt. Notfalls den aktuellen C-Header runterladen und mit SWIG FB übersetzen lassen. |
|
Nach oben |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 10.04.2010, 13:37 Titel: |
|
|
Auskommentiert ist in der Tat nicht viel, jedoch sind einige Makros fehlerhaft, habe jetzt schon 3 korrigiert, eines konnte ich nicht korrigieren weil ich den Code nicht kapiert hab
Korrekturen:
Code: | #define ListView_DeleteAllItems(w) cint(SNDMSG(w,LVM_DELETEALLITEMS,0,0))
#define ListView_GetCallbackMask(w) cint(SNDMSG(w,LVM_GETCALLBACKMASK,0,0))
#define TreeView_HitTest(w,p) cast(HTREEITEM,SNDMSG((w),TVM_HITTEST,0,cast(LPARAM,cast(TV_HITTESTINFO ptr,p)))) |
Den hier kapier ich nicht:
Code: | ''''''' #define TreeView_GetItemRect(w,i,p,c) *cast(HTREEITEM ptr,p)=(i) : SNDMSG((w),TVM_GETITEMRECT,c,cast(LPARAM,cast(LPRECT,p))) |
Zudem sind mir schon 2 Strukturen aufgefallen die ich korrigieren musste.
Code: | type TV_HITTESTINFO
pt as POINT
flags as UINT
hItem as HTREEITEM
end type
type LPTVHITTESTINFO as TV_HITTESTINFO ptr |
Die andere weis ich leider nicht mehr.
Übersetzt der SWIG das denn 1:1 korrekt so das man es direkt benutzen kann? Ich denke mal das hierdurch eher die Fehler entstehen. Das ganze ist zumindest sehr ärgerlich weil ich ewig zugebracht hab die Fehler herauszufinden. _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 10.04.2010, 14:28 Titel: |
|
|
Ja gut, das ist blöd.
Da sind wohl ein paar Klammern verschluck worden.
Laut meiner commctrl.h muss das eine Macro so aussehen:
Code: | #Define TreeView_GetItemRect (w, i, p, c) *Cast(HTREEITEM Ptr, p) = (i):Cast(Integer, SNDMSGA((w), TVM_GETITEMRECT, Cast(WPARAM, c), Cast(LPARAM, Cast(RECT Ptr, p))) |
Deine erwähnten Strukturen kommen so nicht in meinem C-Header vor, da heißt TV_HITTESTINFO tagTVHITTESTINFO bzw. TVHITTESTINFO, also so wie in der FB-Version auch.
Hab SWIG am C-Header versucht, es hat aber leider komplett versagt, wenn es funktioniert hätte, wären aber wenige bis keine Fehler drin, so dass es sich immer lohnt SWIG auszuprobieren. |
|
Nach oben |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 10.04.2010, 14:37 Titel: |
|
|
Die Strukturen hießen tatsächlich anders. Das Problem ist das sie laut MSDN so heißen sollten.
Wenn man nun in die Hilfe guckt und seine Variable versucht mit TV_HITTESTINFO zu erstellen, und das so nicht vorkommt, dann sucht man schon wieder ne halbe Stunde herum bis einem auffällt das die Struktur einfach anders heißt - saublöd.
Danke auf jeden Fall für das Makro.
Wer kontrolliert das eigentlich und werden Korrekturen noch irgendwie eingepflegt oder liegt die Entwicklung auf Eis?
Ich frag nur weil das letzte Update doch schon einige Zeit her ist. _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 10.04.2010, 14:41 Titel: |
|
|
Die Entwicklung geht seit einiger Zeit wieder voran, wenn auch nur schleppend. Dazu gibt es jede Menge Nachrichten im FreeBASIC-Portal und auch einen tagesaktuellen Compiler aus den SVNs.
Die Header werden aber denk ich mal nicht überprüft sondern eher durch die Community aktualisiert. Also kannst du ja hier etwas tun  |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 10.04.2010, 19:18 Titel: |
|
|
Nunja teilweise sind die FB-Header von Windows noch auf dem Stand von Windows 95. Warum allerdings einige Namen anders sind, kann ich mir nicht wirklich erklären. SWIG ändert daran nämlich (eigentlich) nichts... |
|
Nach oben |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 10.04.2010, 20:42 Titel: |
|
|
Schade das das so ist
generell nerft mich nur das man Stunde um Stunde zubringt um solche Fehler zu lokalisieren.
Ich mag FB eigentlich sehr, aber bei sowas beginne ich es zu hassen
Glücklicherweise, für FB, fehlt es mir an Alternativen, ausser ich wollte mich mit C++ o.ä. rumschlagen. Somit werd ich in den sauren Apfel beissen und so weitermachen wie bisher.
PureBasic gefällt mir an und für sich auch sehr gut, aber vieles muß man auch hier tricksen und das Event System verträgt sich (leider) nicht mit der SDK mit der ich PlugIns für trueSpace schreibe. _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
HorstD
Anmeldungsdatum: 01.11.2007 Beiträge: 110
|
Verfasst am: 10.04.2010, 23:22 Titel: |
|
|
Zitat: | Glücklicherweise, für FB, fehlt es mir an Alternativen, ausser ich wollte mich mit C++ o.ä. rumschlagen. Somit werd ich in den sauren Apfel beissen und so weitermachen wie bisher. |
Eine alternative ist noch Powerbasic. |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 11.04.2010, 11:44 Titel: |
|
|
EPS, C++ ist eig. fast immer ein Segen. Man kann schließlich fast alle Bibliotheken ohne weiteres benutzen, hat die aktuellsten Header, echte Klassen mit echter Vererbung usw. usf. Ich weiß gar nicht was viele Leute an C/C++ so schlimm finden. Klar das ist dann kein BASIC mehr. . . |
|
Nach oben |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 11.04.2010, 12:04 Titel: |
|
|
Zum einen ist es einfach der Syntax der Sprache der mir nicht zugänglich ist (so oft ich es auch versucht hab).
Die vielen Klammern und Bezeichner der Variablen sowie Funktionen etc. lassen die Übersichtlichkeit leiden. Man muß für jeden "Unsinn" irgend nen Header einbinden, wobei ein Anfänger schon ewig sucht um herauszufinden welchen.
Zum anderen stört mich das man ein Projekt erstellt, noch keine einzige Zeile Code getippt hat und man dennoch schon rund 8 Dateien erstellt bekommt. Das ist einfach unübersichtlich und verwirrend.
In Basic schreib ich eine Datei, compiliere und habe eine weitere (mal von der OBJ und der LIB abgesehen). Das ist klar, simpel und strukturiert.
Wohlgemerkt lesen kann ich den Code halbwegs. Ich hab schließlich die gesamten Header Dateien der SDK für trueSpace von C++ nach FreeBasic übersetzt. Mit anderen Worten: Ich weis schon was dort geschieht wenn ich den Code lese.
Aber Code lesen und schreiben ist zweierlei.
Gut für den der es kann, denn mit C++ kann man am ehesten alles erreichen was man möchte.
Aber so schlecht ist FreeBasic für meine Ansprüche nicht und abgesehen von den Fehlern die ich so finde stört mich eigentlich nur das es keine Listen gibt. Vererbung usw. hab ich bis dato noch nicht vermisst.
Gut, manch einer könnte nun einwerfen das auch FreeBasic allgemein mit Basic weniger zu tun hat als mit C++ aber ich hab mich einfach dran gewöhnt und der Mensch ist nunmal ein Gewohnheitstier. _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
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.
|
|