工具栏上有几个按钮ID_OPEN,ID_HELP,ID_SELECT等在使用CButton * a=(CButton *)GetDlgItem(ID_HELP);时候,无法获得a的值,总是0工具条上所有的按钮都是这样,怎么回事呢

解决方案 »

  1.   

    确认,ID_OPEN,ID_HELP,ID_SELECT是CButton吗?
      

  2.   

    使得,就算用CWnd * a=GetDlgItem(ID_HELP);也是一样的
      

  3.   

    CToolBar::GetItemID()函数来获取每个按钮的ID
      

  4.   

    CToolBar::GetItemID()是获得资源ID,获得的无非是ID_OPEN,ID_HELP,ID_SELECT而已
      

  5.   

    还有GetDlgItem在什么情况才可以正确使用,在窗体中的按钮都可以,就是在工具条中的不可以。
      

  6.   

    当然,应为 ToolBar 中各个按钮不是真正的按钮,也就是说他们不是窗口,而是由ToolBar绘制出的按钮图形。用GetDlgItem当然不会得到对应的窗口。
      

  7.   

    要用 CToolBar::GetButtonInfo 来得到工具条的按钮信息
      

  8.   

    工具条中的按纽不是CButton,而是一个个TBBUTTON :
    示例: CToolBarCtrl &oBar = m_wndToolBar.GetToolBarCtrl();
    TBBUTTON button;
    oBar.GetButton(0,&button);
      

  9.   

    原来如此呀,谢谢了。
    我还在纳闷呢,工具栏上的按钮就我动态创建的可以使用GetDlgItem,其它咋就不行啦