- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我创建了一个水平滚动条控件,我在 WM_HSCROLL
事件处理程序中有以下代码:
case WM_HSCROLL:
{
InvalidateRect(hWnd, NULL, TRUE);
}
break;
当我删除 InvalidateRect()
并单击箭头按钮时,它会按预期进行动画处理:
但是,当我使用 InvalidateRect()
时,箭头按钮在单击时没有动画:
这是我为 WM_PAINT
编写的代码:
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
EndPaint(hWnd, &ps);
}
break;
最佳答案
我想我知道问题出在哪里了:
InvalidateRect()
被调用时,它会发送一个 WM_PAINT
消息到父窗口以及子控件。WM_PAINT
来自 InvalidateRect()
的消息将重绘滚动条(到其原始的非动画状态),因此动画将不引人注意。要解决此问题,只需在创建父窗口时使用 WS_CLIPCHILDREN
样式,现在当调用 InvalidateRect()
时,它只会发送一个 WM_PAINT
向父窗口而不是子控件发送消息。
注意:我不知道使用WS_CLIPCHILDREN
是否有任何缺点。
关于c - 当我使用 InvalidateRect() 时,滚动条箭头没有视觉动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32369224/
函数 InvalidateRect(hWnd: HWND; const lpRect: TRect; bErase: BOOL): BOOL; 函数 InvalidateRect(hWnd: HWND
我需要反复重绘一个窗口,显示某种形式的连续分析。现在: 1)如果我在绘画后在WM_PAINT中这样做,我基本上会杀死其他人的绘画,所以它不可用。 2)如果我在计时器中执行此操作,则会有点滞后。 那么最
如果我在父窗口上调用 InvalidateRect(),例如: InvalidateRect(hWnd, NULL, TRUE); 将会发生的是,在 WM_PAINT 处理程序中,BeginPaint
我创建了一个水平滚动条控件,我在 WM_HSCROLL 事件处理程序中有以下代码: case WM_HSCROLL: { InvalidateRect(hWnd, NULL,
我想在窗口创建时使它无效。我怎样才能做到这一点?在 WM_CREATE 期间调用 InvalidateRect 无效。 问题是我在 WM_CREATE 中调用 SetWindowLongPtr 并设置
当我想重绘一个窗口时,在 InvalidateRect 和 RedrawWindow 之间有什么首选的函数可以调用吗? 例如,这两个调用是否相等:(win 将是 HWND) RedrawWindow(
我仅在 iOS 7 上遇到无法重现的崩溃。我大量使用 MKOverlayRenderer 在 map 上绘制形状。此崩溃不会发生在 iOS 6 上。 关于这可能与之相关的任何想法都会很有用。 Exce
为了减少闪烁,我使用 WS_CLIPCHILDREN 标志创建我的父窗口,并在 WM_SIZE 事件期间调用 InvalidateRect。这种方法在 Windows XP 中运行良好。但是,我最近开
如果程序 CudaText 从终端运行(在 Ubuntu 14.04 上),则终端充满消息: 警告:TGtk2WidgetSet.InvalidateRect 在绘制消息期间拒绝无效 如何禁用它们的来
完整程序在这里: http://examples.oreilly.com/9781572319950/cd_contents/Chap07/Checker4/Checker4.c ChildWndPr
我的自定义绘图区的 WM_PAINT 看起来像这样: // TRUE to clear the background if (GetUpdateRect(hwnd, &r, TRUE) == 0)
我是一名优秀的程序员,十分优秀!