在一CListCtrl 控件中同时选中多项进行下载(这个下载是个比较复杂的过程,是通过 CSerialPort类,最后通过消息把一个一个字符发送过来,比较慢),但我在多文件下载时,怎么分开两个下载的过程啊??
例如:
void CMainFrame::OnFileDownload()
{
POSITION pos = rInfo->m_List_Gps.GetFirstSelectedItemPosition();
while (pos)
{
iIndex = rInfo->m_List_Gps.GetNextSelectedItem(pos);
FileDown.OnFileDownload(iIndex);
}
这样做不行啊,因为OnFileDownload()最终是要发送一个命令(SendCommand)给串口类(CSerialPort),串口类再发回消息,不是直接完成的。这样势必就会导致第一个OnFileDownload还没响应完成,第二个OnFileDownload也同时在响应了,我不知怎么把他们区分开,大家帮我想想法子,谢谢!!尽量说详细点!!
例如:
void CMainFrame::OnFileDownload()
{
POSITION pos = rInfo->m_List_Gps.GetFirstSelectedItemPosition();
while (pos)
{
iIndex = rInfo->m_List_Gps.GetNextSelectedItem(pos);
FileDown.OnFileDownload(iIndex);
}
这样做不行啊,因为OnFileDownload()最终是要发送一个命令(SendCommand)给串口类(CSerialPort),串口类再发回消息,不是直接完成的。这样势必就会导致第一个OnFileDownload还没响应完成,第二个OnFileDownload也同时在响应了,我不知怎么把他们区分开,大家帮我想想法子,谢谢!!尽量说详细点!!
OnFileDownload在响应时先判断文件是否在下载,如果是,创建一个CArray队列,将第二个下载放入队列,第一个文件下载完了向MainFrame用PostMessage发送消息通知,MainFrame收到消息执行第二个文件的下载。利用队里机制一个一个来!
void CMainFrame::OnFileDownload()
{
POSITION pos = rInfo->m_List_Gps.GetFirstSelectedItemPosition();
while (pos)
{
iIndex = rInfo->m_List_Gps.GetNextSelectedItem(pos);
if(消息收到)
FileDown.OnFileDownload(iIndex);
}下载结束时发出一个消息。这样不行吧,到if(消息收到) 这步时,程序只会认为没收到消息而进行下一个iIndex的,还有,CArray不大会用啊,能大概讲一下吗???谢谢!!!