对话框背景无法重绘

Jackxan 2014-07-21 01:19:40
我在一个单文档程序中加了一个登陆用的对话框,去掉了边框 在Onpaint里加载了一幅位图作为背景图,在win7下一切都正常,但是在xp下 或者在win7下换个主题后 就是出现问题了:
当切换到其他程序的窗口后,再切换回来时 这个对话框的背景没有能重绘出来 而是一片空白,只能看见上面的控件了!
请问下谁知道这个是怎么回事吗?
...全文
128 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
CS2130 2014-07-22
  • 打赏
  • 举报
回复
估计 OnPaint 这个函数里处理提有问题
Jackxan 2014-07-22
  • 打赏
  • 举报
回复
引用 7 楼 gordon3000 的回复:
切换时 Invalidate 一下。
应加到哪里呢?
副组长 2014-07-22
  • 打赏
  • 举报
回复
切换时 Invalidate 一下。
  • 打赏
  • 举报
回复
引用 5 楼 yumulinxiang 的回复:
[quote=引用 3 楼 bojie5744 的回复:] 所以,你需要通过自行刷新子窗口。
我是在App里 DoModal出来的 怎么设置 自行刷新子窗口?

CWinApp::InitInstance()
{

.....
CDlgLogin dlg;
	if(dlg.DoModal() != IDOK)
		return FALSE;

.....
}
[/quote] 当你切换时,单文档程序框架必然会出发重新绘制。在这个时候,强制子窗口刷新。
Jackxan 2014-07-21
  • 打赏
  • 举报
回复
引用 3 楼 bojie5744 的回复:
所以,你需要通过自行刷新子窗口。
我是在App里 DoModal出来的 怎么设置 自行刷新子窗口?

CWinApp::InitInstance()
{

.....
CDlgLogin dlg;
	if(dlg.DoModal() != IDOK)
		return FALSE;

.....
}
kuankuan_qiao 2014-07-21
  • 打赏
  • 举报
回复
引用 2 楼 bojie5744 的回复:
没有设置为子窗口刷新。类似的,设置了WS_CLIPCHILDREN 这个属性,将不会为子控件和子窗口刷新。
  • 打赏
  • 举报
回复
所以,你需要通过自行刷新子窗口。
  • 打赏
  • 举报
回复
没有设置为子窗口刷新。类似的,设置了WS_CLIPCHILDREN 这个属性,将不会为子控件和子窗口刷新。
副组长 2014-07-21
  • 打赏
  • 举报
回复
不同的Windows版本指不定出啥状况。 切换后强制刷新一下试试?

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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