我问了这个问题好几次,不过一直没解决.请大家在帮帮忙,我把问题仔细说说!我在VC资源中编辑了一个对话框,定义其类为CCtrlBar,并在框架类中把他设为工具栏!
我想在视图view类的成员函数OnButton()中动态修改该对话框创建的工具栏中按钮(IDC_BUTTON)的属性(比如:是否可见),怎样写程序,帮我写段代码,谢谢!前面有人说这样:CCtrlBar CB;
CButton * aa;
aa->CB.GetDlgItem(IDC_BUTTON);
aa.ModifyStyle(WS_VISIBLE,0);
Invalidate();但是程序运行到GetDlgItem();就出现错误了!请教各位高手,帮帮小弟!谢谢!

解决方案 »

  1.   

    aa->CB.GetDlgItem(IDC_BUTTON);
    写错拉巴
    应该是=吧
    到这里出什么错误拉
      

  2.   

    你用CCtrlBar定义的对象是在CMainFrame类中吧,而且应该是共有对象,即在CMainFrame类中定义:
    CCtrlBar m_oCtrlBar;然后在View类的OnButton()函数中添加如下代码:CMainFrame *pMainFrame = (CMainFrame*)AfxGetMainWnd();//获取主框架类指针;
    CButton *pButton = pMainFrame->m_oCtrlBar.GetDlgItem(IDC_BUTTON);//获取按钮的指针————必须通过主框架类中的成员变量才行,直接定义,如你上面的代码,是不可能获取的,会出现内存错误(当然,直接定义之后能获取改按钮的指针再赋值,也可以————注意,必须赋值才行);
    pButton->ModifyStyle(WS_VISIBLE,0);因为你的代码没有给出,所以我是按我的思路写的,你变通一下就应该可以,如果你的思路比较正统的话,应该不用改动就可以。有问题再来,呵呵,应该能解决
      

  3.   

    风清高,你好,
    我按你的方法做了,可以,
    但是用pButton->ModifyStyle(WS_VISIBLE,0);后,
    该按钮仍然可见,但是不能按了,也不是变灰那种不可用,
    你能在帮我使他不可见吗?还有我还要改变一个Static的属性(改变是否可见和其标题);再次谢谢你!!!!
      

  4.   

    加了这个语句:
    pMainFrame->m_oCtrlBar.Invalidate();
    试一试我建议你别隐藏,隐藏之后那里应该是一个空白,感觉不太好,还是用变灰的比较好,你认为呢
      

  5.   

    对于Static控件,你要更改它的属性的话,你必须修改它的默认ID(所有Static控件的默认ID都相同)为特有ID ,然后获取它的指针,然后就可以对它进行操作了设置它的文本,用SetWindowText()函数,别忘了设置好以后Invalidate()
      

  6.   

    风清高,又麻烦你了
    我怎样把按钮再显示出来?
    我这样做的:CMainFrame *pMainFrame = (CMainFrame*)AfxGetMainWnd();
    CButton *pButton = pMainFrame->m_oCtrlBar.GetDlgItem(IDC_BUTTON);
    pButton->ModifyStyle(WS_VISIBLE,1);//把WS_VISIBLE设为1
    pMainFrame->m_oCtrlBar.Invalidate();
    但没有显示出来,请指点!
      

  7.   

    呵呵,你应该看看CWnd类的ModifyStyle()函数,他的第一个参数是要删除的属性,第二个参数是要增加的属性,所以你要这么写:
    pButton->ModifyStyle(0,WS_VISIBLE);函数使用没有把握时,多查一查MSDN,:)