Управление подклассами

В 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, и я не знаю, когда использовать первый вместо второго.

Есть идеи?

1

Решение

использование SetWindowSubclass вместо; он обрабатывает бремя ассоциирования данных с окном. тем не мение. первый хранит старый адрес процедуры окна в хранилище пользовательских данных, связанных с окном, и вы не можете сделать это, если класс окна не является тем, который вы определили сами. то есть где такое хранилище существует для окна где вам гарантировано, что это хранилище не используется ни для чего другого.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]