我们现在的软件采用的是属性单上多个属性页的方式,但是由于属性页比较多,因此当显示属性单的时候很耗资源,不知道怎样才能使它优化呀?
而且由于属性页上的控件很多,因此当显示属性页的时候也很耗资源,可否做到当显示另外一个属性页时,前面的属性页就释放掉,这样占用的资源每次只有一个属性页的大小。不知道能不能行?
而且由于属性页上的控件很多,因此当显示属性页的时候也很耗资源,可否做到当显示另外一个属性页时,前面的属性页就释放掉,这样占用的资源每次只有一个属性页的大小。不知道能不能行?
调试欢乐多
顺便问一句,你何以觉得属性单占资源多?
就给你的属性单10M内存嘛,不算多呀,现在的程序耗10M内存的比比皆是。
你可以查一查有没有开内存,大的数组,还有资源泄漏等。
注意:VC中int是4个字节的!
我上面也说了使用局部变量,比如下面的代码,CPropertySheet PropSheet在退出OnMenuitemProperty()后内存自然释放了:
void CFinalView::OnMenuitemProperty()
{
// TODO: Add your command handler code here
CPropertySheet PropSheet;
m_pPageColor=new CPageColor;
m_pPageLine =new CPageLine;
m_pPageColor->m_psp.dwFlags &= ~(PSP_HASHELP);
m_pPageLine ->m_psp.dwFlags &= ~(PSP_HASHELP);
PropSheet.AddPage(m_pPageColor);
PropSheet.AddPage(m_pPageLine);
PropSheet.SetTitle("颜色与线型");
PropSheet.m_psh.dwFlags |= PSH_NOAPPLYNOW; PropSheet.m_psh.dwFlags &= ~(PSH_HASHELP);
if(PropSheet.DoModal()==IDOK)
{
m_Color=RGB(m_pPageColor->m_EditRed, m_pPageColor->m_EditGreen,m_pPageColor->m_EditBlue);
m_Width=m_pPageLine->m_EditWidth;
m_Type=m_pPageLine->Type;
}
Invalidate();
}
原来你是说PropertyPage,不是PropertySheet,那我是想不到什么办法了。但是控件应该占不了多少内存,你可以考虑:派生的PropertyPage类有没有定义大的数组或开大的空间,有的话尽量把用户数据放在数据模块中,其他地方多引用指针,不要重复开空间。
现在连我自己都说不清了,即使没有数据的页面,也就是没有自己开辟的空间,其占用的空间也是很大的,而且我肯定是用的标准控件,就是不知道为什么,唉!