Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Probleme mit "spezieller" Symbolleiste

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
14.05.2004, 13:31 Uhr
Philipp



Tag die Herren und Damen,

hab ein Problem mit ner Anwendung von mir, ist ein kleiner ChatClient. Der funzt eigentlich auch schon sehr gut, hab nur Probleme mit der Bedinung durch den User, genauer gesagt mit den Steuerelementen.

Hab mich dazu entschieden, alle möglichen Befehle in Buttons zu packen, und die direkt auf die Benutzeroberfläche zu packen. Wusste erst nicht wie ich das ordentlich hinkriegen kann, aber ich hab jetzt ne Symbolleiste erstellt, und die meiner Dialogfeldanwendung hinzugefügt. Nur soll diese Symbolleiste NICHT wie normalerweise am oberen Rand, sondern am linken Rand platziert sein! Das sieht dann in etwa so aus :



So sieht das ja eigentlich ganz ok aus(aus Testzwecken ist die Symbolleiste allerdings noch nicht genau auf die kanten der anderen Steuerelemente ausgerichtet), wie gesagt die Symbolleiste da links, angeordet halt per :


C++:
// Create the toolbar
    m_ToolBar.CreateEx(this,NULL,WS_CHILD | WS_VISIBLE | CBRS_ALIGN_LEFT,CRect(0,0,0,0));
    m_ToolBar.LoadToolBar(IDR_MAINFRAME);
    m_ToolBar.ShowWindow(SW_SHOW);
    m_ToolBar.SetBarStyle(CBRS_ALIGN_LEFT | CBRS_TOOLTIPS | CBRS_FLYBY);
    RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);



Nur, wenn ich jetzt best. Aktionen wie z.B. das Connecten zu einem Server ausführe, dann "verschiebt" sich die Symbolleiste irgendwie etwas nach oben! Man sieht zwar noch die alte Symbolleiste, aber die unter den Bilder liegenden Buttons verschieben sich! Kommt dann z.b. mal vor dass man auf das Bild des Button "OpenLog" klickt, aber dann in Wirklichkeit den Button "Options" klickt, woraufhin sich das Optionsmenü öffnet! Der oberste Button(Connect Button), ist dann sogar garnicht mehr sichtbar, der rutscht irgendwie aus dem Dialogfeld heraus, alles sehr komisch!

Insgesamt verändert sich die Symbolleiste also bei bestimmten Aktionen, wobei die Veränderungen unterschiedlich sein können, manchmal verschiebt sich die Symbolleiste, es fallen einige Buttons weg, etc... Als Beispiel mal folgendes Bild NACH dem connecten zu einem Server:



Man sieht :
- 2x Exit Button, wobei nur der obere wirklich funktioniert, der untere stellt nur das Bild dar
- 3x Überlappungen von Buttons
- Der Disconnect button wird völlig verdeckt/ist nicht mehr da!

Weiß irgendjemand woran das liegen könnte, und könnte mir da ne Lösung geben? Sourcecode kann ich auch gerne rausrücken, das ist kein Problem

Philipp
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.05.2004, 18:04 Uhr
~mike
Gast


Hi!
Ist das ne SDI mit DialogBar oder ein Dialog? Wenn Dialog: Poste mal den Code mit dem du das Bitmap den Button zuweist.

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.05.2004, 18:18 Uhr
Philipp



Das ist ne normale Dialogfeldanwendung...

Mhh, nen code um die Bitmaps zuzuweisen habe ich garnet, hab einfach ne Ressource IDR_MAINFRAME als toolbar gemacht, da dann die Symbole was abgeändert, also andere Bildchen mit anderer Größe, gespeichert, und per Code hinzugefügt. Sieht in MVC++.NET so aus:



Der Code, mit dem ich meine Membervariable des Typs CToolBar hinzufüge ist halt:


C++:
class CChatClientDlg : public CDialog
{
public:
//[...]
CToolBar m_ToolBar;




C++:
BOOL CChatClientDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
        //[...]
        // Create the toolbar
    m_ToolBar.CreateEx(this,NULL,WS_CHILD | WS_VISIBLE | CBRS_ALIGN_LEFT,CRect(0,0,0,0));
    m_ToolBar.LoadToolBar(IDR_MAINFRAME);
    m_ToolBar.ShowWindow(SW_SHOW);
    m_ToolBar.SetBarStyle(CBRS_ALIGN_LEFT | CBRS_TOOLTIPS | CBRS_FLYBY);
    RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
    //m_ToolBar.EnableToolTips(true);

    m_ToolBar.GetToolBarCtrl().EnableButton(IDC_CONNECT,true);
    m_ToolBar.GetToolBarCtrl().EnableButton(IDC_DISCONNECT,false);
    m_ToolBar.GetToolBarCtrl().EnableButton(IDC_SendText,false);
    m_ToolBar.GetToolBarCtrl().EnableButton(IDC_PRIVATEMESSAGE,false);




Sollte doch eigentlich so gehen...

Ph

Dieser Post wurde am 14.05.2004 um 18:18 Uhr von Philipp editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.05.2004, 19:41 Uhr
~mike
Gast


Hi!
Das net hab ich leider nicht und im VC++ 6 hab ichs leider nie probiert. Ich finde das Aussehn der Leiste einwenig komisch. Die Buttonumrahmung dürfte imho nur erscheinen wnen du mit der Maus drüberfährst.
Probier mal:
>> www.codeguru.com/Cpp/W-D/dislog/toolbarsandstatusbars/article.php/c1939/
www.codeguru.com/Cpp/controls/toolbar/miscellaneous/article.php/c2545/

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.05.2004, 19:50 Uhr
Philipp



Das mit der Buttonumrahmung ist doch normal so !?

Bei mir ist das wirklich fast überall so, nur in ganz neuen Apps wie Word2003 und so, da haben die Buttons ihre Umrahmung nur wenn man drüberfährt, aber sonst...

Ein Tipp: Wenn ich die Toolbar am oberen Rand ausrichten lasse, also das Argument CBRS_ALIGN_TOP übergebe, dann ist die LEiste zwar natürlich net mehr am linken Rand ausgerichtet, aber es gibt diese Buttonfehler auch nicht mehr! Nur bringt mir das halt nichts, weil ich die Leiste eben da haben will

Ph
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
17.05.2004, 15:37 Uhr
Philipp



achso ich weiß jetzt zumindest woran das mit den "nicht flachen" Buttons, deren Rahmen man sieht, liegt!

Der zweite Parameter der Memberfunktion CreateEx ist normalerweise TBSTYLE_FLAT, ich aber übergebe NULL, weswegen mann eben die Buttonumrandungen sieht... ist aber net weiter schlimm!

Weiß jemand vielleicht die Lsg. für das ursprüngliche Problem??

THX
Ph
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
17.05.2004, 17:48 Uhr
~daDings
Gast


*mal wild in der Gegend herum spekulier*
Versuch mal den 6 Parameter von RepositionBars zu verwenden und versuch damit herum zu experimentieren.

Als Vermutung drängt sich mir der Verdacht auf, da rechnet wer zur Zeichenfläche die Titelleiste mit und dann verrutscht es.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: