PRB: AfxFindResourceHandle Fails w/ Icons, Cursors, & StringsLast reviewed: August 7, 1997Article ID: Q148305 |
1.50 1.51 1.52 | 2.00 2.10 2.20 4.00
WINDOWS | WINDOWS NTkbusage kbcode kbprb The information in this article applies to:
SYMPTOMSAfxFindResourceHandle() fails when searching for icon (RT_ICON), cursor (RT_CURSOR), and string resources (RT_STRING).
CAUSEThis occurs because of how the Windows API function FindResource, which is called by AfxFindResourceHandle(), is designed.
RESOLUTIONFor icons and cursors, use the RT_GROUP_ICON or RT_GROUP_CURSOR resource type with AfxFindResourceHandle() to return the EXE or DLL instance where the resource is located, and then call ::LoadIcon() or ::LoadCursor() to load the resource. For string resources, call CString::LoadString(). It will search the EXE and MFC extension DLLs for the string resource, and load it into the CString.
STATUSThis behavior is by design.
MORE INFORMATIONAfxFindResourceHandle is an _AFXDLL-specific API for walking the resource list to look for a given match. It takes the name and type of a resource and returns the resource handle where it was first found (or NULL). It is documented in MFC Technote TN033: DLL Version of MFC.
Sample CodeThe following sample code shows successful uses of RT_GROUP_ICON and RT_GROUP_CURSOR:
// This sample code can be placed in any MFC application or DLL // that links with the DLL version of MFC. Create an icon with ID // IDI_ICON1 and a cursor with ID IDC_CURSOR1. Call TestLoadIconCursor // from CWinApp::Initinstance().HICON MyLoadIcon( LPCTSTR lpIconName ) { return ::LoadIcon(AfxFindResourceHandle(lpIconName, RT_GROUP_ICON), lpIconName); }HCURSOR MyLoadCursor ( LPCTSTR lpCursorName ) { return ::LoadCursor(AfxFindResourceHandle(lpCursorName, RT_GROUP_CURSOR), lpCursorName); } void TestLoadIconCursor(void){ HICON hIcon; HCURSOR hCur; LPCTSTR lpcszRes; lpcszRes = MAKEINTRESOURCE(IDI_ICON1); hIcon = MyLoadIcon( lpcszRes ); ASSERT (hIcon != NULL); lpcszRes = MAKEINTRESOURCE(IDC_CURSOR1); hCur = MyLoadCursor( lpcszRes ); ASSERT (hCur != NULL);}
|
Additional reference words: 2.5 2.50 2.51 2.52 3.0 3.00 3.1 3.10 3.2
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |