CBitmap::LoadBitmap( UINT nIDResource ); 用什么办法还能再次得到CBitmap的nIDResource值!!!急!!! rt 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 事先保存nIDResource,跟据需要保存为相应的结构里面,如:typedef struct A{ int nBitmap;//位图索引号 int nIDResource;//对应位置的资源ID } A,*LPA; CBitmap和CGdiObject里没有相应函数可以得到,只能跟踪保存ID。要不就继承CBitmap做一个自己的BITMAP类。 MFC没提供什么相应的函数吗? 我觉得楼主的意思是使用CBitmap类的时候,想重新得到nIDResource的值。解决这个问题其实很简单,自己写一个类,继承自CBitmap,在这个类中增加一个变量m_nIDResource,改写LoadBitmap(nid)函数,使m_nIDResource=nid,这样,就可以在下次的时候知道上次调用的是哪个nID了。不过,CBitmap已经有没有这个功能了呢?我得查查先,如果没有,就可以使用我上面说的方法。 大致可以这样写,改改就可以了。...Class CMyBitmap:CBitmap{ UINT m_nIDResource; public: LoadBitmap(UINT nIDResource); UINT GetLastID();}...初始化及其他...CMyBitmap::LoadBitmap(UINT nIDResource){ m_nIDResource=nIDResource; ::LoadBitmap(UINT nIDResource);}UINT CMyBitmap::GetLastID(){ return m_nIDResource;} HBITMAP LoadBitmapFromFile(HINSTANCE hInst, LPTSTR szFileName){ BITMAP bm; HBITMAP phBitmap = NULL; phBitmap = (HBITMAP)LoadImage( hInst, szFileName, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE ); if( phBitmap == NULL ) return FALSE; GetObject(phBitmap, sizeof(BITMAP), &bm ); if( ( bm.bmBitsPixel * bm.bmPlanes ) <= 8 ) { HDC hMemDC; HBITMAP hOldBitmap; hMemDC = CreateCompatibleDC( NULL ); hOldBitmap = (HBITMAP)SelectObject( hMemDC, phBitmap ); SelectObject( hMemDC, hOldBitmap ); DeleteDC( hMemDC ); } else { HDC hRefDC; hRefDC = GetDC( NULL ); ReleaseDC( NULL, hRefDC ); } return phBitmap;} MFC中的类中CString类型的变量的初值 请教CreateThread的异常问题 进程查看,前置! VK_LEFT、VK_RIGHT在IE中不被识别??? 请教如何自动注册ODBC数据源 文件读写那里,串行化和并行化是什么意思? 像我这样,一个月能挣多少? 为什么我的对话框不是xp风格的? VC 中如何得到当前的应用程序的路径, 求助! 怎么深入vc ++6.o 为什么不用执行CoInitialize(),也能成功调用系统的某些COM库函数,使用系统某些接口? 这个出错提示大概会是什么原因?
如:typedef struct A{
int nBitmap;//位图索引号
int nIDResource;//对应位置的资源ID
} A,*LPA;
...
Class CMyBitmap:CBitmap
{
UINT m_nIDResource;
public:
LoadBitmap(UINT nIDResource);
UINT GetLastID();
}...初始化及其他
...
CMyBitmap::LoadBitmap(UINT nIDResource)
{
m_nIDResource=nIDResource;
::LoadBitmap(UINT nIDResource);
}
UINT CMyBitmap::GetLastID()
{
return m_nIDResource;
}
{
BITMAP bm; HBITMAP phBitmap = NULL;
phBitmap = (HBITMAP)LoadImage( hInst, szFileName, IMAGE_BITMAP, 0, 0,
LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE );
if( phBitmap == NULL )
return FALSE; GetObject(phBitmap, sizeof(BITMAP), &bm );
if( ( bm.bmBitsPixel * bm.bmPlanes ) <= 8 )
{
HDC hMemDC;
HBITMAP hOldBitmap;
hMemDC = CreateCompatibleDC( NULL );
hOldBitmap = (HBITMAP)SelectObject( hMemDC, phBitmap );
SelectObject( hMemDC, hOldBitmap );
DeleteDC( hMemDC );
}
else
{
HDC hRefDC;
hRefDC = GetDC( NULL );
ReleaseDC( NULL, hRefDC );
}
return phBitmap;
}