Лучший способ хранения этого указателя для использования в WndProc
Мне интересно знать лучший / распространенный способ храненияthis
указатель для использования вWndProc
, Я знаю несколько подходов, но у каждого, насколько я понимаю, есть свои недостатки. Мои вопросы:
Какие существуют способы создания кода такого типа:
CWindow::WndProc(UINT msg, WPARAM wParam, LPARAM)
{
this->DoSomething();
}
Я могу думать о Thunks, HashMaps, Thread Local Storage и структуре пользовательских данных Windows.
Каковы плюсы / минусы каждого из этих подходов?
Очки начисляются за примеры кода и рекомендации.
Это чисто ради любопытства. После использования MFC мне просто стало интересно, как это работает, а затем подумал об ATL и т. Д.
Edit: Какое самое раннее место, где я могу правильно использоватьHWND
в окне проц? Это задокументировано какWM_NCCREATE
- но если вы на самом деле экспериментируете, этоnot первое сообщение, которое будет отправлено в окно.
Edit: ATL использует thunk для доступа к указателю this. MFC использует хеш-таблицу поискаHWND
s.