本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[VC10] C2642 の原因と対策

文書番号: 402034

最終更新日: 2003/11/11


この資料は以下の製品について記述したものです。


概要

この資料は、Visual C++ 1.0 でのコンパイル時の以下の エラーについて説明したもの です。
  error C2642: メンバへのポインタが、関連付けられたクラスのメンバへ
  のポインタにキャストされました。

詳細

Microsoft Foundation Class ライブラリを使用したプログラムでユーザーメッセー
ジのハンドラをインプリメントして、プログラムをコンパイルすると C2642 の
エラーが発生することがあります。

エラーの出るコーディング例

   class CMyApp : public CWinApp
   {
      ...
      afx_msg LRESULT OnMyMessage( WPARAM, LPARAM );
      afx_msg LRESULT OnMyRegisteredMessage( WPARAM, LPARAM );
   };
   #define MYMESSAGE (WM_USER+1)
   BEGIN_MESSAGE_MAP( CMyApp, CWinApp )
       ON_MESSAGE ( MYMESSAGE, OnUserMessage )                     // エラー
       ON_REGISTERED_MESSAGE( MyMSGID, OnMyRegisteredMessage )   // エラー
   END_MESSAGE_MAP()
  /* MyMSGID は、::RegisterWindowMessage 関数で取得した値

原因

CWinApp クラスは、コマンドメッセージのハンドリングのみを行えるように設計
されているため、ユーザー定義のメッセージをハンドリング出来ません。
また、CWnd クラスにハンドリングさせているにもかかわらず、同様のエラーが発生
する場合は、ハンドリングする関数の戻り値と引数が正しく定義されていないと
思われます。

対処方法

WM_COMMAND のメッセージ ハンドリングをさせるようにするか、CWnd クラスでハン
ドリングを行うようにしてください。
また関数の戻り値と引数が正しく設定されていることを確認してください。

詳細

  • Visual C++ は米国 Microsoft Corporation の商標です。

Keywords: KBINFO KB402034
Technology: kbAudDeveloper kbVCsearch

inserted by FC2 system