对’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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |