在EXE和DLL中,FindResource有什么区别么
以下的代码在EXE中,执行无误。可是在DLL中FindResource返回的值就为0了,我用::GetLastError(),得出的值是1813,也就是取不到资源,这是为什么?是因为在EXE中不是用指针CREATE的,在DLL中用指针出现的问题么?怎么解决?
void CButtonMove::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: Add your code to draw the specified item
CRgn rgn;
rgn.CreateEllipticRgn( 0 , 0 , 21 , 21 );
SetWindowRgn( (HRGN)rgn , TRUE );
//使用刷子画图时的情况
CDC *pDC =CDC::FromHandle(lpDrawItemStruct->hDC);
CRect rtControl(lpDrawItemStruct->rcItem);
CPen pen(PS_SOLID,1,RGB(106,50,148)),*old_pen;
CBrush *old_brush;
CString strText;
rtControl.EqualRect(rtControl);
// Resource handle to bitmap.
HRSRC hRes;
// Global handles to bitmap resource.
HGLOBAL hData, hLockedData;
CBrush brush;
DWORD dd;
// Find the resource handle.
hRes = ::FindResource(AfxGetResourceHandle(),
MAKEINTRESOURCE(IDB_POINTBMP), RT_BITMAP);
// dd = ::GetLastError();
if (hRes != NULL)
{
// Lock and Load (or Load and Lock).
if (((hData = ::LoadResource(AfxGetResourceHandle(),
hRes)) != NULL) &&
((hLockedData = (HGLOBAL)::LockResource(hData)) != NULL))
{
// Initialize the brush.
brush.CreateDIBPatternBrush(hLockedData,
DIB_RGB_COLORS);
}
}
old_brush=pDC->SelectObject(&brush);
old_pen =pDC->SelectObject(&pen);
pDC->Ellipse(rtControl);
//字体背景是否为透明
pDC->SetBkMode(TRANSPARENT);
GetWindowText(strText);
pDC->DrawText(strText,rtControl,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
}