mfc标签页不显示

使用mfc编辑界面时,要求在屏幕正中央显示窗口并且显示当前默认标签页.简略代码如下:

ShowSelectTabpage(0); //自定义显示默认标签页函数
SetForegroundWindow();
FillTabpageData();//标签页填充信息更新
CenterWindow();
ShowWindow(SW_SHOW);//显示窗口

这样之后运行界面发现,界面标签页里面是空白的,关闭一下窗口重新打开控件就显示了,或者点击别的标签页之后,在点击回来默认标签页就显示了,

之后无论怎么操作标签页控件都是正常显示.只有第一次打开不显示.

在网上查了很多资料,发现说,有可能窗口的标签页已经失效.具体原因我没有深究不过根据这种说法做了一下改动:

ShowSelectTabpage(0);
	SetForegroundWindow();
	FillTabpageData();

	CenterWindow();
	ShowWindow(SW_SHOW);
//添加如下代码
	Invalidate();
	UpdateWindow();
	ShowSelectTabpage(0);

这样之后运行界面,正常显示标签页控件.

Invalidate的作用是使界面无效然后重新绘制.

然而当调用Invalidate之后,屏幕不一定马上更新,因为WM_PAINT消息不一定在队列头部,而调用UpdateWindow会使WM_PAINT消息马上执行的,绕过了消息队列;
所以调用Invalidate之后,加上UpdateWindow()就会马上更新屏幕,然后再重新定义默认标签页为需要显示的标签页.一切ok

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值