ListCtrl被另外的窗口覆盖后变灰界面刷新不正确有关问题
ListCtrl被另外的窗口覆盖后变灰界面刷新不正确问题
对话框上放了个CListCtrl控件,大多数情况都是好的,但是当里面有数据项时,我双击弹出一个新窗口,甚至有时候仅仅切换一下窗口,整个列表控件就变成灰色了,需要选中一行或拖动列头才会把数据部分刷出来,而其他部分还是灰的,我尝试在OnPaint消息里面调用列表的Invalidate方法都不管用,顺便补充一下出现问题的都是直接在复合控件上面放CListCtrl或在复合控件里面弹出的对话框里面放的CListCtrl,普通MFC对话框程序貌似没有此问题,此问题非常奇怪,请碰到了的或了解此问题的高手指点一下!
------解决方案--------------------
OnPaint消息里面调用列表的Invalidate这种方法不太好!
怀疑是复合窗口的foucs等消息是不是处理没有处理好?建议先将程序简化,然后慢慢复杂,查查问题在哪儿!
------解决方案--------------------
被覆盖的地方变灰,这个是对话框背景色
响应WM_ERASEBKGND消息,在处理WM_ERASEBKGND时返回TURE
http://www.uipower.com/bbs/forumdisplay.php?fid=13
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
我遇到过一种情况,tabctrl中某个页面中的控件在其他界面切换后没了。
后来我在OnPaint里,几个对话框重新调用ShowWindow(false);ShowWindow(true);就好了。
不知是否可行
CRect r;
m_tab.GetClientRect (&r);
switch(m_tab.GetCurSel())
{
case 3:
m_meterDlg->ShowWindow(FALSE);
m_meterDlg->ShowWindow(TRUE);
break;
case 5:
m_terfileDlg->ShowWindow(FALSE);
m_terfileDlg->ShowWindow(TRUE);
break;
}
------解决方案--------------------
没用的 微软的bug,我发现很多时候,都是微软搞鬼,或者msdn不写清楚。浪费很多时间。
我也遇到了,没时间去看
对话框上放了个CListCtrl控件,大多数情况都是好的,但是当里面有数据项时,我双击弹出一个新窗口,甚至有时候仅仅切换一下窗口,整个列表控件就变成灰色了,需要选中一行或拖动列头才会把数据部分刷出来,而其他部分还是灰的,我尝试在OnPaint消息里面调用列表的Invalidate方法都不管用,顺便补充一下出现问题的都是直接在复合控件上面放CListCtrl或在复合控件里面弹出的对话框里面放的CListCtrl,普通MFC对话框程序貌似没有此问题,此问题非常奇怪,请碰到了的或了解此问题的高手指点一下!
------解决方案--------------------
OnPaint消息里面调用列表的Invalidate这种方法不太好!
怀疑是复合窗口的foucs等消息是不是处理没有处理好?建议先将程序简化,然后慢慢复杂,查查问题在哪儿!
------解决方案--------------------
被覆盖的地方变灰,这个是对话框背景色
响应WM_ERASEBKGND消息,在处理WM_ERASEBKGND时返回TURE
http://www.uipower.com/bbs/forumdisplay.php?fid=13
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
我遇到过一种情况,tabctrl中某个页面中的控件在其他界面切换后没了。
后来我在OnPaint里,几个对话框重新调用ShowWindow(false);ShowWindow(true);就好了。
不知是否可行
CRect r;
m_tab.GetClientRect (&r);
switch(m_tab.GetCurSel())
{
case 3:
m_meterDlg->ShowWindow(FALSE);
m_meterDlg->ShowWindow(TRUE);
break;
case 5:
m_terfileDlg->ShowWindow(FALSE);
m_terfileDlg->ShowWindow(TRUE);
break;
}
------解决方案--------------------
没用的 微软的bug,我发现很多时候,都是微软搞鬼,或者msdn不写清楚。浪费很多时间。
我也遇到了,没时间去看