gpt4 book ai didi

winapi - MessageBox & WM_TIMER (Win2k 之后)

转载 作者:行者123 更新时间:2023-12-04 05:02:54 25 4
gpt4 key购买 nike

这里大家都知道,从WinXP到user32.dll出现了MessageBoxTimeout API。

但现在不是使用未记录的 MessageBoxTimeout,而是使用记录的 MessageBox:

所以这是一个巧合,来自 WinXP 的任何 MessageBox - PostMessage (WM_TIMER, 0,0) 等价于 PostMessage (WM_CLOSE, 0,0)。

向内部人士提问 MS:这是一个错误还是一个功能?

最佳答案

这不是巧合。原来MessageBox通过调用 MessageBoxTimeout 实现传递超时值 0xFFFFFFFF .使用调试器辨别这是微不足道的。事实证明,MessageBoxTimeout对话框回复 WM_TIMER通过关闭对话框发送消息。就是这样MessageBoxTimeout实现超时。

因此,如果您发布 WM_TIMERMessageBox 的消息对话框你真的把它发布到 MessageBoxTimeout对话框,所以你确实会关闭它。

这当然不是错误,因为 MessageBox完全不 promise 将如何响应接收WM_TIMER消息。它不是一个功能,因为它没有记录。这只是 MessageBox 当前实现的一个奇怪的副作用.

当然,所有这些都是实现细节,可能会发生变化等等。

关于winapi - MessageBox & WM_TIMER (Win2k 之后),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15902996/

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