Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Ctoolbarctrl...

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
15.09.2002, 22:11 Uhr
~Mansouu
Gast


Mit diesem Code erstelle ich eine ToolBar, in dieser befindet sich ein Button mit einem DropDown-Steuerelement! Dieses wird aber nicht angezeigt, könnte mir einer sagen woran das liegt? Der Button wird zwar mit dem Symbol angezeigt, nimmt jedoch keinen Maus-Klick an und das DropDown-Ding fehlt halt!
Ich bedanke mich im Voraus für jegliche Hilfe!

CRect rect;
GetClientRect(&rect);

CImageList* cImageList = new CImageList;
cImageList->Create(IDB_TOOLBAR, 16, 15, 0xFF00FF);

TBBUTTON* lpButtons = new TBBUTTON;
lpButtons->iBitmap = 0;
lpButtons->fsState = TBSTATE_ENABLED;
lpButtons->fsStyle = TBSTYLE_DROPDOWN;

m_ctlToolBar.Create(WS_CHILD | CCS_TOP | TBSTYLE_FLAT | TBSTYLE_EX_DRAWDDARROWS | TBSTYLE_TOOLTIPS, rect, this, IDR_TOOLBAR);
m_ctlToolBar.SetImageList(cImageList);

m_ctlToolBar.InsertButton(0, lpButtons);
m_ctlToolBar.SetCmdID(0, ID_NEW);

m_ctlToolBar.ShowWindow(SW_SHOW);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.09.2002, 17:42 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Ich hoffe ich hab dich richtig verstanden (war mir nicht ganz sicher, welche s DropDown Steuerelemnt du meinst )
In CMainFrame::OnCreate folgendes hinzufügen

C++:
m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);

DWORD dwStyle = m_wndToolBar.GetButtonStyle(m_wndToolBar.CommandToIndex(ID_ANYBUTTON));
dwStyle |= TBSTYLE_DROPDOWN;
m_wndToolBar.SetButtonStyle(m_wndToolBar.CommandToIndex(ID_ANYBUTTON), dwStyle);


Jetzt sollte mal er Pfeil angezeigt werden

Nun musst du folgendes in die MESSAGE_MAP in CMainFrame einfügen:

C++:
ON_NOTIFY(TBN_DROPDOWN, AFX_IDW_TOOLBAR, OnToolbarDropDown)



Füg folgende Funktion ein (am besten Funktiosprototyp afx in der *.h deklarieren):

C++:
void CMainFrame::OnToolbarDropDown(NMTOOLBAR *pnmtb, LRESULT *)
{    
   CWnd *pWnd;
   UINT nID;

   switch (pnmtb->iItem)
   {
      case ID_ANYBUTTON:
    pWnd = &m_wndToolBar;
    nID  = IDR_ANYDROPDOWN;
    break;
      default:
    return;
   }
    
   CMenu menu;
   menu.LoadMenu(nID);
   CMenu* pPopup = menu.GetSubMenu(0);
   ASSERT(pPopup);
    
   CRect rc;
   pWnd->SendMessage(TB_GETRECT, pnmtb->iItem, (LPARAM)&rc);
   pWnd->ClientToScreen(&rc);
    
   pPopup->TrackPopupMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_VERTICAL, rc.left, rc.bottom, this, &rc);
}


Dabei ist IDR_ANYDROPDOWN eine Menü aus der Ressource.

mfg mike
--
 
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: