码。(如果编译环境不对跑步起来,也可以只看代码,不过需要费点劲了)
先看初始化如:On
InitDialog()、On
Create()等函数。
再看有没有OnTimer()
按程序流程,从入口渐进,逐行进行分析
现看功能,再看结构。。
你要明白,MFC程序是消息驱动的,就好了!!
熟悉流程,然后就是f9断断断,调试看调用堆栈
//写入文件void CMFCApplication1Dlg::OnBnClickedWriteBtn()
{
// MFC的CFile类写入文件
CFile file(L"1.txt", CFile::modeCreate | CFile::modeWrite )
char *cstr=new char[128]
GetDlgItemTextA(m_hWnd, IDC_EDIT1, cstr,128)
int n = strlen(cstr)
file.Write(cstr,strlen(cstr))
file.Close()
}
//读取文件
void CMFCApplication1Dlg::OnBnClickedReadfileBtn()
{
// MFC的CFile类读取文件
CFile file(L"1.txt", CFile::modeRead)
int n=file.GetLength()
char *pStr = new char[n+1]
file.Read(pStr, n)
pStr[n ] = 0
file.Close()
SetDlgItemTextA(m_hWnd, IDC_EDIT1, pStr)
}
写的都是阻塞的,不过应该影响不大。由于监控下位机有个心跳数据需要取,所以每一秒发一条命令然后受到状态更新界面上一个CStatic。
现在,MFC程序刚刚启动时还好,资源管理器显示平均CPU占有1.2左右;
不过,啥也不干,就那么放着,一个小时左右后整个电脑都开始卡,这时显示平均CPU占用5左右。到后来,干脆整个程序界面都卡死了,就是Ctrl+Tab回不来了。但是至少后台在打印txt日志的行程还在运行。
从资源管理器来看,平均%5的CPU也不是很夸张啊,但为啥就界面卡死了呢?
而且刚刚运行的时候不是很卡,时间久了就卡了,是啥东西比如句柄用完了没释放导致的吗?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)