我目前正在学习与 WinAPI 相关的 C++。我正在努力为 WinAPI 函数提出有意义的错误处理策略。
问题:
大多数 WinAPI 函数在出现错误时都可以返回 0,但在许多情况下,我在 MSDN 上看不到任何关于什么可能导致此类错误以及如何解决/解决它的信息。举GetCursorPos
个例子:
如果成功则返回非零,否则返回零。要获取扩展的错误信息,请调用GetLastError。
(...)
调用GetCursorPos时,输入桌面必须是当前桌面。调用OpenInputDesktop判断当前桌面是否为输入桌面。如果不是,请使用返回的HDESK调用SetThreadDesktop到桌面。
- 如果我遵循GetLastError的路线的路线,我会对该特定函数可能返回哪些错误感兴趣,以便我可以检查可以对它们做些什么。但是错误代码在这个MSDN 页面上被组织成 10 组,仅基于错误编号,而没有任何说明在哪个组中列出了哪些错误。
- 当我试图发现OpenInputDesktop将如何如何帮助我使我的代码更加防弹时,我再次发现:
如果函数失败,则返回值为NULL。要获取扩展错误信息,请调用GetLastError。
总结一下: WinAPI中的几乎每个函数都可以返回确定错误发生的值,并且我可以在错误发生时获取有关错误的信息GetLastError。但是没有任何关于我可以预期什么样的错误以及解决这些错误的步骤的信息。
例子很多,GetWindowRect
也被广泛使用和MSDN提供的信息与GetCursorPos
.
问题:
请问有没有关于如何处理 WinAPI 函数错误返回值的标准,这些标准将保留错误处理,而不是仅仅显示一个消息框并退出应用程序?谢谢!