加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:53:00 所属栏目:百科 来源:网络整理
导读:我与一个程序员的小辩论.他在他的代码中使用了以下成语: HWND hWnd = SomeFunctionWhichReturnsAWindow();if(hWnd != NULL hWnd != INVALID_HANDLE_VALUE){ // All good}else{ // Error} 我告诉他,在我看来,这是一个错误的方法,因为HWND类型与INVALID_HANDL
我与一个程序员的小辩论.他在他的代码中使用了以下成语:
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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读