mfc 控件显示 被遮挡_MFC控件显示和隐藏的问题

我想动态的使一串按钮从左到右的显示,达到流水的效果for(inti=14;i>1;i--){GetDlgItem(array[i])->ShowWindow(true);MessageBox("fdsafds");GetDlgItem(array[i])->ShowWindow(false...

这个问题是这样子的,当你调用GetDlgItem(array[i])->ShowWindow(true);它会调用onpaint函数去进行一次窗口重绘,但是,它并非立即进行重绘,它有可能先处理这个循环体,处理完了,再进行重绘,这样的话,给你的感觉是,控件并没有什么变化……

解决办法:调用UpdateWindow();函数,可以立即重绘窗口。。。。也就是把你的程序改成

for(i

将这些操作放在单独的一个线程里就可以得到你想要的效果了

如果把循环放在主线程里做的话,会阻塞主线程的消息队列,界面不会及时更新,所以没有效果

创建线程可以使用AfxBeginThread,CreateThread,_beginthread。。。方法很多~追问这个具体是什么意思呢?追答起一个线程CreateThread(....,ThreadProc);

线程的call

,TypeA分栏显示,TypeB分栏被隐藏; 之后,根据点选的按钮来隐藏和显示各自的分栏。

首先每一个控件都必须有特定的ID号,所有控件都是,包括静态文本控件,所有ID号都不能一样

在对话框类的OnInitDialog函数中添加如下代码:

CButton* pButton=(CButton*)GetDlgItem(IDC_RADIO1); //假设按钮TypeA的ID

添加定时器消息(WM_TIMER),在OnTimer中处理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值