次の方法で共有


ATL と MFC の変更 : ATL 7.1 と MFC 7.1

更新 : 2007 年 11 月

メモ   ここで説明している機能のいくつかは、現在のバージョンの Visual C++ には存在しない可能性があります。

Visual C++ .NET 2003 では、ATL と MFC のライブラリとウィザードが変更され、その一部は既存のコードに影響を及ぼす可能性があります。

  • ATL 6.0 から ATL 7.1 にプロジェクトを移行するときのウィザードの問題 (ATL)

  • CAtlServiceModuleT からの CAtlServiceModuleT::InitializeSecurity の削除 (ATL)

  • SetRfc822Time 関数の更新

  • 既定の ATL ウィザードで作成された、Windows NT で実行できないプロジェクト

ATL 6.0 から ATL 7.1 にプロジェクトを移行するときのウィザードの問題

Visual C++ 6.0 プロジェクトを Visual C++ .NET 2003 プロジェクトに変換するときは、メッセージ ハンドラがメッセージ マップの最後に追加されます。メッセージ マップに CHAIN_*_MAP(...) エントリがある場合、ウィザードによって追加された項目はエントリの最後に含められ、処理できない可能性があります。

たとえば、Visual C++ 6.0 ATL コントロールを含むプロジェクトを Visual C++ .NET 2003 プロジェクトに移行する場合、OnInitDialog ハンドラは呼び出されません。これは、MESSAGE_HANDLERCHAIN_MSG_MAP(...) エントリの前ではなく後に配置されていることが原因です。

OnInitDialog ハンドラが呼び出されるようにするには、CHAIN_MSG_MAP(CComControl<Name of class>) という行を CHAIN_MSG_MAP(...) エントリの最後に含める必要があります。または、OnInitDialog 基本クラスの実装で、必要な初期化を実行する必要があります。

CAtlServiceModuleT からの CAtlServiceModuleT::InitializeSecurity の削除

Visual Studio .NET 2003 では、このメソッドは基本クラスに実装されません。詳細については、「CAtlServiceModuleT::InitializeSecurity」を参照してください。

SetRfc822Time 関数の更新

バッファ オーバーランの発生を回避するために、SetRfc822Time 関数には、返される時刻データの格納に必要な文字列長を示す追加のパラメータと戻り値があります。

既定の ATL ウィザードで作成された、Windows NT で実行できないプロジェクト

Visual Studio .NET 2003 では、MIDL コンパイラの既定の設定が /robust であるため、Windows NT 4 で実行していたプロジェクトが応答しなくなります。

MIDL コンパイラのフラグを /no_robust に変更するには

  1. プロジェクトを右クリックし、ショートカット メニューの [プロパティ] をクリックします。

    [プロジェクト プロパティ] ダイアログ ボックスが表示されます。

  2. 左ペインの [MIDL] をクリックし、[コマンド ライン] を選択します。

  3. [追加のオプション] ボックスに、「/no_robust」と入力します。

参照

参照

ATL と MFC における変更点