如何使 WndProc 内联?

How to make WndProc inline?

是否可能,如果可以,如何使 WndProc 内联?

也就是说,我想在 WinMain 中处理 Windows 条消息 WM_... 以避免看似不必要的函数调用。

谢谢。

您不能内联 window 过程。这是设计使然。

注册 window class 时,您可以很容易地看到架构限制。这是通过调用 RegisterClassExW, passing along a WNDCLASSEXW 结构来完成的。该结构需要有效的 lpfnWndProc。您不能获取内联函数的地址。

还有其他方面要求 window 过程成为实际功能。例如,存储的 window 过程地址用作自定义点并允许 subclassing controls,例如调整标准控件的行为。

您无法避免函数调用。如果要限制变量的范围,可以将 lambda 表达式的结果赋值给 lpfnWndProc 成员。 Visual Studio 确保合成正确的函数签名。