DefWindowProcの引数エラー

くだらないことで躓いたのでメモしておきます。
ダイアログを作るところで、プロジェクトのクラスのstaticメソッドにしてある関数をコールバック関数にし、デフォルトプロシージャに渡すところです。

// ウィンドウのプロシージャー関数.
LRESULT CALLBACK
CBaseDlg::SubWndProc( HWND hW, UINT iM, WPARAM wP, LPARAM lP )
{
    return DefWindowProc ( hW, iM, wP, lP );
}

これをビルドすると以下のようなビルドエラーが出ます。

'CWnd::DefWindowProcW' : 関数に 4 個の引数を指定できません。

MSDNみても引数は4個だし、、じゃぁ、いくつの引数が欲しいのよ!!!!と何故かオネェ言葉で切れそうになります。

が、一歩引いて冷静に考えると次のコードで正しくなることがわかります。

// ウィンドウのプロシージャー関数.
LRESULT CALLBACK
CBaseDlg::SubWndProc( HWND hW, UINT iM, WPARAM wP, LPARAM lP )
{
    return ::DefWindowProc ( hW, iM, wP, lP );
}

修正した箇所は一箇所。
"::DefWindowProc" .. つまり、グローバルスコープの関数である、というところを強調してあげないといけないのですね。