C++ 一个MFC/Win32控件似乎正在使我的整个桌面重新绘制
我有一个自定义控件,它拥有一个编辑框并将其四处移动,等等。编辑框通常会使用如下代码进行修改:C++ 一个MFC/Win32控件似乎正在使我的整个桌面重新绘制,c++,mfc,winapi,C++,Mfc,Winapi,我有一个自定义控件,它拥有一个编辑框并将其四处移动,等等。编辑框通常会使用如下代码进行修改: edit.MoveWindow( &rc ); edit.SetWindowText( text ); edit.SetLimitText( N ); edit.ShowWindow(SW_SHOW); edit.SetFocus(); edit.SetSel(0, CB_ERR); RECT rc位于自定义控件的本地坐标中,编辑是以自定义控件作为父控件创建的。我甚至不确定这是否一定是问题所在
edit.MoveWindow( &rc );
edit.SetWindowText( text );
edit.SetLimitText( N );
edit.ShowWindow(SW_SHOW);
edit.SetFocus();
edit.SetSel(0, CB_ERR);
RECT rc位于自定义控件的本地坐标中,编辑是以自定义控件作为父控件创建的。我甚至不确定这是否一定是问题所在,但当触发此代码时,有时它会很好且平滑,而有时我的整个桌面会闪烁,好像正在重新绘制。我看不出我在任何地方显式调用Invalidate(Rect)
有什么想法吗?这不是您向我们展示的任何代码。整个桌面闪存几乎总是在代码的某个地方调用
invalidate(NULL…)
,所以继续挖掘
其中几个调用将导致消息被发送到编辑的父窗口,很可能是在处理该消息时发生了失效
如果我是一个赌徒,我会打赌SetFocus()调用是触发重新绘制的调用。如果你在应用程序中注释掉该代码,桌面是否仍然闪烁?“wodge”是一个很酷的词,我将尝试将其应用到我的日常词汇表中:)