【发布时间】:2019-11-16 18:12:38
【问题描述】:
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
因此,这是使用 Windows API (win32) 创建的某个窗口的窗口过程的函数原型。它用于处理一些窗口消息,例如当用户单击关闭按钮或调整窗口大小时。
WNDCLASSA window_class = {0};
window_class.style = CS_HREDRAW|CS_VREDRAW;
window_class.lpfnWndProc = WindowProc;
window_class.hInstance = instance;
这是使用此函数的地方,作为窗口类 WNDCLASSA 的 WNDPROC 类型,如 win32 API 中所定义。如您所见,我没有传递函数原型中定义的这四个参数中的任何一个。
我需要传递一些额外的参数以在 WindowProc 函数内部的一些消息中进行处理,但我不知道如何传递它们,我不想为此使用全局变量。我读到这是使用 WM_CREATE 消息执行此操作的一种方法,但我不确定此方法是否正是我想要做的。
有没有使用win32 API经验的人可以指导我完成这个?
【问题讨论】:
-
该函数是由 Windows 操作系统调用的,而不是由您调用的。您不得更改其签名。但是,如果您希望变量保留其值,您可以在函数内将变量声明为静态变量。
-
您心中有哪些具体信息?你要寄吗?
-
@DavidHeffernan 我有一个渲染缓冲区结构来绘制窗口。当窗口收到 WM_SIZE 消息时,我想更改此结构的一些值。我现在拥有的是这个结构的全局变量,每次收到 WM_SIZE 消息时都会更新。我不想把它作为一个全局变量,而只是将此结构作为回调函数中的参数传递。
-
您不发送 WM_SIZE,系统会发送。它不会向您发送您的信息。
标签: c windows winapi functional-programming