如何在单击按钮时暂停读取文本文件并在 mfc vc++ 中的单击按钮时恢复它?

Posted

技术标签:

【中文标题】如何在单击按钮时暂停读取文本文件并在 mfc vc++ 中的单击按钮时恢复它?【英文标题】:How to pause reading a text file at onclick of button and resume it when Onclick button in mfc vc++? 【发布时间】:2012-03-14 08:22:24 【问题描述】:

如何在 mfc vc++ 中的 onclick 按钮时暂停读取文本文件并在 Onclick 按钮时恢复它?

文件打开如下 CFileException 文件异常;

    if (readFile.Open(strFilePath, CFile::modeRead, &fileException)

while (readFile.ReadString(strLine))

...



【问题讨论】:

这是在不同的线程中运行吗? 我正在使用 Visual c++ 和 mfc,所以我使用了以下标签 【参考方案1】:

尝试将该代码移动到另一个线程,我认为如果此代码在主线程内,但您必须从消息中偷看消息,您将不得不与reentrancy 对抗任何解决方案队列。使用线程你可以suspend 它或者使用一些synchronization primitive 来管理它的等待。

【讨论】:

【参考方案2】:

将“阅读”移至单独的线程绝对是最好的方法。但是,您可以添加以下函数以允许在阅读时发生其他事件:

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 vc++ 中的单击按钮时恢复它?的主要内容,如果未能解决你的问题,请参考以下文章

在 mfc 中单击按钮时更改编辑框内容

VC对话框读取文件

VC++(MFC)中动态创建和管理按钮控件,怎么做?

Visual Studio 2019 MFC 应用程序:如何从文本文件中读取并在不同字段/编辑控件中显示字符串?

如何更改 MFC/VC++ 对话框应用程序中按钮的前景色(即文本或标题)

如何在VC++中用纯代码生成按钮等控件?