怎样给主窗口的窗口过程传递this指针????!!!
自己用API封装的窗口类,窗口过程里有WM_Create。主窗口执行到CreateWindow之后就去执行窗口过程了。而SetWindowLong有需要窗口句柄,需要在CreateWindow之后才能获得。在CreateWindow之后执行不到SetWindowLong,在。这可怎么传递一个this指针?this每次都未被赋值呢
[解决办法]
可以这样:
hWnd = CreateWindow(...,this);然后在你的窗口消息处理函数中把你的this指针取出来,然后再设置进去:if (message == WM_NCCREATE){ LPCREATESTRUCT pcs = (LPCREATESTRUCT)lParam; ::SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR)pcs->lpCreateParams); return DefWindowProc(hWnd, message, wParam, lParam);}else{ YourWndClass* thisPtr = (YourWndClass*)GetWindowLongPtr(hWnd, GWLP_USERDATA); //do you want to do}
[解决办法]
飞鸽传书是开源的
win32SDK自行封装
你可以借鉴一下他是怎么操作的