[BUG] BLOCKS32 サンプルが MFC にリンクされるとカーソルが表示されなくなる

この記事は、以前は次の ID で公開されていました: JP208856
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
現象
BLOCKS32 サンプルに挿入した長方形または楕円形の上にマウスを移動すると、通常はマウスの位置によって異なる形状のカーソルが表示されます。

しかし、[MFC のスタティック ライブラリを使用]を有効にして BLOCKS32 サンプルをコンパイルすると、マウスを長方形または楕円形の上に移動してもカーソルが表示されません。
原因
アプリケーションが、スタティック ライブラリを使用する MFC にリンクされると、コンパイルによって MFC リソースがアプリケーションの実行可能ファイルに取り込まれます。アプリケーションの実行可能ファイルは Afxres.rc ファイルをインクルードします。これを確認するには、[表示] メニューの [インクルード ファイルの設定] をクリックします。Afxres.rc ファイルには、CRectTracker が MFC ソース コード内で使用するリソースが入っています。


これらのリソースは、_AFX_NO_TRACKER_RESOURCES が定義されていない場合にのみ取り込まれます。ところが、BLOCKS32 プロジェクトでは _AFX_NO_TRACKER_RESOURCES が定義されているため、CRectTracker で必要となるリソースがアプリケーションの実行可能イメージに取り込まれません。そのため、MFC をスタティックに使用してサンプルをビルドすると、CRectTracker で使用されるカーソルが表示されなくなります。
解決方法
[表示] メニューの [インクルード ファイルの設定]をクリックし、次の行を削除します。
#define _AFX_NO_TRACKER_RESOURCES 
状況
マイクロソフトでは、この問題をこの資料の冒頭に記載したマイクロソフト製品の問題として認識しています。
詳細

問題の再現手順

  1. Microsoft Developer's Network (MSDN) の Blocks32.exe サンプルを抽出します。
  2. [プロジェクト] メニューの [設定]をクリックします。
  3. [共有 DLL で MFC を使用] を [MFC のスタティック ライブラリを使用] に変更します。
  4. アプリケーションをビルドし、実行します。
  5. [New] メニューの [Rectangle] をクリックします。
  6. カーソルを長方形に移動すると、カーソルが消えます。
Afxres.rc ファイルをテキスト ファイルとして表示します。_AFX_NO_TRACKER_RESOURCES が定義されていないときにのみ、CRectTracker リソースが取り込まれることがわかります。
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 208856 (最終更新日 2002-02-13) をもとに作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。

Sample Static Dynamic Resources
プロパティ

文書番号:208856 - 最終更新日: 02/22/2014 22:50:31 - リビジョン: 2.0

  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft Visual C++ .NET 2002 Standard Edition
  • kbnosurvey kbarchive kbbug kbnofix kbmfc kbcontainer kbole kbcursor kbgrpdsmfcatl kbvc500bug kbvc600bug kbcomt KB208856
フィードバック