在ontimer函数中使用了setwindowtext,在编辑框中输出文本,导致gdi增长飞快,不知道如何处理,改用什么样的方式将字符串输入才能避免gdi增长
部分代码如下
void CFirstPage_Alarm::OnTimer(UINT_PTR nIDEvent)
{
if(nIDEvent==402)
{
str_edit.Empty();//编辑框中要显示的字符串
for(int i=0;i<iEvironCount;i++)
{
CString str_edit1;
CString str[4];
//str[0]=str[1]=str[2]=str[3]=_T("—");
str[0].Format(" ------ ");
str[1].Format(" ------ ");
str[2].Format(" ------ ");
str[3].Format(" ------ ");
if(temp[i]) str[0]=_T(" 报警 ");
if(tran[i]) str[1]=_T(" 报警 ");
if(vswr[i]) str[2]=_T(" 报警 ");
if(elect[i]) str[3]=_T(" 报警 ");
str_edit1.Format("%9d%s%s%s%s\r\n",i+1,str[0],str[1],str[2],str[3]);
str_edit+=str_edit1;
} m_edit_text.SetWindowText(str_edit);//m_edit_text为编辑框对象,就是这一句导致gdi增长
} CDialog::OnTimer(nIDEvent);
}
部分代码如下
void CFirstPage_Alarm::OnTimer(UINT_PTR nIDEvent)
{
if(nIDEvent==402)
{
str_edit.Empty();//编辑框中要显示的字符串
for(int i=0;i<iEvironCount;i++)
{
CString str_edit1;
CString str[4];
//str[0]=str[1]=str[2]=str[3]=_T("—");
str[0].Format(" ------ ");
str[1].Format(" ------ ");
str[2].Format(" ------ ");
str[3].Format(" ------ ");
if(temp[i]) str[0]=_T(" 报警 ");
if(tran[i]) str[1]=_T(" 报警 ");
if(vswr[i]) str[2]=_T(" 报警 ");
if(elect[i]) str[3]=_T(" 报警 ");
str_edit1.Format("%9d%s%s%s%s\r\n",i+1,str[0],str[1],str[2],str[3]);
str_edit+=str_edit1;
} m_edit_text.SetWindowText(str_edit);//m_edit_text为编辑框对象,就是这一句导致gdi增长
} CDialog::OnTimer(nIDEvent);
}
解决方案 »
- VS2008中如何生成map文件?
- 关于限制绘图区域的.详情请进
- 求<<Visual C++开发基于SNMP网络管理软件>>的源代码
- 主程序如何分成多个文档编译
- activex控件问题
- 潘爱民《COM原理与应用》中的关于聚合的例程问题。
- 大家来谈谈用VC的有多少薪水?
- help me!谁有<<C++primer>>和《inside VC++》的电子书。最好是中文版!
- 找到文件夹路径,并读取文件夹内所有图片
- 请问vc中odbc方式访问数据库的方式,在添加、删除一条记录,如何更新控件list box中的记录??
- 多文档编程,如何可以在打开时直接显示自己创建的几个视图!拜大侠!!!
- VC2008SP1修改了CREATESTRUCT的值可是改不了大小
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法