this
で使用するポインタを格納するための最良の/一般的な方法を知りたいですWndProc
。私はいくつかのアプローチを知っていますが、私が理解しているように、それぞれに独自の欠点があります。私の質問は次のとおりです。
この種のコードを作成するには、どのような方法がありますか。
CWindow::WndProc(UINT msg, WPARAM wParam, LPARAM)
{
this->DoSomething();
}
サンク、ハッシュマップ、スレッドローカルストレージ、ウィンドウユーザーデータ構造体について考えることができます。
これらの各アプローチの長所/短所は何ですか?
コード例と推奨事項に対して付与されるポイント。
これは純粋に好奇心のためです。MFCを使用した後、私はそれがどのように機能するのか疑問に思い、ATLなどについて考えるようになりました。
編集:HWND
ウィンドウプロシージャで有効に使用できる最も早い場所はどこですか?これは-として文書化されてWM_NCCREATE
いますが、実際に実験すると、ウィンドウに送信される最初のメッセージではありません。
編集: ATLは、このポインターにアクセスするためにサンクを使用します。MFCは、sのハッシュテーブルルックアップを使用しますHWND
。