GetWindowLong
(and ) には、引数GetWindowLongPtr
がなくても 'ANSI' (A) と 'Unicode' (W) のフレーバーがあることを今日知りました。MSDN のページにTSTR
は、これらの亜種が存在することが示されているだけで、その理由については言及されていません。GetWindowLong
CreateWindowEx
(A/W フレーバーもある) またはのエンコーディングと一致する必要があると想像できますRegisterClass
が、多くの理由から、これは意味がないと思います。Unicode バージョンが XP で失敗する可能性があると誰かが報告したため(XP は NT であり、私が理解しているように、フードの下にあるすべての Unicode ですが) 、明らかに重要です。USER32.DLL
の 32 ビット バージョン(の両方のフレーバーを含む)の逆アセンブルも試みましたがGetWindowLong
、明らかなエンコーディングの違いに基づいて追加の作業が行われています*。
どの機能を選択すればよいですか?
* のフレーバーはGetWindowLong
、他の関数に渡されるブール値を除いて同じです。このブール値は、メモリ構造内のフラグ ビットと比較されます。静的コード分析を使用して追跡することはできません。