程序性能问题(你可能也很关心)----特急!!!!
我要在程序中用到一个表格,由于格式较特殊,因此想自已来写,基本思路如下:
类1:Cell类,定义如下:
protected:
CString m_Text;//文本
CRect m_CellRect;//位置
UINT m_Type;//类型
UINT m_Format;//对齐方式
UINT m_State;//状态
COLORREF m_BackColor;//背景色
COLORREF m_ForeColor;//前景色
CFont* m_Font;//字体
类2:页面类
在页面类中,将根据不同的行数生成一此CELL,如下:
m_NameCells=new CGridCell[m_RowCount];
m_LHzCells=new CGridCell[m_RowCount];
m_RHzCells=new CGridCell[m_RowCount];
if(m_Type==1)
{
m_LReadCells=new CGridCell[m_RowCount*2];
m_LMidCells=new CGridCell[m_RowCount];
m_RReadCells=new CGridCell[m_RowCount*2];
m_RMidCells=new CGridCell[m_RowCount];
}
else
{
m_LReadCells=NULL;
m_LMidCells=NULL;
m_RReadCells=NULL;
m_RMidCells=NULL;
}
m_2CCells=new CGridCell[m_RowCount];
m_MidCells=new CGridCell[m_RowCount];
m_HzCells=new CGridCell[m_RowCount];
m_MemCells=new CGridCell[m_RowCount];
类3:窗口类(从CWnd类派生)
此类主要是封装了页面类,需要根据需要生成多个页,然后在OnPaint()中绘制页(使用MemDC),页有自身的绘制函数,再由页调用Cell的绘制函数绘各个Cell,当窗口滚动或发生变化时,需要调整所有页面及所有Cell的位置,然后重绘。
我测试时最多只能生成75页,超过时程序提示Debug Assert。而且显示很慢,找不到什么原因(我在各个绘制函数中生成的GDI对象肯定都已卸掉了),请各位高手把你认为可能的原因告诉我,在下不胜感激!!