Direct2D:WM_RESIZE 开关案例中未处理的异常

2023-11-30

我正在创建一个简单的 Direct2D 应用程序。不幸的是它正在给予 未处理的异常。它发生的函数:

    void DemoApp::OnResize(UINT width, UINT height)
{
    if (m_pRenderTarget) <----|****The exception occurs here.....****
    {
        // Note: This method can fail, but it's okay to ignore the
        // error here, because the error will be returned again
        // the next time EndDraw is called.
        m_pRenderTarget->Resize(D2D1::SizeU(width, height));
    }
}

调用 OnResize() 的代码片段是:

DemoApp *pDemoApp = reinterpret_cast<DemoApp *>(static_cast<LONG_PTR>(
            ::GetWindowLongPtrW(
                hwnd,
                GWLP_USERDATA
            )));

        bool wasHandled = false;

        if (pDemoApp)
        {
            switch (message)
            {
            case WM_SIZE:
            {
                UINT width = LOWORD(lParam);
                UINT height = HIWORD(lParam);
                pDemoApp->OnResize(width, height);
            }
            result = 0;
            wasHandled = true;
            break;
/*rest of switch case*/
       }

异常说:Simple Direct2D application.exe 中 0x00007FF6BE402CCA 处未处理的异常:0xC000041D:用户回调期间遇到未处理的异常。发生

异常截图:

the pic of exception

当我开始调试程序时,它就给出了异常。我什至从网站上逐字复制了程序。由于我是 DirectX 世界的新手,我对异常一无所知。我应该怎么办?


我已经编译了该示例。它可以在 32 位版本中运行,在 64 位版本中崩溃。

该错误出现在 Microsoft 的示例代码中,与 Direct2D 无关。

他们通过this into SetWindowLongPtr,结合PtrToUlong用于类型转换的宏。在 64 位版本中,this长度为 8 个字节,SetWindowLongPtr也接受 8 个字节,但是PtrToUlong宏转换为unsigned long只有 4 个字节。所以PtrToUlong宏从以下位置删除高 4 个字节this指针,应用程序彻底失败。

您可以通过更换来修复PtrToUlong( pDemoApp ) with (LONG_PTR)pDemoApp

附:我认为根本原因是,MS极力假装Win32平台已经过时,将开发者推向UWP。这就是为什么在他们的 DirectX 和 Direct2D 示例中,他们不使用自己的 ATL,因为它是仅限桌面的库。使用 ATL 将极大地简化这些示例:用于接口指针的 CComPtr、用于窗口创建和消息处理的 CWindowImpl 等等。

Update: 这是一个更好的样本.

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

Direct2D:WM_RESIZE 开关案例中未处理的异常 的相关文章

随机推荐

  • 焦点损失实施

    In the paper引入焦点损失后 他们指出损失函数的公式如下 Where 我在另一位作者的 Github 页面上找到了它的实现 他在自己的项目中使用了它paper 我在我拥有的分割问题数据集上尝试了该函数 它似乎工作得很好 下面是实现
  • Android 上的 HTTP POST

    我想对 php 脚本创建一个简单的 HTTPRequest 并且我尝试制作最基本的应用程序来使功能正常工作 我想测试我的应用程序是否正在发送我提供给它的数据 因此我已将 Android 应用程序发送到服务器 并且该服务器应该向我发送我放入应
  • javafx 重新计算父/节点边界时如何修复 IndexOutOfBounds 异常

    我正在制作 javafx gui 应用程序 游戏 需要同时更新角色视图 每个移动周期我都会更新角色的 ImageView 如下所示 if inBounds direction Collisions collides newHitbox hi
  • 自动装配工厂创建的实例的 Spring 方法是什么?

    我有一个控制器 它应该创建版本相关的实例 当前未实现 Controller public class ReportController Autowired private ReportCompFactory reportCompFactor
  • 从脚本标签访问车把属性

    在车把模板中 我可以访问脚本标记内的车把参数吗 该模板是从调用的express with response render template list 1 2 3 您可以在 html 中使用包含所需值的隐藏输入 然后在脚本标记中使用 docu
  • 将 python2 'file' 类的子类移植到 python3

    我有一个遗留代码调用class TiffFile file python3的调用方式是什么 我尝试在 python2 中替换以下内容 class TiffFile file def init self path file init self
  • 如何在solr 4中导入并索引mongodb数据

    我是新用户solr and mongodb 我已经创建了数据库和集合mongodb 现在我想导入并索引它mongodb收集于solr对于要在数据库中搜索大量数据的应用程序 我在互联网上搜索了很多 但是没有得到满意的信息 谁能告诉我如何进行索
  • 如何将csv文件数据插入mysql数据库

    我想将 csv 文件中的数据插入到 mysql 表中 导入数据来自区域代码 csv文件 在region codes csv 文件中 第 3 列有 3 列 分隔数据 包括如何在 mysql 中插入的逗号 DROP TABLE IF EXIST
  • Android 屏幕底部选项卡式 Activity

    有人知道为什么在 Android 中新生成的选项卡式活动中底部不在屏幕上吗 ViewPager 对于整个屏幕来说太长
  • 在 QTreeView (Qt/PySide/PyQt) 中实现自动换行委托?

    我有一个带有自定义委托的树视图 我试图向其中添加自动换行功能 自动换行工作正常 但是sizeHint 似乎不起作用 因此当文本换行时 相关行不会扩展以包含它 我以为我在照顾它sizeHint 通过返回document size height
  • pandas 数据框中的自定义排序

    我有 python pandas 数据框 其中一列包含月份名称 如何使用字典进行自定义排序 例如 custom dict March 0 April 1 Dec 3 引入 Pandas 0 15分类系列 这提供了一种更清晰的方法来做到这一点
  • 无法向饼图添加标题(matplotlib)

    plt title Survival Rate plt pie total survival labels str survival percent survived str 100 survival percent died 我正在尝试向
  • 为什么没有重定向到 ASP.NET MVC 4 中的视图

    所有 我有一个保存发布文件的控制器 请查看下面的代码 大约花了20 30分钟才完成 但我发现保存文件后 RedirectToAction 不起作用 IE状态栏显示 Waiting for http index 顺便说一句 我的会话状态存储在
  • R - 使用 rworldmap 在地图中打印特定国家/地区名称

    我正在使用 R 中的 rworldmap 包中的欧洲地图创建热图 因为我不知道如何使用 ggmap 或 ggplot2 执行此操作 我需要绘制仅出现在我的数据框中的国家 地区的国家 地区名称 而不是所有欧洲国家 地区 我怎样才能做到这一点
  • 如何使用C在Linux中获取文件的更多vfat属性?

    这是我的其他问题的后续 如何使用C读取Linux中文件的vfat属性 我在 linux msdos fs h 中看到了这个结构 struct msdos dir entry u8 name 8 ext 3 name and extensio
  • 为什么返回和非返回的 std::functions 是可转换的?

    为什么这有效 std function
  • 如何将 CSRF 令牌添加到 Django 2.2 的 Angular 8 post 请求

    我有一个带有 Django 后端和 Angular 前端的应用程序 现在 这些是相互连接的 我可以从 Django 获取数据并在 Angular 中显示 以及向 Django 发送一个 post 请求 但问题在于 Django 中的 CSR
  • if else 语句中条件的顺序重要吗?

    在编码 bat Logic 2 loneSum 问题时 我输入了下面列出的第一个方法 除了一项测试外 它对所有测试都是正确的 它唯一失败的地方是所有变量都等于同一个整数 但是当我在网上查找解决方案时 我得到了下面列出的第二种方法 并且该方法
  • 在 Matlab 函数中存储循环值

    我正在 Matlab 中编写一个函数来模拟中风患者住院时间 我在存储输出值时遇到困难 这是我的功能 function losdf age strokeType dest function to mdetermine length of st
  • Direct2D:WM_RESIZE 开关案例中未处理的异常

    我正在创建一个简单的 Direct2D 应用程序 不幸的是它正在给予 未处理的异常 它发生的函数 void DemoApp OnResize UINT width UINT height if m pRenderTarget lt The