tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
1361
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von DigitalRevolution
    DigitalRevolution DigitalRevolution ist offline Mitglied Bronze
    Registriert seit
    Jul 2006
    Ort
    Mühlhausen (Thüringen)
    Beiträge
    27
    Hallo an alle, ich möchte in meine Anwendung eine Toolbar einbauen, die Symbole mit 256 Farben beinhaltet.
    Da arbeitet mir aber die
    Code cpp:
    1
    
    m_wndToolBar.LoadToolBar()
    entgegen.

    Wie kann man es bewerkstelligen dass in der Toolbar 256 Farben angezeigt werden?
    Ich arbeite mit MS Visual Studio 2005.

    Habe schon auf codezone und codeguru nachgeschaut aber nur uralte Anleitungen gefunde, die alle nicht funktionieren. (Fehler wie "Failed to create empty document".)

    mfg DR
     

  2. #2
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Evt. hilft dir das weiter.

    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  3. #3
    Avatar von DigitalRevolution
    DigitalRevolution DigitalRevolution ist offline Mitglied Bronze
    Registriert seit
    Jul 2006
    Ort
    Mühlhausen (Thüringen)
    Beiträge
    27
    Dankeschön aber irgendwie klappt das net, die Toolbar zeigt keine Veränderung:

    Dekliration in mainframe.h:
    Code cpp:
    1
    2
    3
    4
    5
    
    ...
    CToolBar   m_Toolbar;
    CImageList *pImageList; 
    CBitmap bmp;
    ...

    in OnCreate in mainframe.cpp:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
        return -1;
     
    if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
    {
             TRACE0("Symbolleiste konnte nicht erstellt werden\n");
        return -1;      // Fehler bei Erstellung
    }
     
    if (!m_wndStatusBar.Create(this) ||!m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)))
    {
        TRACE0("Statusleiste konnte nicht erstellt werden\n");
        return -1;      // Fehler bei Erstellung
    }
    // TODO: Löschen Sie diese drei Zeilen, wenn Sie nicht möchten, dass die Systemleiste andockbar ist
    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
    EnableDocking(CBRS_ALIGN_ANY);
    DockControlBar(&m_wndToolBar);
     
    //Eigener Code:
     
    pImageList=m_wndToolBar.GetToolBarCtrl().GetImageList();
    pImageList->DeleteImageList();
     
    bmp.LoadBitmap(IDB_TOOLBARHI);
    pImageList->Create(320, 15, ILC_MASK | ILC_COLOR24, 28, 0);
    pImageList->Add(&bmp,RGB(255,0,255));
    m_toolBar.GetToolBarCtrl().SetImageList(pImageList);
     
    return 0;

    Und wenn ich zeile 28 durch
    Code cpp:
    1
    
    m_wndToolBar.GetToolBarCtrl().SetImageList(pImageList);

    ersetze bleibt die Toolbar größenteils grau, und es lässt sich keinerlei Interaktion vornehmen.

    Was mache ich falsch?

    mfg DR
     

  4. #4
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Beim Erzeugen der Image-List wird die Breite/Höhe für die Bildgröße pro Button angegeben. Die Höhe (15) wäre dann wohl ok und die Breite wäre dann Gesambreite/Anzahl (320/28), was allerdings bei deinen Werten ein krummes Ergebnis ergibt. Bei 256 Farben würde dann auch der Parameter-Wert "ILC_COLOR8" zutreffen.
    Ein neues Toolbar-Objekt brauchst du nicht zu deklarieren. Das Bitmap wird bei dem vorhandenen "m_wndToolBar" ausgetauscht.
    Code cpp:
    1
    2
    3
    
    pImageList->Create(15 /* ? */, 15, ILC_MASK | ILC_COLOR8, 28 /* ? */, 0);
    pImageList->Add(&bmp,RGB(255,0,255));
    m_wndToolBar.GetToolBarCtrl().SetImageList(pImageList);
    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  5. #5
    Avatar von DigitalRevolution
    DigitalRevolution DigitalRevolution ist offline Mitglied Bronze
    Registriert seit
    Jul 2006
    Ort
    Mühlhausen (Thüringen)
    Beiträge
    27
    Ok thx,
    die Toolbar wird nun angezeigt, jedenfalls die Buttons mit 16 Farben(die auch mit der normalen Toolbar identisch sind), die anderen bleiben grau und bieten keine Interaktionsmöglichkeit...

    Code cpp:
    1
    
    pImageList->Create(16, 15, ILC_MASK | ILC_COLOR8, 20, 0);

    Irgendwas klappt noch nicht.

    mfg DR
     

  6. #6
    Avatar von DigitalRevolution
    DigitalRevolution DigitalRevolution ist offline Mitglied Bronze
    Registriert seit
    Jul 2006
    Ort
    Mühlhausen (Thüringen)
    Beiträge
    27
    Also die Buttons in der Toolbar werden nur dann korrekt angezeigt, wenn sie aktiv sind.Wenn sie inaktiv sind, sehen sie nicht blass, sondern dann ist die ganze Fläche völlig grau,aber nur bei den Farben die nicht in den normalen 16 Farben enthalten sind, woran liegt das?

    mfg DR
    Geändert von DigitalRevolution (28.01.07 um 22:50 Uhr)
     

  7. #7
    Avatar von DigitalRevolution
    DigitalRevolution DigitalRevolution ist offline Mitglied Bronze
    Registriert seit
    Jul 2006
    Ort
    Mühlhausen (Thüringen)
    Beiträge
    27
    Naja habs jetz n bisschen anders geregelt.Aber wenn jmd. doch noch ne Lösung hat kann er sie ja trotzdem reinschreiben

    mfg DR
     

  8. #8
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Zitat Zitat von DigitalRevolution Beitrag anzeigen
    Also die Buttons in der Toolbar werden nur dann korrekt angezeigt, wenn sie aktiv sind.Wenn sie inaktiv sind, sehen sie nicht blass, sondern dann ist die ganze Fläche völlig grau,aber nur bei den Farben die nicht in den normalen 16 Farben enthalten sind, woran liegt das?
    mfg DR
    Du musst analog zur normalen Image-List noch eine für inaktive Buttons festlegen. Dafür gibt es die Member "GetDisabledImageList()" bzw. "SetDisabledImageList()".

    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  9. #9
    Avatar von DigitalRevolution
    DigitalRevolution DigitalRevolution ist offline Mitglied Bronze
    Registriert seit
    Jul 2006
    Ort
    Mühlhausen (Thüringen)
    Beiträge
    27
    Danke MCoder, werd's bei nächster Gelegenheit mal ausprobieren.

    mfg
     

Ähnliche Themen

  1. CS2 Farben Monitor vs. Farben Drucker
    Von Ludger im Forum Photoshop
    Antworten: 9
    Letzter Beitrag: 05.08.07, 22:22
  2. Bild in Toolbar bzw. Toolbar-Button mit anderer Größe
    Von sTEk im Forum VisualStudio & MFC
    Antworten: 0
    Letzter Beitrag: 01.11.06, 18:19
  3. Toolbar mit mehr als 16 Farben?
    Von mki_germo im Forum VisualStudio & MFC
    Antworten: 2
    Letzter Beitrag: 15.09.06, 08:54
  4. XML + vB für Toolbar
    Von MiSTRiXER im Forum XML Technologien
    Antworten: 0
    Letzter Beitrag: 12.02.06, 22:36
  5. Toolbar für IE
    Von andreas_gierisch im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 01.11.05, 10:34