1

在 WINAPI 中,哪个是正确/必要的?

SetWindowLongPtr(HelpBox, GWLP_USERDATA, static_cast<LONG_PTR>(SetWindowLongPtr(HelpBox, GWLP_WNDPROC, (LONG_PTR)(Subclass))));

或者

SetWindowLongPtr(HelpBox, GWLP_WNDPROC, (LONG_PTR)(Subclass));

然后在 WM_DESTROY 我都喜欢:

SetWindowLong(HelpBox, GWLP_WNDPROC, (LONG) Original);

为什么我应该使用第一个而不是第二个?我注意到它有两次 GWLP_USERDATA 和 setwindowlongptr .. 为什么?我在 MSDN 上看到了这两个示例,但我不知道何时使用第一个而不是第二个。

有任何想法吗?

4

1 回答 1

3

改为使用SetWindowSubclass;它处理将数据与窗口相关联的负担。反正。第一个将旧的窗口 proc 地址存储在与窗口关联的用户数据存储中,除非窗口类是您自己定义的,否则您不能这样做。IE窗口确实存在这样的存储空间您可以保证该存储不会用于其他任何用途。

于 2013-03-08T23:42:56.947 回答