C++ 在mfc vc+中,如何在单击按钮时暂停读取文本文件,并在单击按钮时恢复读取+;?
在mfc vc++中,如何在单击按钮时暂停读取文本文件,并在单击按钮时恢复读取 文件如下所示打开 CFileException文件异常C++ 在mfc vc+中,如何在单击按钮时暂停读取文本文件,并在单击按钮时恢复读取+;?,c++,visual-c++,mfc,mfc-feature-pack,C++,Visual C++,Mfc,Mfc Feature Pack,在mfc vc++中,如何在单击按钮时暂停读取文本文件,并在单击按钮时恢复读取 文件如下所示打开 CFileException文件异常 if (readFile.Open(strFilePath, CFile::modeRead, &fileException) { while (readFile.ReadString(strLine)) { ... } } 试着把代码转移到另一个线程,我认为如果这个代码在主线程中,那么你就必须使用任何解决方案,但是你必须从消息队列中窥视消息
if (readFile.Open(strFilePath, CFile::modeRead, &fileException)
{
while (readFile.ReadString(strLine))
{
...
}
}
试着把代码转移到另一个线程,我认为如果这个代码在主线程中,那么你就必须使用任何解决方案,但是你必须从消息队列中窥视消息。你可以使用一个线程来读取它,也可以使用一些线程来管理它的等待。将“读取”移动到一个单独的线程肯定是最好的方法。但是,您可以添加以下函数,以允许在读取时发生其他事件:
void DoEvents()
{
MSG msg;
while( ::PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
{
::TranslateMessage( &msg );
::DispatchMessage ( &msg );
}
}
假设您的代码中有一个volatile标志来指示暂停/恢复,您可以执行以下操作:
while (readFile.ReadString(strLine))
{
while( this->m_bPause == TRUE )
{
::Sleep( 100 ); // Adjust as necessary
DoEvents();
}
// continue reading...
}
这应该是可行的,但你可能会注意到应用程序在循环过程中有点反应迟钝。希望这有帮助。这是在不同的线程中运行的吗?我用MFC使用Visual C++,所以我使用了下面的标签