void CCh1::ShowChange2()
{
char pPhoNumBuf[4];
strcpy(pPhoNumBuf,"");
for(int i=0;i<nTotalCh;i++)
{
CBitmap Bitmap;
HBITMAP hBitmap;
CButton *pButton;
CString str,buffer;
switch(SsmGetChState(i))
{
case S_CALL_PICKUPED:
{
Bitmap.LoadBitmap(IDB_UP);
hBitmap = (HBITMAP)Bitmap.Detach();
pButton = (CButton*)GetDlgItem(i+1074);
pButton->SetBitmap(hBitmap);
SetDlgItemText(i+1106,"摘机");
}
break;
case S_CALL_STANDBY:
{
Bitmap.LoadBitmap(IDB_DOWN);
hBitmap = (HBITMAP)Bitmap.Detach();
pButton = (CButton*)GetDlgItem(i+1074);
pButton->SetBitmap(hBitmap);
SetDlgItemText(i+1106,"空闲");
}
break;
case S_CALL_WAIT_REMOTE_PICKUP:
{
Bitmap.LoadBitmap(IDB_DOWN);
hBitmap = (HBITMAP)Bitmap.Detach();
pButton = (CButton*)GetDlgItem(i+1074);
pButton->SetBitmap(hBitmap);
SetDlgItemText(i+1106,"空闲");
}
break;
case S_CALL_OFFLINE:
{
Bitmap.LoadBitmap(IDB_OUTLINE);
hBitmap = (HBITMAP)Bitmap.Detach();
pButton = (CButton*)GetDlgItem(i+1074);
pButton->SetBitmap(hBitmap);
SetDlgItemText(i+1106,"断线");
}
break;
}
}
}
17 个解决方案
#1
只是图标没反应,还是整个窗口没反应?
如果是整个窗口没反应的话,可能是你的UI线程里做的太多事情
如果是整个窗口没反应的话,可能是你的UI线程里做的太多事情
#2
http://blog.csdn.net/na_he/article/details/7429171
#3
使用的资源没有释放,在不停的增加
#4
整个窗口没反映,不知道怎么改
#5
记住每次用到的Bitmap对象,在下次loadbitmap前先释放
Bitmap.DeleteObject();//先干这个,释放前面load过的bitmap对象
Bitmap.LoadBitmap(IDB_DOWN);
hBitmap = (HBITMAP)Bitmap.Detach();
pButton = (CButton*)GetDlgItem(i+1074);
pButton->SetBitmap(hBitmap);
SetDlgItemText(i+1106,"空闲");
Bitmap.DeleteObject();//先干这个,释放前面load过的bitmap对象
Bitmap.LoadBitmap(IDB_DOWN);
hBitmap = (HBITMAP)Bitmap.Detach();
pButton = (CButton*)GetDlgItem(i+1074);
pButton->SetBitmap(hBitmap);
SetDlgItemText(i+1106,"空闲");
#6
或者把Bitmap变成你的一个类成员变量,不要用Detach()
#7
按说应该是每个通道对应一个CBitmap对象,这些CBitmap对象作为类成员变量,不能用临时变量
#8
是资源消耗完了,只使用没释放.你把这个变量定义成全局试试:
CButton *pButton;
CButton *pButton;
#9
HBITMAP SetBitmap( HBITMAP hBitmap );
Return Value
The handle of a bitmap previously associated with the button.
怎么处理了?
Return Value
The handle of a bitmap previously associated with the button.
怎么处理了?
#10
你处理的方式很有问题
通过Detach的方式获取一个被分离的句柄
而且没有及时释放
建议你合理组织位图句柄
记住用过之后要及时复位
通过Detach的方式获取一个被分离的句柄
而且没有及时释放
建议你合理组织位图句柄
记住用过之后要及时复位
#11
改过之后,运行半个小时 ,还是崩溃。时有时无,整个程序外框架没了
#12
这种情况,很明显是GDI资源使用后没有释放!
程序运行后,你打开任务管理器,在 查看--选择列,里面,勾上 GDI 对象,然后,你看看你的程序里面的GDI对象是不是不停的增加!
GDI资源是有限的,要养成使用后释放的好习惯。比如dc,bitmap,pen brush等,建议查看MSDN
程序运行后,你打开任务管理器,在 查看--选择列,里面,勾上 GDI 对象,然后,你看看你的程序里面的GDI对象是不是不停的增加!
GDI资源是有限的,要养成使用后释放的好习惯。比如dc,bitmap,pen brush等,建议查看MSDN
#13
明显的资源没有释放,GDI画图的通病,用完一次绘图资源必须要释放掉
#14
求大哥们帮我改改 刚学这个不太会
#15
每次Load前调用CBitmap类的
DeleteObject() 方法释放资源。
DeleteObject() 方法释放资源。
#16
上转你的程序到资源(0分)。谁有空帮你改改。
#17
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知
见此回复三日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知
见此回复三日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法
#1
只是图标没反应,还是整个窗口没反应?
如果是整个窗口没反应的话,可能是你的UI线程里做的太多事情
如果是整个窗口没反应的话,可能是你的UI线程里做的太多事情
#2
http://blog.csdn.net/na_he/article/details/7429171
#3
使用的资源没有释放,在不停的增加
#4
整个窗口没反映,不知道怎么改
#5
记住每次用到的Bitmap对象,在下次loadbitmap前先释放
Bitmap.DeleteObject();//先干这个,释放前面load过的bitmap对象
Bitmap.LoadBitmap(IDB_DOWN);
hBitmap = (HBITMAP)Bitmap.Detach();
pButton = (CButton*)GetDlgItem(i+1074);
pButton->SetBitmap(hBitmap);
SetDlgItemText(i+1106,"空闲");
Bitmap.DeleteObject();//先干这个,释放前面load过的bitmap对象
Bitmap.LoadBitmap(IDB_DOWN);
hBitmap = (HBITMAP)Bitmap.Detach();
pButton = (CButton*)GetDlgItem(i+1074);
pButton->SetBitmap(hBitmap);
SetDlgItemText(i+1106,"空闲");
#6
或者把Bitmap变成你的一个类成员变量,不要用Detach()
#7
按说应该是每个通道对应一个CBitmap对象,这些CBitmap对象作为类成员变量,不能用临时变量
#8
是资源消耗完了,只使用没释放.你把这个变量定义成全局试试:
CButton *pButton;
CButton *pButton;
#9
HBITMAP SetBitmap( HBITMAP hBitmap );
Return Value
The handle of a bitmap previously associated with the button.
怎么处理了?
Return Value
The handle of a bitmap previously associated with the button.
怎么处理了?
#10
你处理的方式很有问题
通过Detach的方式获取一个被分离的句柄
而且没有及时释放
建议你合理组织位图句柄
记住用过之后要及时复位
通过Detach的方式获取一个被分离的句柄
而且没有及时释放
建议你合理组织位图句柄
记住用过之后要及时复位
#11
改过之后,运行半个小时 ,还是崩溃。时有时无,整个程序外框架没了
#12
这种情况,很明显是GDI资源使用后没有释放!
程序运行后,你打开任务管理器,在 查看--选择列,里面,勾上 GDI 对象,然后,你看看你的程序里面的GDI对象是不是不停的增加!
GDI资源是有限的,要养成使用后释放的好习惯。比如dc,bitmap,pen brush等,建议查看MSDN
程序运行后,你打开任务管理器,在 查看--选择列,里面,勾上 GDI 对象,然后,你看看你的程序里面的GDI对象是不是不停的增加!
GDI资源是有限的,要养成使用后释放的好习惯。比如dc,bitmap,pen brush等,建议查看MSDN
#13
明显的资源没有释放,GDI画图的通病,用完一次绘图资源必须要释放掉
#14
求大哥们帮我改改 刚学这个不太会
#15
每次Load前调用CBitmap类的
DeleteObject() 方法释放资源。
DeleteObject() 方法释放资源。
#16
上转你的程序到资源(0分)。谁有空帮你改改。
#17
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知
见此回复三日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知
见此回复三日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法