我插入一工具栏,如下加入下拉按钮:
m_wndPaintSetToolbar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
DWORD dwStyle=m_wndPaintSetToolbar.GetButtonStyle(m_wndPaintSetToolbar.CommandToIndex(ID_SET_LINE_WIDTH));
dwStyle|=TBSTYLE_DROPDOWN;
m_wndPaintSetToolbar.SetButtonStyle(m_wndPaintSetToolbar.CommandToIndex(ID_SET_LINE_WIDTH),dwStyle);
m_wndPaintSetToolbar.SetButtonStyle(m_wndPaintSetToolbar.CommandToIndex(ID_SET_COLOR),dwStyle);
m_wndPaintSetToolbar.SetButtonStyle(m_wndPaintSetToolbar.CommandToIndex(ID_SET_LINE_TYPE),dwStyle);
请问如何让下拉按钮响应下拉操作?

解决方案 »

  1.   

    在Accelerator中加入一项
    ID_SET_LINE_TYPE
    类向导就可以响应函数了
      

  2.   

    资源中
    在Accelerator中加入一项
    ID_SET_LINE_TYPE
    ctrl+w类向导就可以响应函数了void CRichctrlDlg::OnButton3() 
    {
    SendMessage(WM_COMMAND,ID_SET_LINE_TYPE,NULL);}
    除了点击按钮,还可以
    这样调用它---------------------------
    技术上可行
    符合你的要求吗?
    如果不明白
    请给我发短消息
    请附: 帖子的地址
    或在
    http://www.338888.com/VCShare/Default.asp
    上提问
      

  3.   

    点击时,按钮发送TBN_DROPDOWN 消息,首先消息映射,然后增加消息处理函数就行了
      

  4.   

    我加入ON_NOTIFY(TBN_DROPDOWN, AFX_IDW_TOOLBAR, OnToolbarDropDown),主工具栏的下拉按钮有反应,但自已做的工具栏没有为什么?
    何说的不符合我的,WANGJS说的才是我的意思.
      

  5.   

    资源中
    在Accelerator中加入一项
    ID_SET_LINE_TYPE
    ctrl+w类向导就可以响应函数了
      

  6.   

    资源中
    在Accelerator中加入一项
    ID_SET_LINE_TYPE
    应该已经有了ctrl+w
    注意message是COMMAND---------------------------
    技术上可行
    符合你的要求吗?
    如果不明白
    请给我发短消息
    请附: 帖子的地址
    或在
    http://www.338888.com/VCShare/Default.asp
    上提问
      

  7.   

    hezhuidan说的应该是快捷键的问题.我说的不是快捷键,是说用树标点击下拉按钮他不响应.也就是说当我用树标点击下拉按钮时,如何在框架类中收到CBN_DROPDOWN消息.主工具栏点击时可以收到,为什么我自己插入的工具栏点击时就收不到.
      

  8.   

    工具栏见图:
    http://www.338888.com/VCShare/ShowPost.asp?id=589
      

  9.   

    --------------------------------------------------------------------------------
    ON_NOTIFY(TBN_DROPDOWN,AFX_IDW_TOOLBAR,OnToolbarDropDown)------
    详见:
    http://www.338888.com/VCShare/ShowPost.asp?id=589
      

  10.   

    我的工具栏是:
    // PaintSetToolbar.h: interface for the CPaintSetToolbar class.
    //
    //////////////////////////////////////////////////////////////////////#if !defined(AFX_PAINTSETTOOLBAR_H__B5F2D762_22D4_4FCA_92C3_4E02DA3A32F1__INCLUDED_)
    #define AFX_PAINTSETTOOLBAR_H__B5F2D762_22D4_4FCA_92C3_4E02DA3A32F1__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000class CPaintSetToolbar : public CToolBar  
    {
    // Constructor
    public:
    CPaintSetToolbar();
    void SetColumns(UINT nColumns);
    UINT GetColumns() { return m_nColumns; };// Attributes
    public:// Operations
    public:// Implementation
    public:
    virtual ~CPaintSetToolbar();
    #ifdef _DEBUG
    virtual void AssertValid() const;
    virtual void Dump(CDumpContext& dc) const;
    #endifprotected:
    UINT m_nColumns;// Generated message map functions
    protected:
    //{{AFX_MSG(CPaintToolbar) //}}AFX_MSG
    DECLARE_MESSAGE_MAP()};#endif // !defined(AFX_PAINTTOOLBAR_H__CEC3A2C3_C97B_4E8D_92CD_80B53E9B528E__INCLUDED_)
    这样下拉按钮就没响应了.如果我是:CToolBar m_wndPaintSetToolbar;这样说明他就有响应,
    请问为什么?
      

  11.   

    我知道了:建工具栏时用:m_wndPaintSetToolbar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_LEFT
    | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED)就可以了.