Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Problem beim Einfügen von eigenen Buttons in eine Toolbar

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
08.04.2009, 11:21 Uhr
okraits



Hallo zusammen,

ich habe hier eine Applikation mit Toolbar, zu der ich nach den Standard-Buttons noch eigene Buttons hinzufügen möchte. Mein Code sieht folgendermaßen aus:


C++:
    HWND hwndToolBar = ::CreateWindowEx(
                   0,
                   TOOLBARCLASSNAME,
                   "",
                   WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS |
                   TBSTYLE_FLAT | TBSTYLE_TOOLTIPS | CCS_NORESIZE,
                   0, 0,
                   100, heightTools,
                   MainHWND(),
                   reinterpret_cast<HMENU>(IDM_TOOLWIN),
                   hInstance,
                   0);
    wToolBar = hwndToolBar;

    ::SendMessage(hwndToolBar, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
    ::SendMessage(hwndToolBar, TB_LOADIMAGES, IDB_STD_SMALL_COLOR,
                  reinterpret_cast<LPARAM>(HINST_COMMCTRL));

    TBADDBITMAP addbmp = { hInstance, IDR_CLOSEFILE };
    ::SendMessage(hwndToolBar, TB_ADDBITMAP, 1, (LPARAM)&addbmp);

    TBBUTTON tbb[ELEMENTS(bbs)];
    for (unsigned int i = 0;i < ELEMENTS(bbs);i++) {
        if (bbs[i].cmd == IDM_CLOSE)
            tbb[i].iBitmap = STD_PRINT + 1;
        else
            tbb[i].iBitmap = bbs[i].id;
        tbb[i].idCommand = bbs[i].cmd;
        tbb[i].fsState = TBSTATE_ENABLED;
        if ( -1 == bbs[i].id)
            tbb[i].fsStyle = TBSTYLE_SEP;
        else
            tbb[i].fsStyle = TBSTYLE_BUTTON;
        tbb[i].dwData = 0;
        tbb[i].iString = 0;
    }

    ::SendMessage(hwndToolBar, TB_ADDBUTTONS, ELEMENTS(bbs), reinterpret_cast<LPARAM>(tbb));

    std::map<int, SString> elements(GetToolsImages());
    std::map<int, SString>::iterator it = elements.begin();
    while (it != elements.end()) {
        HBITMAP h_bitmap;
        h_bitmap = (HBITMAP)LoadImage(NULL, ((*it).second).c_str(), IMAGE_BITMAP, 16, 16, LR_LOADFROMFILE);

        TBADDBITMAP bitid;
        bitid.hInst = NULL;
        bitid.nID = (UINT)h_bitmap;

        TBBUTTON tbbutton;
        tbbutton.iBitmap = SendMessage(hwndToolBar, TB_ADDBITMAP, 1, (long)&bitid);  
        tbbutton.idCommand = (*it).first;
        tbbutton.fsState = TBSTATE_ENABLED;
        tbbutton.fsStyle = TBSTYLE_BUTTON;
        tbbutton.dwData = 0;
        tbbutton.iString = NULL;

        SendMessage(hwndToolBar, TB_ADDBUTTONS, (WPARAM) 1, (LPARAM) (LPTBBUTTON) &tbbutton);
        it++;
    }



Ich habe mich an

www.c-plusplus.de/forum/viewtopic-var-t-is-111101.html

orientiert.

Zuerst wird die Toolbar erstellt, dann werden in der ersten for-Schleife die Standardbuttons aus einem Feld hinzugefügt, dann werden in der zweiten for-Schleife aus einer Map (ID und Pfad zum Image) die eigenen Buttons hinzugefügt.

Das Problem ist, daß für die eigenen Buttons nicht die übergebenen Images verwendet werden, sondern Images der Standard-Buttons.

Wenn ich mir tbbutton.iBitmap ausgeben lasse, so hat diese Variable die Werte 1, 2, usw. So wie ich das verstanden habe, müßte sie aber Indizes größer als die Indizes der Standard-Buttons haben.

Für jegliche Tipps wäre ich sehr dankbar!
--
www.okraits.de/

Dieser Post wurde am 08.04.2009 um 11:23 Uhr von okraits editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.04.2009, 18:12 Uhr
~f.-th.
Gast


Suchst du so was:
www.functionx.com/win32/Lesson03.htm

MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.04.2009, 18:07 Uhr
okraits



Danke für den Link, ich werds mir anschauen - die Winapi scheint ja hübsch wie Angela Merkel zu sein
--
www.okraits.de/
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.04.2009, 19:23 Uhr
~f.-th.
Gast


Hab es nur überflogen:
http://users.bigpond.net.au/programming/downloads.htm

Nach Sribble sehen.

MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: