[表示時にアクティブ] オプションのオフ
更新 : 2007 年 11 月
コントロールには、アクティブな状態とアクティブでない状態の 2 つの基本的な状態があります。この 2 つの状態は、従来はコントロールにウィンドウがあるかどうかによって区別されていました。つまり、アクティブなコントロールにはウィンドウがあり、アクティブでないコントロールにはウィンドウがないというように区別できました。この区別は、ウィンドウなしのアクティベーションが導入されたことによって無条件に適用することはできなくなりましたが、今でも多くのコントロールに対して有効です。
ウィンドウの作成は、ActiveX コントロールによって通常行われる初期化処理の中では、著しく負荷の高い処理です。コントロールでは、できる限りウィンドウを作成しないようにしてください。
多くのコントロールは、コンテナに表示されている間常にアクティブである必要はありません。ユーザーがマウスをクリックしたり Tab キーを押したりすることによってアクティブになるまで、アクティブでない状態にしておくことができます。コンテナによってアクティブにされるまでコントロールをアクティブでない状態にしておくには、コントロールのその他のフラグから OLEMISC_ACTIVATEWHENVISIBLE フラグを削除します。
static const DWORD BASED_CODE _dwNVC_MFC_AxOptOleMisc =
OLEMISC_SETCLIENTSITEFIRST |
OLEMISC_INSIDEOUT |
OLEMISC_CANTLINKINSIDE |
OLEMISC_RECOMPOSEONRESIZE;
コントロールの作成時に、MFC ActiveX コントロール ウィザードの [コントロールの設定] ページの [表示時にアクティブ] オプションをオフにすると、OLEMISC_ACTIVATEWHENVISIBLE フラグは自動的に含まれなくなります。