COleControl::IsConvertingVBX
OLE コントロールの特別な読み込みを可能にします。
BOOL IsConvertingVBX( );
戻り値
コントロールが変換された場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
VBX コントロールを使ったフォームを OLE コントロールを使ったフォームに変換するとき、OLE コントロールの読み込み用に特別のコードが必要になります。 たとえば、OLE コントロールのインスタンスを読み込むときは、DoPropExchange で PX_Font を次のように呼び出すことができます。
PX_Font(pPX, _T("Font"), *m_pMyFont, &DefaultFont);
VBX コントロールは、Font オブジェクトを持っていません。各フォント プロパティが個別に保存されています。 この場合、2 つのクラスを区別するために IsConvertingVBX を使います。
if (!IsConvertingVBX())
{
PX_Font(pPX, _T("Font"), *m_pMyFont, &DefaultFont);
}
else
{
PX_String(pPX, _T("FontName"), tempString, DefaultName);
m_pMyFont->m_pFont->put_Name(tempString.AllocSysString());
PX_Bool(pPX, _T("FontUnderline"), tempBool, DefaultValue);
m_pMyFont->m_pFont->put_Underline(tempBool);
}
別の場合は、VBX コントロールが専用のバイナリ データを (その VBM_SAVEPROPERTY メッセージ ハンドラーで) 保存していて、OLE コントロールが別の形式でそのバイナリデータを保存しているような場合です。 OLE コントロールの VBX コントロールに対する下位互換性を維持する場合は、読み込まれたのが VBX コントロールまたは OLE コントロールのどちらなのかを区別することによって、IsConvertingVBX 関数を使って新しいバージョンと以前のバージョンのどちらでも読み込めるようにできます。
コントロールの DoPropExchange 関数で、この状態をチェックし、true の場合は、この変換 (前の例のような) のための読み込みコードを実行できます。 コントロールが変換されないときは、通常の読み込みコードを実行できます。 この機能は、VBX のコントロールから変換できるコントロールに対してのみ適用されます。
必要条件
**ヘッダー:**afxctl.h