程序性能问题(你可能也很关心)----特急!!!!

lzmailcn 2004-05-08 08:59:21
我要在程序中用到一个表格,由于格式较特殊,因此想自已来写,基本思路如下:
类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对象肯定都已卸掉了),请各位高手把你认为可能的原因告诉我,在下不胜感激!!
...全文
21 3 点赞 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
菜牛 2004-05-09
既然分页,应该不用绘制所有的页,只要进行判断,只绘制当前显示的页面,并且只绘制显示的Cell,就大大减少了运算量。
  • 打赏
  • 举报
回复
lzmailcn 2004-05-09
Mackz兄所言极是,我现在是新建了一个工程来试,还没来得及写优化的代码(原来没料到影想这么大)。今天上班后,我把绘制及设定位置的函数优化了一下,性能已有了及大的提高(生成3000页时滚动也不感到特别滞后)。
虽然问题基本解决了,但仍欢迎大家讨论,对好的意见,仍然送分!
  • 打赏
  • 举报
回复
countryboy 2004-05-08
mark一下先~~!!
  • 打赏
  • 举报
回复
相关推荐
发帖
VC/MFC
加入

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-05-08 08:59
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……