DOCUMENT:Q208856 13-FEB-2002 [visualc] TITLE :BUG: BLOCKS32 Sample Fails to Show Cursors when Linked to MFC PRODUCT :Microsoft C Compiler PROD/VER::5.0,6.0 OPER/SYS: KEYWORDS:kbole kbCOMt kbContainer kbCursor kbMFC kbVC500bug kbVC600bug kbDSupport kbGrpDSMFCATL ====================================================================== ------------------------------------------------------------------------------- The information in this article applies to: - Microsoft Visual C++, 32-bit Enterprise Edition, versions 5.0, 6.0 - Microsoft Visual C++, 32-bit Professional Edition, versions 5.0, 6.0 - Microsoft Visual C++, 32-bit Learning Edition, version 6.0 - Microsoft Visual C++.NET (2002) ------------------------------------------------------------------------------- SYMPTOMS ======== Usually when you move the mouse over a rectangle or ellipse which is inserted into the BLOCKS32 sample, it shows different cursors depending on the position of mouse. However, if you compile the BLOCKS32 sample with Use MFC in a Static Library option, the different cursors do not appear when moving the mouse over a rectangle or ellipse. CAUSE ===== When an application is linked to MFC using the static library, the MFC resources are compiled into an application's executable. The application's executable will include the Afxres.rc file. You can check this by selecting the View menu and Resource Includes menu. The Afxres.rc file has the resources that CRectTracker uses in the MFC source code. These resources are included only when _AFX_NO_TRACKER_RESOURCES is not defined. The BLOCKS32 project has _AFX_NO_TRACKER_RESOURCES defined, so it does not place the resources that CRectTracker needs into the application's executable image. Therefore, none of the cursors used by CRectTracker will show up when building the sample using MFC statically. RESOLUTION ========== Select the View menu and Resource Includes menu item and delete the following line: #define _AFX_NO_TRACKER_RESOURCES STATUS ====== Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. MORE INFORMATION ================ Steps to Reproduce Behavior --------------------------- 1. Extract Blocks32.exe sample from Microsoft Developer's Network (MSDN) 2. From the Project menu select Settings 3. Change "Use MFC in a Shared DLL" to "Use MFC in a Static Library" 4. Build the application and run it 5. From the New menu select Rectangle. 6. Move the cursor into the rectangle and cursor disappears. View the Afxres.rc file as a text file and you can see that CRectTracker resources are included only when _AFX_NO_TRACKER_RESOURCES is not defined. Additional query words: Sample Static Dynamic Resources ====================================================================== Keywords : kbole kbCOMt kbContainer kbCursor kbMFC kbVC500bug kbVC600bug kbDSupport kbGrpDSMFCATL Technology : kbVCsearch kbAudDeveloper kbVC500 kbVC600 kbVC32bitSearch kbVC500Search Version : :5.0,6.0 Issue type : kbbug Solution Type : kbnofix ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 2002.