标准 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 win32 c++