双缓冲? Win32 C++

2024-03-29

我正在尝试实现双缓冲,但它似乎不起作用,即图形仍然闪烁。

每次鼠标移动时都会调用 WM_PAINT。 (WM_MOUSEMOVE)

粘贴 WM_PAINT 如下:

case WM_PAINT:
        {
            hdc = BeginPaint(hWnd, &ps);
            // TODO: Add any drawing code here...
            RECT rect;
            GetClientRect(hWnd, &rect);
            int width=rect.right;
            int height=rect.bottom;

            HDC backbuffDC = CreateCompatibleDC(hdc);

            HBITMAP backbuffer = CreateCompatibleBitmap( hdc, width, height);

            int savedDC = SaveDC(backbuffDC);
            SelectObject( backbuffDC, backbuffer );
            HBRUSH hBrush = CreateSolidBrush(RGB(255,255,255));
            FillRect(backbuffDC,&rect,hBrush);
            DeleteObject(hBrush);


            if(fileImport)
            {
                importFile(backbuffDC);
            }

            if(renderWiredCube)
            {
                wireframeCube(backbuffDC);
            }

            if(renderColoredCube)
            {
                renderColorCube(backbuffDC);

            }

            BitBlt(hdc,0,0,width,height,backbuffDC,0,0,SRCCOPY);
            RestoreDC(backbuffDC,savedDC);

            DeleteObject(backbuffer);
            DeleteDC(backbuffDC);

            EndPaint(hWnd, &ps);
        }

添加以下处理程序:

case WM_ERASEBKGND:
    return 1;

它起作用的原因是因为该消息是在绘画之前发送的,以确保绘画是在窗口类的背景上完成的。闪烁在背景和其上绘制的内容之间来回移动。一旦背景停止绘制,它就不再与在其上绘制的内容发生冲突,其中包括用纯色填充窗口,因此无论如何仍然会有背景。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

双缓冲? Win32 C++ 的相关文章

  • 在 WCF 上重用我的 PagedList 对象

    问题 我有一个自定义集合PagedList
  • 如何通过覆盖 MSBuild 目标来防止外语资源生成?

    我正在致力于减少大型 C ASP NET 解决方案的编译时间 我们的解决方案使用通常的 resx 文件方法翻译成大约十几种外语 这些资源文件的解析和编译极大地减慢了我们的编译时间 并且是日常的挫败感 我知道可以创建自定义资源提供程序并摆脱
  • 信号与信号2

    我的应用程序可能会受益于使用 boost 的信号库之一而不是本土解决方案 该应用程序是多线程的 但执行信号处理的部分是单线程的 如果多线程不是问题 是否有任何理由更喜欢 Boost Signals2 而不是 Boost Signal Boo
  • Winform DatagridView 数字列排序

    我只使用一个简单的 DataGridView 来保存一堆数据 有趣的是 我在特定列中有小数 但是当按小数列排序时 它的排序是错误的 例如 起始顺序可能是 0 56 3 45 500 89 20078 90 1 56 100 29 2 39
  • 如何通过 libwebsocket 发送异步数据?

    我正在将 Warmcat 的 libwebsocket C 库用于小型 Websocket 服务器 我已经启动并运行了这些示例 并且可以发送数据以响应从 websocket 接收数据 例如回显发送的反向字节 但是 我无法弄清楚如何在不使用
  • 我可以将 char 或 DateTime 设置为 null 吗?

    我可以将 null 设置为char数据类型 并且DateTime在 C 中 多谢你们 这是不可能的 它是一个值类型 使用 char myChar null DateTime myDate null 这相当于 Nullable
  • 选择initializer_list迭代器定义

    Why std initializer list
  • 在 .NET Core 中从 HttpResponseMessage 转换为 IActionResult

    我正在将之前在 NET Framework 中编写的一些代码移植到 NET Core 我有这样的事情 HttpResponseMessage result await client SendAync request if result St
  • 如何使用 CUDA/Thrust 对两个数组/向量根据其中一个数组中的值进行排序

    这是一个关于编程的概念问题 总而言之 我有两个数组 向量 我需要对一个数组 向量进行排序 并将更改传播到另一个数组 向量中 这样 如果我对 arrayOne 进行排序 则对于排序中的每个交换 arrayTwo 也会发生同样的情况 现在 我知
  • 如何在 C++ 和 QML 应用程序中使用 qrc?

    我在 Windows7 上用 c qnd Qt Creator QML 编写了 Qt Quick Desktop 应用程序 现在 我必须部署它 并且我需要隐藏 qml 文件和图像 意味着 将它们放入资源等中 我读到有一个很好的方法可以使用
  • 列表到优先队列

    我有一个 C 大学编程项目 分为两个部分 在开始第二部分时应该使用priority queues hash tables and BST s 我 至少 在优先级队列方面遇到了麻烦 因为它迫使我自己重做第一部分中已经实现的许多代码 该项目是关
  • 本地时间的内存需要释放吗?

    void log time t current time 0 tm ptm localtime current stuf 只是想确定 我是否需要在方法结束时释放 tm 指针分配的内存 不 你不应该释放它 该结构是静态分配的 检查文档 htt
  • 冒号在c中起什么作用?

    我在课堂上得到了这个例子 但我不确定它的作用 我知道冒号添加了一个位字段 但我仍然不确定这个问题 a b gt 0 3 1 运算符称为条件运算符 If b值为 gt 0 价值3被分配给a否则值1被分配给a 以 Kernighan Ritch
  • Windows 上本机 C++ 应用程序中的自动死代码检测?

    背景 我有一个用原生 C 编写的应用程序 花了几年的时间 大约有 60 KLOC 有很多函数和类已经死了 可能有 10 15 就像下面提出的类似的基于 Unix 的问题 我们最近开始对所有新代码进行单元测试 并尽可能将其应用于修改后的代码
  • 在 C# 命令行应用程序中包含并执行 EXE

    所以我找到了一个很棒的小 EXE 命令行应用程序 我们将其称为 program exe 它输出一些我想用 C 操作的数据 我想知道是否有一种方法可以将program exe 打包 到我的Visual Studio项目文件中 这样我就可以将编
  • 意外的 const 引用行为

    include
  • 实体框架读取列但阻止其更新

    给定一个数据库表 其中有一列包含历史数据但不再填充 实体框架中是否有一种方法可以读取该列 但在使用相同的模型对象时防止它被更新 例如我有一个对象 public class MyObject public string CurrentData
  • 检查一个数是否是完全平方数?

    我认为以下代码存在精度问题 bool isPerfectSquare long long n long long squareRootN long long sqrt n 0 5 return squareRootN squareRootN
  • Asp.Net Core 中的 SSL 不起作用

    我从 Visual Studio 创建了一个简单的 Web 应用程序Web Application Net Core 具有个人用户帐户授权的模板 然后 我启用了 SSLProject gt MyProject Properties 将带有
  • 在 LP2844Z(Zebra 打印机)上的收据中包含 PNG [重复]

    这个问题在这里已经有答案了 我正在致力于创建一个基于 HTML5 画布的签名 绘图框 目前我们在服务器上将画布保存为PNG 但可以轻松地将base64字符串保存在数据库中 现在的问题是我们如何在打印的收据上添加签名 目前我们使用 GF 字段

随机推荐

  • 设置 Text().frame(maxWidth: .infinity) 后如何保持 Text 作为前导对齐

    这可能是一个简单的案例 但我找不到解决方案 这是我的代码 使用 GeometryReader 设置 SwiftUI 视图大小的相对布局 如 Image 问题出现在最后一个VStack上 我希望文本的背景转到VStack的右端 因此 我将其设
  • OG:类型文章与网站,用于非文章的单个网页

    我正在寻求有关 og type 文章与网站对于单个网页的使用的澄清 该网页在技术上不是 文章 但也不代表整个网站 文档似乎矛盾 From https developers facebook com docs opengraphprotoco
  • 使用正则表达式从内容中删除 HTML 注释 [重复]

    这个问题在这里已经有答案了 我正在将页面内容放入变量中 content 我需要使用正则表达式从 content 中删除 HTML 注释 我尝试了以下代码 它无法正常工作 content preg replace content 看起来你错过
  • 清理 React Hooks 中未安装组件的内存泄漏

    我是 React 的新手 所以这可能很容易实现 但即使我做了一些研究 我自己也无法弄清楚 如果这太愚蠢了 请原谅我 Context 我在用着惯性 js https inertiajs com 使用 Laravel 后端 和 React 前端
  • mysql 命令超时错误

    我正在使用 asp net mvc 将数据库从 SQL Server 2005 转换为 MySQL 我在 SQL Server 中有大量数据 400k 记录 但我面临命令超时 等待CommandTimeout错误 当我在 Google 上搜
  • 如何让JNLP下载正确版本的JavaFX 2?

    JavaFX 2 高度依赖本机代码 对于我的桌面应用程序 我想为每个受支持的操作系统选择最匹配的 JavaFX 风格 以使目标系统上的安装尽可能轻松 由于 JavaFX 2 附带了几个 Ant 任务来帮助部署 我认为这是可行的方法 但我似乎
  • 如何获取点击时的CSS悬停值?

    对此进行后续跟进question https stackoverflow com questions 7265418 how can i unbind the hover opacity effect of a text link when
  • 从地图中删除 google.maps.marker.AdvancedMarkerView

    我有一张地图 它根据搜索填充标记 我正在尝试使用较新的谷歌地图功能AdvancedMarkerView所以我可以用自定义 HTML 填充它 但是 随着我的搜索更新 我想刷新旧标记并在需要时放置新标记 但我一生都无法弄清楚如何做 https
  • 如何使用 Swift 和 MacOS 隐藏顶部栏(带按钮)?

    我试图从窗口中删除标题和顶部按钮 基本上只显示内容 我尝试过各种方法但没有成功 也没有任何明显的原因说明它不起作用 有关我尝试过的选项 请参阅 setVisibility 函数 AppDelegate swift import Cocoa
  • 可以在 JSON 对象中使用尾随逗号吗?

    手动生成 JSON 对象或数组时 在对象或数组的最后一项上留下尾随逗号通常更容易 例如 从字符串数组输出的代码可能如下所示 在类似 C 的伪代码中 s append for i 0 i lt 5 i s appendF d i s appe
  • 在 C++ 中,当用 ctrl-c 中断时,在死亡之前调用带参数(信号号除外)的函数

    我想在程序终止之前用 ctrl c 中断时向文件中写入几行 然而 文件的位置不是硬编码的 所以我需要比正常中断处理更多的东西正如这里所解释的 https stackoverflow com questions 1641182 how can
  • 我可以使用逻辑索引或索引列表对张量进行切片吗?

    我正在尝试使用列上的逻辑索引对 PyTorch 张量进行切片 我想要与索引向量中的 1 值相对应的列 切片和逻辑索引都是可能的 但是它们可以一起吗 如果是这样 怎么办 我的尝试不断抛出无用的错误 类型错误 使用 ByteTensor 类型的
  • 跨域 bean 验证 - 为什么你不工作

    我的应用程序遇到了一点问题 我想检查字段密码和确认密码是否匹配 所以我尝试像这个问题的第一个答案中那样进行操作 使用 Hibernate Validator JSR 303 进行跨领域验证 https stackoverflow com q
  • 使用 boost::asio::streambuf 的代码会导致段错误

    我在使用 asio streambuf 时遇到了问题 希望有人能告诉我我是否错误地使用了该类 当我运行此示例代码时 它出现段错误 为什么 更令人困惑的是 这段代码可以在 Windows Visual Studio 2008 上运行 但不能在
  • jquery validate 1.8.1“jQuery”未定义错误IE8

    首先 是的 jQuery 在验证插件或任何其他 js 文件之前加载 获取 jQuery 未定义 IE8 中的 jquery validate 1 8 1 min js 第 13 行字符 1 FF Chrome 和 Safari 都可以完美地
  • Swing 应用程序的丰富日历组件[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的公司正在向 Swing 应用程序添加一些丰富的日历功能 我们希望它像 Outlook 日历一样工作 以下是我们的一些要求 日 周和月的
  • Android SQLite 按名称搜索

    我从这里举了一个在 Android 中使用 SQLite 的示例 http www cnblogs com pangblog p 3327696 html http www cnblogs com pangblog p 3327696 ht
  • Expression.Lambda 和运行时查询生成,嵌套属性“Where”示例

    我在有关为Where查询构建表达式树的问题上找到了非常好的答案 Expression Lambda 和运行时的查询生成 最简单的 Where 示例 https stackoverflow com questions 8315819 expr
  • 创建一个新列,作为 pandas DataFrame 中行的频率

    我需要一个新专栏C其中每个值是其他两列中的值出现的频率A and B一起出现在数据中 A B C 0 7 9 2 1 7 2 2 2 1 9 3 3 4 8 1 4 9 1 1 5 6 4 1 6 7 2 2 7 7 9 2 8 1 9 3
  • 双缓冲? Win32 C++

    我正在尝试实现双缓冲 但它似乎不起作用 即图形仍然闪烁 每次鼠标移动时都会调用 WM PAINT WM MOUSEMOVE 粘贴 WM PAINT 如下 case WM PAINT hdc BeginPaint hWnd ps TODO A