微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

假设GetDChWnd被调用为WM_CREATE上的第一条指令,对于窗口hWnd,GetDC是否可以返回NULL?

假设GetDC(hWnd)被调用为WM_CREATE的第一条指令,对于窗口hWnd , GetDC()可以返回NULL ?

我担心GetDC()由于缺乏资源而失败的可能性。 如果发生这种情况,我应该检查错误? 如果通话失败,我该怎么办? Win32 API函数是否会引发exception,或者是否应该引发exception?

如果未设置Windows Internet Explorer代理设置,并且仅使用TortoiseSVN代理设置,则TortoiseSVN的代理速度非常慢

在windows和pycharm中设置SPARK-HOMEpathvariables

跨进程的Win32 InterlockedIncrement和InterlockedExchangeprimefaces?

为什么Bitblt不能工作

无法在Windows 7上运行Hadoop

GetDC()确实可能会失败,无论何时何地调用它。 在处理API时应该采取相当悲观的观点,并为任何API函数做好准备。 正如你所建议的,失败的一个可能的原因是系统资源的耗尽,例如内核句柄,GDI对象等。

所以你应该总是检查错误。 而不仅仅是GetDC() ,对API函数的每一个调用都应该检查它的返回值。

Windows API不会通过引发异常来指示错误。 相反,错误总是通过API函数返回的值来发送信号。 您需要查阅文档以了解每个单独的函数如何报告错误

如果您在像GetDC()这样的GDI函数中遇到失败,那么可以做的事情就不多了。 在描述的场景中,我会记录错误或者向用户报告,然后终止执行。 GetDC()失败通常没有恢复。

每次调用API函数时检查错误的痛苦就是为什么我们有这么多的框架来封装低级API的原因之一。 一个好的框架将为您进行错误检查,并将错误转换为异常。 使用一个好的框架可以让你把注意力集中在正常的执行流程上,而不是在特殊情况下处理代码

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐