c++ - 单个 MFC/Win32 控件似乎让我的整个桌面重绘

标签 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 在自定义控件的本地坐标中,编辑是用自定义控件作为父控件创建的。我什至不确定这 是否绝对是问题所在,但是当触发此代码时,有时它很好而且很流畅,有时我的整个桌面似乎在闪烁,就像正在重绘一样。我看不到我在任何地方显式调用 Invalidate(Rect)。

有什么想法吗?

最佳答案

它不会是您向我们展示的任何代码。整个桌面闪存几乎总是在调用 InvalidateRect(NULL,...) 的代码中的某处,因此请继续挖掘。

这些调用中的几个将导致消息被发送到编辑的父窗口,很可能在处理该消息时发生了 InvalidateRect。

如果我敢打赌,我会打赌 SetFocus() 调用会触发重绘。

关于c++ - 单个 MFC/Win32 控件似乎让我的整个桌面重绘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2318613/

相关文章:

c++ - 在 C++ 中重载运算符给我一个错误

c++ - `RAWINPUT::header::wParam`包含什么用于键盘输入

c++ - 为什么 SetWindowsHookEx 返回 0?

c++ - 如何将我的应用程序带到窗口顶部

C++ MFC 消息处理

mfc - 使用 CHtmlView 检测 CTRL+Wheel

c++ - Win32 API 中的游戏循环

c++ - 不完整的类型,这是什么意思?

c++ - 我应该把这个枚举放在哪里?

c++ - 如何在基类中创建同名的两个函数?