VC菜鸟的图像闪烁问题(200分)

  • 主题发起人 主题发起人 savenight
  • 开始时间 开始时间
S

savenight

Unregistered / Unconfirmed
GUEST, unregistred user!
用VC。 三个控件层叠在一起。
CTreeCtrl在CTabCtrl上,CTabCtrl在CDialog上。

现将另外一个对话框在这个CDialog上移动,出现上述三个控件严重闪烁,怎样解决?
 
你是不是在OnPaint之类的函数中加了什么东西?
 
zw84611,谢谢关注:)

void CMyDlg::OnPaint()
{
CPaintDC dc(this); //这一句是干什么用的?好像其它地方没有用到,可以如果去掉,界面会刷新很慢。

m_hTreeCtrl.Invalidate(); //原来有这一句,去掉以后还是没有效果。
return;
}
 
CPaintDC dc(this); // device context for painting,得到对话框的设备环境

如果新建一个工程,OnPaint中应该是这样:
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}

=============================================
你的怎么会改成只有那两句?
可以把m_hTreeCtrl.Invalidate(); 去掉,加上CDialog::OnPaint();
 
zw84611:代码是别人的。
我加过CDialog::OnPaint();,不管用呀。
 
正常情况不会这样,如此闪烁肯定是加了其它重画代码所致,如m_hTreeCtrl.Invalidate();
自己找一下吧,别人帮不上忙。
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部