各位高手帮我看看我先定义了  CButton btn;
CImageList m_imgList;
CToolBarCtrl m_ToolBar;然后
        m_imgList.Create(32,32,ILC_COLOR32|ILC_MASK,0,0);
m_ToolBar.EnableAutomation();
m_ToolBar.Create(WS_CHILD|WS_VISIBLE,CRect(0,0,0,0),this,IDR_TOOLBAR1); 
UINT Resource[ARRAY_MAX]={IDI_ICON1,IDI_ICON2,IDI_ICON3,IDI_ICON4,IDI_ICON5};
int i;
TBBUTTON button[ARRAY_MAX];
for(i=0;i<ARRAY_MAX;i++)
{
m_imgList.Add(::LoadIcon(::AfxGetResourceHandle(),MAKEINTRESOURCE(Resource[i])));
}
m_ToolBar.SetImageList(&m_imgList);
    for(i=0;i<ARRAY_MAX;i++)
{
button[i].dwData=0;
button[i].fsState=TBSTATE_ENABLED;
button[i].iBitmap = i;
}

m_ToolBar.AddButtons(ARRAY_MAX,button);
TBBUTTON Wrap;
Wrap.dwData = 0;
Wrap.fsState = TBSTATE_ENABLED;
Wrap.fsStyle = TBSTYLE_SEP;
m_ToolBar.InsertButton(3,&Wrap);
    m_ToolBar.AutoSize();
m_ToolBar.SetStyle(TBSTYLE_FLAT|CCS_TOP);现在我要响应IDI_ICON1按键消息
在.h里   afx_msg void OnIcon1();
在.cpp里  ON_COMMAND(IDI_ICON1,OnIcon1)
          void CSfDlg::OnIcon1()
{
AfxMessageBox("adfa");
}
但是执行后 工具栏创建成功了,按IDI_ICON1不响应
  
各位高手帮忙看看是什么原因

解决方案 »

  1.   

        for(i=0;i <ARRAY_MAX;i++) 

    button[i].dwData=0; 
    button[i].fsState=TBSTATE_ENABLED; 
    button[i].iBitmap = i; 
    button[i].idCommand = ???;
      

  2.   

    你需要给每一个按钮设置idCommand,比如
    button[i].idCommand = 3325 + i;//这个值你自己定义,我随便写的3325然后才ON_COMMAND(3325 + 0,OnIcon1) 
    ON_COMMAND(3325 + 1,OnIcon2) 
      

  3.   

    button[i].idCommand=i;
    加上 还是不能响应消息
      

  4.   

    #define IDI_ICON1              135
    ON_COMMAND(IDI_ICON1+0,OnIcon1)  button[i].idCommand=IDI_ICON1+i;还是不行啊
      

  5.   

    加上这个估计就可以了button[i].fsStyle=TBSTYLE_BUTTON;我这边测试是可以的
      

  6.   

    控件是动态增加,但控件ID是先设定的,你在父窗口的WM_COMMAND消息中根据控件ID来做响应就行了。
      

  7.   


        for(i=0;i <ARRAY_MAX;i++) 
        { 
             button[i].dwData=0; 
             button[i].fsState=TBSTATE_ENABLED; 
             button[i].iBitmap = i; 
        } 
    改为:
        for(i=0;i <ARRAY_MAX;i++) 
        {  
             button[i].dwData=0; 
     button[i].fsState=TBSTATE_ENABLED; 
     button[i].iBitmap = i;
     button[i].fsStyle=TBSTYLE_BUTTON;  // 添加此语
        } 
        button[0].idCommand   =   IDI_ICON1;   // 绑定ID
        button[1].idCommand   =   IDI_ICON2;   
        button[2].idCommand   =   IDI_ICON3;   
        button[3].idCommand   =   IDI_ICON4;   
        button[4].idCommand   =   IDI_ICON5;   vs2005试验通过。