1
4
答案是SetWindowLongPtr。它允许您将void*与给定hWnd相关联。然后,在WndProc中,您只需提取void*、cast并调用member方法。问题解决了。SetWindowLongPtr有一些起伏不定的地方,你必须调用一些其他函数来查看效果或类似的BS,Windows在CreateWindowEx返回之前发送消息,所以你必须准备好让GetWindowLongPtr(hWnd,GWL\u USERDATA)返回NULL。 当然,这意味着对于给定的WindowProc,所有使用它的实例都必须有一个公共接口,因为对于void*,您可以做的不多。
不要混淆Get/SetWindowLong和Get/SetWindowLongPtr。Get/SetWindowLong已弃用且不安全。 |
2
2
不要按照提示使用
顺便说一下,你可以在那里找到关于这个话题的很好的讨论: http://blogs.msdn.com/b/oldnewthing/archive/2005/04/22/410773.aspx |
3
2
|
4
0
我决定将它设为一个单例,因为它是主应用程序类,在程序中拥有该类的单个实例是没有问题的。 现在我想问另一个相关的问题:假设我有一个偏好对话框。我创建一个对话框作为一个资源,然后给它一个过程,在这个过程中,创建一个控制器对象。这条路对吗? |
vini · 安装wfp内核驱动程序后,devcon状态返回39 2 年前 |
I101I · 如何镜像HBITMAP 2 年前 |
E235 · 如何查看谁创建了Windows NamedPipe 2 年前 |
Pizza Ãcke · 创建带有内存映像的Windows托盘图标 2 年前 |
Jabu · 如何获取列表框滚动条“拇指”的高度? 2 年前 |
tree1234 · 对可执行文件进行代码设计,并允许修改某些字节 2 年前 |
Penachia · PDF FontDescriptor标志 6 年前 |