对’INVALID_HANDLE_VALUE’检查’HWND’是一个错误吗?

前端之家收集整理的这篇文章主要介绍了对’INVALID_HANDLE_VALUE’检查’HWND’是一个错误吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我与一个程序员的小辩论.他在他的代码中使用了以下成语:
HWND hWnd = SomeFunctionWhichReturnsAWindow();
if(hWnd != NULL && hWnd != INVALID_HANDLE_VALUE)
{
    // All good
}
else
{
    // Error
}

我告诉他,在我看来,这是一个错误方法,因为HWND类型与INVALID_HANDLE_VALUE定义无关,但他确信这是一个好的代码,因为有效的句柄永远不能等于INVALID_HANDLE_VALUE,它在心情比“抱歉更安全”.

那么,这是一个可以接受和正确的成语吗?

解决方法

将HWND与INVALID_HANDLE_VALUE进行比较是一个错误.虽然在实践中这不是一个会伤害你的错误.

CreateWindowEx保留为无效的唯一HWND值为NULL.现在,它恰好是一个实现细节,INVALID_HANDLE_VALUE不能是一个有效的HWND,但这只是实现细节.产生窗口句柄CreateWindowEx的函数使用NULL表示失败.这就是你需要知道的一切.

如果你想与你的同事争取你的观点,我建议你看看SomeFunctionWhichReturnsAWindow里面,找出调用哪个Win32 API来产生HWND.然后查阅文档.这将显示NULL是保留的无效值.

为了清楚起见,您绝对应该更改代码以单独测试NULL.

猜你在找的C&C++相关文章