如何实现工具栏右面的下拉箭头?

bright2k 2003-06-14 08:02:48
就是工具栏不能完全显示出来时,
右面会出现的那个>>形状的肩头,
就像ie里那样
...全文
58 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zwvista 2003-06-15
  • 打赏
  • 举报
回复
直接在AppWizard里应用Rebar就行了
zwvista 2003-06-15
  • 打赏
  • 举报
回复
这是Rebar的特征,不是工具栏
ggw 2003-06-15
  • 打赏
  • 举报
回复
wangjs720(听雨舟) :
请问何以得知需要此函数,用classwizard是怎么操作?
void CMainFrame::OnToolbarDropDown(NMTOOLBAR* pnmtb, LRESULT *plr)

wangjs720 2003-06-15
  • 打赏
  • 举报
回复
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
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("Failed to create toolbar\n");
return -1; // fail to create
}

if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}

// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);

//
DWORD dwExStyle = TBSTYLE_EX_DRAWDDARROWS;
m_wndToolBar.GetToolBarCtrl().SendMessage(TB_SETEXTENDEDSTYLE, 0, (LPARAM)dwExStyle);

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

return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs

return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers

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

// Switch on button command id's.
switch (pnmtb->iItem)
{
case ID_FILE_OPEN:
pWnd = &m_wndToolBar;
nID = IDR_MENU1;
break;
default:
return;
}

// load and display popup menu
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);
}

祝你好运
kingcom_xu 2003-06-15
  • 打赏
  • 举报
回复
http://www.codeproject.com/docking/chevrons.asp
ggw 2003-06-15
  • 打赏
  • 举报
回复
MSDN->CToolBarCtrl, using中有一个详细的例子,我也在学习,但不知道怎样加上通知捕获函数(用classwizard怎样操作)?
bright2k 2003-06-15
  • 打赏
  • 举报
回复
那怎么让Rebar显示出这个特征呢,
bright2k 2003-06-15
  • 打赏
  • 举报
回复
错了,
上面说的是 wangjs720(听雨舟) 的程序
bright2k 2003-06-15
  • 打赏
  • 举报
回复
to: ggw(格格巫)
你的程序是工具栏上的下拉按钮,我想要的是整个toolbar右面的>>形状的下拉按钮

谢谢 kingcom_xu(我们去倒分吧,倒个MVP玩玩) 的文章,
回楼上,参数应该是 RBBS_USECHEVRON
FreeSeagull 2003-06-15
  • 打赏
  • 举报
回复
找到了,就是这个风格参数:CBRS_SIZE_DYNAMIC
bright2k 2003-06-14
  • 打赏
  • 举报
回复
没找到那个什么参数啊,
谁来告诉我
bright2k 2003-06-14
  • 打赏
  • 举报
回复
还有,
如何用SDK实现呢?
bright2k 2003-06-14
  • 打赏
  • 举报
回复
谢谢先,
可用什么参数呢?
FreeSeagull 2003-06-14
  • 打赏
  • 举报
回复
创建的时候设置上一个参数就可以了,具体哪个忘记了。
Ieonardesque 2003-06-14
  • 打赏
  • 举报
回复
rebar

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧