darkay:检查log目录是否存在:
access("./log");
如果不存在大的话创建它:
_mkdir("./log");
(发表于2003-6-22 19:49:00)
hjw21:我想的是一进入系统就开始读数据库,进度条就会显示其读写情况.读完后进度条显示完成,然后
其数据就添加在LIST控件中.如果没有进度条显示其进度要读7万条的记录程序就好象死机
能否给个例子!
我做个例子不成功,请教!!
void CNEWADODlg::OnBUTTONProgressCtrl()
{
int ii;
int BB;
BB=m_pRecordset->RecordCount;
m_ProgressCtrl.SetRange(0,BB);
for(ii=0;ii<=BB;ii++)
{
m_ProgressCtrl.SetPos(ii);
}
}
(发表于2003-11-27 16:39:00)
gzg:不错,编程风格好,写的很严谨、规范,C++功底可见一斑。
(发表于2003-11-28 17:08:00)
feifei2001:发现你的dll是加入静态lib连接,并且加入.h文件来使用的。
有个问题,怎么用loadlibrary来使用?希望别见笑
(发表于2003-12-3 10:17:00)
bestblue:注意:存在内存泄漏。
(发表于2004-2-2 14:32:00)
shakesky:思想好,就是测试程序没有体现你的思想,好象在测试一个普通的动态库一样
(发表于2004-5-27 17:13:00)
mybios:其中这个会导致内存泄漏。我已经改好,如下:
void CWriteInfo::OnWriteInfo(WPARAM wParam, LPARAM lParam)
{
char* pChar = (char*)wParam;
// 回车换行符
char changeLine[2] = {'\r','\n'};
// ::AfxMessageBox(strInfo);
// 防止文件操作冲突
if(WAIT_OBJECT_0 == ::WaitForSingleObject(m_hEventBusy,360))
{
CTime time = CTime::GetCurrentTime();
CString strTime = time.Format("%Y-%m-%d %H:%M:%S");
::ResetEvent(m_hEventBusy); // 进“临界区”
// 写入时间信息
m_file.Write(strTime, strTime.GetLength());
m_file.Write(changeLine,2);
m_file.Write(pChar,lParam);
// 在此处释放由发送消息TM_WRITE_INFO的函数new出的内存
m_file.Write(changeLine,2);
m_file.SeekToEnd();
::SetEvent(m_hEventBusy); // 出“临界区”
}
else
{
#ifdef _DEBUG
::AfxMessageBox("File Operation Ignored!");
#endif
}
delete[] pChar;//这句防止了内存泄漏!原来的代码中,如果访问冲突,就没有释放pChar的内存。
}
(发表于2004-11-7 0:38:00)
mybios:顺便说一句。。
程序的注释太多了。。其实一个好的程序不一定要很多注释。一个好的程序应该是没有注释也能让人看懂。不知道你有没有看过《C++程序设计陷阱》这本书?里面有介绍。呵呵。
(发表于2004-11-7 0:40:00)
Rambo:不明白,在注册程序运行实例的时候已经得到CWriteInfo的指针,为什么还要用线程列表存,然后又取。
(发表于2006-12-29 19:26:00)
..........................................................................
--------------------next---------------------