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:

Toolbar funktioniert nicht (erledigt)

 
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
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 04.07.2009, 17:03    Titel: Toolbar funktioniert nicht (erledigt) Antworten mit Zitat

Hallo, ihr Lieben,
ich versuche eine Toolbar (Symbolleiste) mit drei Schaltflächen zu erstellen. Die Symbole dazu sind in einer gemeinsamen Bitmap abgelegt, die über die Resourcendatei geladen und über Indices mit dem Schaltflächen verknüpft wird. Folgendes Problem:

Auf der ersten schaltfläche erscheint richtig das erste Symbol, auf der zweiten erscheint jedoch das dritte Symbol. Auf der dritten Schaltfläche erscheint wiederum das erste Symbol, aber gegraut, und die Schalfläche ist inaktiviert. das zweite Symbol erscheint überhaupt nicht. Außerdem werden die IDs nicht in der WM_COMMAND übermittelt.
Dieses Fehlerbild ergibt sich seltsamerweise nur, wenn ich die TB_ADDBUTTONS-Nachricht in der Schleife an die Toolbar sende. Wenn ich das einzeln bei jedem Button mache, sieht der Fehler ganz anders aus. Schwer zu verstehen.
Hier ist der Code dazu:

Code:
function Fenster(byval hWnd as HWND, byval message as UINTEGER,_ 'Nachrichtenauswertung
    byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
    Dim As Integer Numbuttons = 3
    Dim As HWND hToolBar
   
    Select Case message
       Case WM_CREATE
          '******   Erstellen der Toolbar   ********
          Dim As INITCOMMONCONTROLSEX InitComEx
          With InitComEx
             .dwSize = Len(InitCommonControlsEx)
             .dwICC = ICC_BAR_CLASSES
          End With
          InitCommonControlsEx(@InitComEx)
          '#####   Es reicht auch "InitCommonControls() ohne UDT"
          hToolBar = CreateWindowEx(0, _
                                 TOOLBARCLASSNAME, _
                                 cast(LPSTR,NULL), _
                                 WS_CHILD or WS_VISIBLE, _
                                 0, 0, 0, 0, _
                                 hwnd, _
                                 NULL, _
                                 hInst, _
                                 NULL)
                               
          Dim As TBBUTTON ToolButton(Numbuttons)
         Dim As TBADDBITMAP bitid
         With bitid
            .hInst = hInst
            /'#####  GetModuleHandle(NULL) oder hInst- falls diese vorher mit
            GetModuleHandle gesichert oder global (shared) declariert wurde!!!
            Das nur, wenn die Bitmap
            aus einer Datei geladen wird. Ansonten NULL.'/
            .nID = IDB_BITMAP3
         End With
         Dim Index As Integer = SendMessage(hToolBar, TB_BUTTONSTRUCTSIZE, Len(TBBUTTON), 0)
         SendMessage(hToolBar, TB_ADDBITMAP, Numbuttons, Cast(LPARAM,@bitid))
         'Sendet das Bitmap an die Toolbar
         /'#####  Manch einer unternimmt bei Len(TBBUTTON) und Numbuttons ein Typecasting zu WPARAM,
         ist aber nicht unbedingt notwendig'/

         '***   Erstellen der Buttons    ***
          With Toolbutton(1)
             '.iBitmap    = 0
            .idCommand    = IDM_TB_EXIT
            .fsState      = TBSTATE_ENABLED
            .fsStyle      = TBSTYLE_BUTTON
            .dwData      = 0
            .iString      = 0
          End With
          With Toolbutton(2)
             '.iBitmap    = 1
            .idCommand    = IDM_TB_HIDESHOW
            .fsState      = TBSTATE_ENABLED
             .fsStyle      = TBSTYLE_BUTTON
            .dwData      = 0
            .iString      = 0
          End With
          With Toolbutton(3)
             '.iBitmap    = 2
            .idCommand    = IDM_TB_SHOW
            .fsState      = TBSTATE_ENABLED
            .fsStyle      = TBSTYLE_BUTTON
             .dwData      = 0
            .iString      = 0
          End With'/

          Dim i As Integer
          For i = 1 To Numbuttons
             'Verknüpft die Buttons mit der Toolbar und die Bitmaps mit den Buttons
             Toolbutton(i).iBitmap = 1'i-1 ergibt falsches Ergebnis
             SendMessage(hToolBar, TB_ADDBUTTONS, Cast(Integer,i-1), Cast(Integer,@ToolButton(Numbuttons)))
          Next i             

      '******************************************************************************
       Case WM_COMMAND
          Select Case LoWord(wParam)
             Case IDM_FILE_EXIT
                DestroyWindow(hWnd)
                Return (0)
             Case IDM_TB_EXIT
                MessageBox(hWnd, "erste Schaltfläche gedrückt", "Symbolleiste", MB_OK)
             Case IDM_TB_HIDESHOW
                MessageBox(hWnd, "zweite Schaltfläche gedrückt", "Symbolleiste", MB_OK)
             End select
       Case WM_DESTROY
        PostQuitMessage (0)
        return 0
       Case else
        return DefWindowProc(hWnd, message, wParam, lParam)
      End select
end Function

An der Größe der Bitmapsliegt es nicht, habe schon mit TB_SETBITMAPSIZE experimentiert, hat aber nix gebracht.
Was mache ich da falsch?
Das Programm ist eine Übersetzung aus einem C-Prog, dort läuft das problemlos. Vielleicht kennt jemand ein Tutorial für Toolbars in FB?
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.


Zuletzt bearbeitet von Elektronix am 17.07.2009, 11:08, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 10.07.2009, 10:10    Titel: Antworten mit Zitat

Ich habe bis jetzt nur den Toolbarmaker von FBEdit benutzt, allerdings gab es da auch manchmal Probleme, dass man die TB einfach nicht gesehen hat, oder sie keine Bilder hat etc.
Den Grund dafür habe ich nie gefunden, es war irgendwie Glücksspiel. Bei einigen Progs hats funktioniert bei anderen wiederrum nicht - auch ohne nennenswerten Unterschied im Programm selbst.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 10.07.2009, 13:11    Titel: Antworten mit Zitat

Hurra Yahooo!!!! - eine Antwort nach 6 Tagen!!! happy

Toolbarmaker in FBEdit? Wo finde ich denn den?
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 17.07.2009, 11:15    Titel: Antworten mit Zitat

So, die Toolbar funktioniert endlich, hat einigen Schweiß gekostet. Ich habe mich an den Beispielen im Examples-Ordner von FBEdit orientiert. Das Vorgehen ist an einigen Stellen anders, als ich es unter Borland C++ gewohnt war.

Mir scheint allerdings, daß FBEdit noch von einigen Bugs geplagt wird. Die neuste Version (1.0.7.0) compiliert mein Prog ganz anders als die frühere, vor allem zeigt die neue immer noch das Consolen-Fenster trotz der Compiler-Option -s gui. Auch einige andere Fehler tauchen darin auf. Irgendwie ziehe ich die alte Version vor.

Der ToolbarMaker ist irgendwie nicht wirklich hilfreich, denn das Verfahren damit ist gänzlich anders als die "normale" Routine in den Examples. Oder ich habs noch nicht wirklich geschnallt... verlegen
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 17.07.2009, 12:05    Titel: Antworten mit Zitat

In der Hilfe ist ein Tutorial dazu zwinkern
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