求解,SelectObject返回NULL

erfbe1 2012-03-09 01:46:44
要改写一下xSkinButton类,然后在DrawBitmap有如下代码:
void CxSkinButton::DrawBitmap(CDC* dc, HBITMAP hbmp, RECT r, int DrawMode)
{
HDC hdcMem = CreateCompatibleDC(dc->m_hDC);
HGDIOBJ hbmOld = SelectObject(hdcMem, hbmp);//此句返回NULL
}
调试发现hbmp参数传过来是有效图片(和外面LoadBitmap返回参数一致),为什么会返回NULL呢?

如果在函数里面LoadBitmap是可以的,即把代码改成如下则是可以的
void CxSkinButton::DrawBitmap(CDC* dc, HBITMAP hbmp, RECT r, int DrawMode)
{
hbmp = LoadBitmap(IDB_XXX);
HDC hdcMem = CreateCompatibleDC(dc->m_hDC);
HGDIOBJ hbmOld = SelectObject(hdcMem, hbmp);
}
...全文
126 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
erfbe1 2012-03-09
  • 打赏
  • 举报
回复
hbmp是已经实例化的,在按钮的DrawItem事件里面LoadBitmap,然后调用DrawBitmap,然后DrawBitmap里面hbmp被SelectObject了两回,第二次的SelectObject会失败。把第一个SelectObject去掉就行了,改别人的代码很容易不小心卡在不该该的地方呀。
erfbe1 2012-03-09
  • 打赏
  • 举报
回复
问题找到了,hbmp已经被SelectObject过了。进来个人领分吧。上面的代码没贴全,其实是在前面那里出问题了。
grf9527 2012-03-09
  • 打赏
  • 举报
回复
你的hbmp还是空的,没有真实的数据,也就是楼上的实例化
wangxiangdong_sl 2012-03-09
  • 打赏
  • 举报
回复
hbmp没有实例化,看看hbmp的值是否为NULL,如果为NULL,肯定不行.
看看这本书,最新的下载地址为:
http://download.csdn.net/download/wangxiangdong_sl/4080710
http://download.csdn.net/download/wangxiangdong_sl/4071676
http://download.csdn.net/download/wangxiangdong_sl/4014388

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧