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

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

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧