日峰です。

> CHogeDlgクラスはA,Bの派生クラスとなっており,
> (こうした理由は、A,Bのメンバを直接参照するためです)
> A a;のように構築していないのです.
> 構築していないので、必ず派生クラスのメンバが先に読み込まれて
> しまうようです.
> この場合は、クラススコープで凌ぐしか方法はなさそうです.

class B : public A
class W : public B
だったら、メンバ関数のポインタで出来ますよ。

実例を言うと、
MFCのウィンドウプロシージャが
基底クラスのメンバ関数へのポインタで、
派生クラスのメッセージハンドラを呼んでいます。

VCであり、単一継承だからできるのかな。

多重継承、つまり
class W : public A, public B
はやめた方がいいね。