标准 win32 wndproc 中的第一次机会异常

Posted

技术标签:

【中文标题】标准 win32 wndproc 中的第一次机会异常【英文标题】:first chance exception in standard win32 wndproc 【发布时间】:2014-07-23 19:01:20 【问题描述】:

我正在使用 C++ 学习 DirectX。作为标准 Win32 编程基础的示例,我引用了 Microsoft Developer Network - Creating Win32 Applications (C++)。

该示例显示了如何设置单个窗口并设置 WndProc。关闭应用程序时,我收到最多 6 条错误消息:

"Exception (first chance) at xy in myapp.exe: access violation reading location yz"

在 Google 先生的帮助下,我在 social.msdn 中找到了this (DestroyWindow(HWND) gives me exceptions) 问题。这几乎是我正在寻找的东西,但我不完全理解它。

    为什么关闭应用程序时会抛出异常(第一次机会)? 有没有办法阻止应用程序抛出这些异常(在VS中不仅要关闭这些异常,还要打败它们)? 如果忽略这些异常,它们会导致我的应用程序在未来崩溃吗?

我希望你明白我想说的话,有人可以帮助我并为我解释清楚。

非常感谢。

问候

【问题讨论】:

您的代码有错误。你正在从不属于你的地方阅读。你应该解决这个问题。如果没有MCVE,我们几乎不可能知道您哪里出错了。 您链接的页面表明问题是由您的计算机上运行的其他东西引起的(在这种情况下是 AMD/ATI Hydravision)将 DLL 注入您的程序并且没有正确清理。除了在该程序中关闭该功能之外,您无能为力。 感谢您的回答。 @ chris:我正在使用的应用程序是从我在问题中链接到 VS 的 Microsoft Win32 教程中复制粘贴的,然后按开始调试。 @ T.C.:确实,我也使用 AMD Radeon 和 Hydravision。所以我必须忍受这些例外? 您链接的页面中的一些帖子建议您可以关闭 Hydravision 来解决它(我无法测试它,我使用的是 Nvidia)。 【参考方案1】:

更新图形驱动程序和卸载 Hydravision 可以消除异常。但是,完全重新安装完整系统后,根本没有任何错误。

【讨论】:

以上是关于标准 win32 wndproc 中的第一次机会异常的主要内容,如果未能解决你的问题,请参考以下文章

WndProc 作为类成员,无法退出

在运行时创建事件处理程序而不使用 WndProc win32 c++

在 Win7 64 位上因未处理的第一次机会异常而崩溃(在 XP 32 位、Linux 64 位上没有问题)

删除 C++ Win32 中的标准窗口框架

win7中的mapgis中的投影变换用不了

绘制非客户区的问题 - Win32