120分问一个简单的问题。 你如果习惯用GDI的API函数的话,可能比较容易,用BitBlt去画。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 建议如下修改:hIcon = m_image.ExtractIcon(i);if(i == iSelectItem && iSelectItem == iOnItem){ //dc.DrawIcon(0,0,hIcon);无资源泄露,但是自动放大成32*32的。DrawIconEx(dc.GetSafeHdc(),rectButton.left+(BUTTON_SIZE - ICON_SIZE)/2+1,rectButton.top + (BUTTON_SIZE - ICON_SIZE)/2 + 1,hIcon,ICON_SIZE,ICON_SIZE,0,NULL,DI_NORMAL);dc.Draw3dRect(rectButton,RGB(128,128,128),RGB(255,255,255));::DestroyIcon(hIcon);}else{//dc.DrawIcon(0,0,hIcon);DrawIconEx(dc.GetSafeHdc(),rectButton.left+(BUTTON_SIZE - ICON_SIZE)/2,rectButton.top + (BUTTON_SIZE - ICON_SIZE)/2,m_image.ExtractIcon(i),ICON_SIZE,ICON_SIZE,0,NULL,DI_NORMAL);if(iSelectItem == -1 && iOnItem == i)dc.Draw3dRect(rectButton,RGB(255,255,255),RGB(128,128,128));}::DestroyIcon(hIcon); http://www.csdn.net/Expert/topic/484/484265.shtm 请大家多多帮忙。谢谢whz_time。请到http://www.csdn.net/Expert/topic/486/486689.shtm回贴领分。 是GDI资源,不是内存,谢谢。 在Draw之前调用SetIcon(hIcon,FALSE); 去www.codeguru.com有一个sample,是将32*32 change 成 16*16的,参考一下。 问题找到了。哎——DrawIconEx(dc.GetSafeHdc(),rectButton.left+(BUTTON_SIZE - ICON_SIZE)/2,rectButton.top + (BUTTON_SIZE - ICON_SIZE)/2, ######看这里,不泄露才怪呢m_image.ExtractIcon(i)换成hIcon一切OK#########,ICON_SIZE,ICON_SIZE,0,NULL,DI_NORMAL); 新手请教一下这个结构体是什么意思? 从VC++6.02入门VS2008的问题 VC中需要启动另一个程序,并且需要控制或者得到其运行结果! 关于速度随时间变化显示画面的问题 c++基础问题 請問如何把char **[]變成int ***[]啊?或是。。。 100分请教“怎样在视图View上显示对话框模版??” (急!)vc调试问题?? 求助两个小程序的VC源代码 vc oracle 写入错误 一个比较菜的问题,大家来帮帮忙!!! 为什么这两句放在一起不阻塞?关于临界。
hIcon = m_image.ExtractIcon(i);
if(i == iSelectItem && iSelectItem == iOnItem)
{
//dc.DrawIcon(0,0,hIcon);无资源泄露,但是自动放大成32*32的。
DrawIconEx(dc.GetSafeHdc(),rectButton.left+(BUTTON_SIZE - ICON_SIZE)/2+1,rectButton.top + (BUTTON_SIZE - ICON_SIZE)/2 + 1,hIcon,ICON_SIZE,ICON_SIZE,0,NULL,DI_NORMAL);
dc.Draw3dRect(rectButton,RGB(128,128,128),RGB(255,255,255));
::DestroyIcon(hIcon);
}
else
{
//dc.DrawIcon(0,0,hIcon);
DrawIconEx(dc.GetSafeHdc(),rectButton.left+(BUTTON_SIZE - ICON_SIZE)/2,rectButton.top + (BUTTON_SIZE - ICON_SIZE)/2,m_image.ExtractIcon(i),ICON_SIZE,ICON_SIZE,0,NULL,DI_NORMAL);
if(iSelectItem == -1 && iOnItem == i)
dc.Draw3dRect(rectButton,RGB(255,255,255),RGB(128,128,128));
}
::DestroyIcon(hIcon);
DrawIconEx(dc.GetSafeHdc(),rectButton.left+(BUTTON_SIZE - ICON_SIZE)/2,rectButton.top + (BUTTON_SIZE - ICON_SIZE)/2, ######看这里,不泄露才怪呢m_image.ExtractIcon(i)换成hIcon一切OK#########,ICON_SIZE,ICON_SIZE,0,NULL,DI_NORMAL);