来自MSDN 。
BOOL WINAPI GetMessage( _Out_ LPMSG lpMsg,_In_opt_ HWND hWnd,_In_ UINT wMsgFilterMin,_In_ UINT wMsgFilterMax );
它声明如下:
“如果函数检索WM_QUIT以外的消息,则返回值不为零,如果函数检索到WM_QUIT消息,则返回值为零,如果有错误,则返回值为-1 。
不是boolean值是true还是false ? 看来我们在这里有三个选项, true , false和oopsie_daisy ….
如何使运行WPF应用程序窗口透明?
检测文件是否在C ++中打开
Windows GDI上下文 – 函数失败,GetLastError()返回0
使用SAFEARRAY编组本地数组的最佳select
所以,当input这个时,我想我应该去检查WinDef.h并在其中发现:
typedef int BOOL;
Hrmmm …
BOOL只是一个int 。
那么究竟是什么目的呢? 这只是另一个时代错误,就像我们发现散布的Windows API一样?
为什么不GetMessage()返回一个int值?
我知道最终它没有什么区别,我只是好奇是否有人有答案,因为最近一直在困扰着我。
谢谢。
PS:
关于我的oopsie_daisy说法,我意识到它可以是任何整数值,我是在具有3个选项的函数的上下文中发言,而不是BOOL只有3个可能的值。
如何将表单添加到托盘中
我们可以把Python for Cygwin当作win32平台吗? (安装PyBluez)
在Windows上为64位构buildQuickfix
从Windows创build一个unix符号链接(最好通过python)
如何在c ++中使用tagDEC(DECIMALtypes)?
请参阅何时将GetMessage返回-1? 旧新事物:
最初,GetMessage函数没有失败模式。 如果你传递了无效的参数,那么你调用了未定义的行为,你可能会崩溃。
所以,最初,GetMessage返回TRUE或FALSE。 因此BOOL的选择在当时是完全合理的。
至于为什么行为改变时签名没有改变,这大概只是惯性和/或向后兼容。
BOOL表示在正常情况下,没有参数错误,该值可以被解释为一个布尔值,按照通常的C约定0 = false ,因为它原来是用于GetMessage :
ECMA-234§8.3:
“如果检索到WM_QUIT以外的消息,则GetMessage()函数的返回值为TRUE。 如果检索到WM_QUIT消息,则返回值为FALSE。
为什么GetMessage在没有改变的时候也改变了返回错误指示符,可能无法回答。
笔记:
¹http ://www.ecma-international.org/publications/standards/Ecma-234.htm
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。