我目前正在编写一个库来处理来自原始输入 API 的信息,并且我正在使用级联函数。这导致了几个非常小、非常可读且非常集中的函数。
但是,它让我震惊,我不明白如何properly表明 Windows 出现故障。我有这个功能:
/* OnInput: Handle data received from Windows via a `WM_INPUT` message. */
static LRESULT CALLBACK OnInput(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
BOOL DispatchRawInput(CONST PRAWINPUT);
assert(msg == WM_INPUT);
return DefWindowProc(hWnd, msg, wParam, lParam);
}
它返回零正如文件所述,它应该 http://msdn.microsoft.com/en-us/library/windows/desktop/ms645590.aspx;但这是假设成功的。
实际文本指出:
“如果应用程序处理此消息,它应该返回零。”
但如果我该怎么办can't处理它?我原本以为你会打电话DefWindowProc
就这样吧,但这并不向 Windows 发出发生了任何事情的信号。
消息WM_CREATE
似乎是我能找到的唯一返回非零值的实例:
“如果应用程序处理此消息,它应该返回零以继续创建窗口。如果应用程序返回 –1,则窗口被销毁,并且 CreateWindowEx 或 CreateWindow 函数返回 NULL 句柄。”
错误处理真的只取决于程序员/团队,而不需要通知操作系统吗?像这样的事件怎么样WM_CREATE
失败并需要阻止创建窗口?