怎样动态修改对话框中控件的属性?

boyeexie 2003-09-20 06:55:41
我问了这个问题好几次,不过一直没解决.请大家在帮帮忙,我把问题仔细说说!

我在VC资源中编辑了一个对话框,定义其类为CCtrlBar,并在框架类中把他设为工具栏!
我想在视图view类的成员函数OnButton()中动态修改该对话框创建的工具栏中按钮(IDC_BUTTON)的属性(比如:是否可见),怎样写程序,帮我写段代码,谢谢!

前面有人说这样:

CCtrlBar CB;
CButton * aa;
aa->CB.GetDlgItem(IDC_BUTTON);
aa.ModifyStyle(WS_VISIBLE,0);
Invalidate();

但是程序运行到GetDlgItem();就出现错误了!

请教各位高手,帮帮小弟!谢谢!
...全文
137 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengqinggao 2003-09-29
  • 打赏
  • 举报
回复
呵呵,你应该看看CWnd类的ModifyStyle()函数,他的第一个参数是要删除的属性,第二个参数是要增加的属性,所以你要这么写:
pButton->ModifyStyle(0,WS_VISIBLE);

函数使用没有把握时,多查一查MSDN,:)
boyeexie 2003-09-29
  • 打赏
  • 举报
回复
风清高,又麻烦你了
我怎样把按钮再显示出来?
我这样做的:

CMainFrame *pMainFrame = (CMainFrame*)AfxGetMainWnd();
CButton *pButton = pMainFrame->m_oCtrlBar.GetDlgItem(IDC_BUTTON);
pButton->ModifyStyle(WS_VISIBLE,1);//把WS_VISIBLE设为1
pMainFrame->m_oCtrlBar.Invalidate();
但没有显示出来,请指点!
fengqinggao 2003-09-29
  • 打赏
  • 举报
回复
呵呵,很奇怪,这个帖子的100分居然没有入我的帐,“我得分问题”列表中没有,总分也没有上涨(其他帖子都没有这个问题),不知道怎么回事,:)
fengqinggao 2003-09-21
  • 打赏
  • 举报
回复
对于Static控件,你要更改它的属性的话,你必须修改它的默认ID(所有Static控件的默认ID都相同)为特有ID ,然后获取它的指针,然后就可以对它进行操作了

设置它的文本,用SetWindowText()函数,别忘了设置好以后Invalidate()
fengqinggao 2003-09-21
  • 打赏
  • 举报
回复
加了这个语句:
pMainFrame->m_oCtrlBar.Invalidate();
试一试

我建议你别隐藏,隐藏之后那里应该是一个空白,感觉不太好,还是用变灰的比较好,你认为呢
boyeexie 2003-09-21
  • 打赏
  • 举报
回复
风清高,你好,
我按你的方法做了,可以,
但是用pButton->ModifyStyle(WS_VISIBLE,0);后,
该按钮仍然可见,但是不能按了,也不是变灰那种不可用,
你能在帮我使他不可见吗?

还有我还要改变一个Static的属性(改变是否可见和其标题);

再次谢谢你!!!!

boyeexie 2003-09-21
  • 打赏
  • 举报
回复
我试!谢谢
fengqinggao 2003-09-20
  • 打赏
  • 举报
回复
你用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);

因为你的代码没有给出,所以我是按我的思路写的,你变通一下就应该可以,如果你的思路比较正统的话,应该不用改动就可以。

有问题再来,呵呵,应该能解决
alon21 2003-09-20
  • 打赏
  • 举报
回复
Mark
gezihou 2003-09-20
  • 打赏
  • 举报
回复
aa->CB.GetDlgItem(IDC_BUTTON);
写错拉巴
应该是=吧
到这里出什么错误拉

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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