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. |