在WINAPI中,这是正确/必要的吗?
SetWindowLongPtr(HelpBox, GWLP_USERDATA, static_cast<LONG_PTR>(SetWindowLongPtr(HelpBox, GWLP_WNDPROC, (LONG_PTR)(Subclass))));
OR
SetWindowLongPtr(HelpBox, GWLP_WNDPROC, (LONG_PTR)(Subclass));
然后在WM_DESTROY中,我同样喜欢:
SetWindowLong(HelpBox, GWLP_WNDPROC, (LONG) Original);
为什么我要在第二次使用第一个?我注意到它有两次GWLP_USERDATA和setwindowlongptr ..为什么?我在MSDN上看到了这两个例子,我不知道什么时候第二个使用第一个。
有什么想法吗?
答案 0 :(得分:2)
使用 SetWindowSubclass
;它处理与窗口关联数据的负担。无论如何。第一个将旧窗口proc地址存储在与窗口关联的用户数据存储中,除非窗口类是您自己定义的窗口类,否则不能这样做。即窗口存在此类存储的地方,保证该存储不用于其他任何内容。