将parameter passing给Windows中的窗口调用

我是新来编程对Windows调用,我试图找出一种方法来传递参数到lpfnWndProc函数。 我有以下代码:

HWND hwnd; WNDCLASS wc1 = {0}; wc1.lpszClassName = TEXT( "sample" ); wc1.hInstance = 0; wc1.hbrBackground = GetSysColorBrush(COLOR_3DFACE); wc1.lpfnWndProc = DepthWndProc; 

注意行wc1.lpfnWndProc = DepthWndProc; 我能够通过DepthWndProc一个参数? 如果是这样,语法是什么样子?

谢谢!

你在这里分配一个函数指针,而不是打电话。 因此没有任何理由的传递。

不得不用一个HWND存储额外的状态,例如对于窗口周围的C ++类包装器来说,这是非常普遍的要求。 您应该保留一个地图<>来帮助您从窗口句柄值中检索包装器对象。 使用SetWindowLongPtr()和GWLP_USERDATA也是可能的,但是如果你不控制窗口的创建,那么它就不那么理想了。

你可以直接调用DepthWndProc并传递它的参数,但为什么你会这样做呢? 这不是Windows编程的工作原理。

只要窗口有消息发送到窗口,就给窗口一个函数。