gpt4 book ai didi

c - 将 `HWND` 与 `INVALID_HANDLE_VALUE` 进行比较是错误的吗?

转载 作者:可可西里 更新时间:2023-11-01 12:36:29 30 4
gpt4 key购买 nike

我和一位程序员同事进行了一场小辩论。他在他的代码中使用了以下习语:

HWND hWnd = SomeFunctionWhichReturnsAWindow();
if(hWnd != NULL && hWnd != INVALID_HANDLE_VALUE)
{
// All good
}
else
{
// Error
}

我告诉他在我看来这是一个错误的方法,因为 HWND 类型与 INVALID_HANDLE_VALUE 定义无关,但他确信这是好的代码,因为有效句柄永远不会等于 INVALID_HANDLE_VALUE,而且它的意思是“安全总比遗憾好”。

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

最佳答案

HWNDINVALID_HANDLE_VALUE 进行比较是错误的。虽然,在实践中,这不是一个会伤害你的错误。

CreateWindowEx 保留为无效的唯一 HWND 值是 NULL。现在,它恰好是一个实现细节,INVALID_HANDLE_VALUE 永远不可能是一个有效的 HWND,但这只是实现细节。生成窗口句柄的函数 CreateWindowEx 使用 NULL 来指示失败。这就是您需要知道的全部内容。

如果您想赢得与同事的争论,我建议您查看 SomeFunctionWhichReturnsAWindow 并找出调用了哪个 Win32 API 来生成 HWND。然后查阅文档。这将告诉您 NULL 是保留的无效值。

为了清晰起见,您绝对应该更改代码以单独针对 NULL 进行测试。

关于c - 将 `HWND` 与 `INVALID_HANDLE_VALUE` 进行比较是错误的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26303039/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com