从 MFC 应用程序启动 Java 时,在 MFC 应用程序中显示等待光标,直到它完成其进程



我正在开发一个应用程序,我正在从我的MFC应用程序中启动一个Java应用程序。我想显示从 java 应用程序执行过程到结束的时间的等待光标。这是我实现的代码。

    void CDropboxSync::OnBnClickedDbxPcToCloud()
{
    STARTUPINFOW        siStartupInfo;
    PROCESS_INFORMATION piProcessInfo;
    memset(&siStartupInfo, 0, sizeof(siStartupInfo));
    memset(&piProcessInfo, 0, sizeof(piProcessInfo)); 
    SetCursor(LoadCursor(NULL, IDC_WAIT));
    if (CreateProcess(TEXT("C:\Program Files\Java\jre7\bin\java.exe"), TEXT(" -jar DbxUpldDwnld.jar u"), NULL, NULL, false, CREATE_NO_WINDOW, NULL, NULL, (LPSTARTUPINFOA)&siStartupInfo, &piProcessInfo) == false) {
    AfxMessageBox(_T("Please install Java Runtime Environment(JRE) on your PCn Link: http://www.oracle.com/technetwork/java/javase/downloads/index.html"), MB_ICONERROR);
    }
    CloseHandle(piProcessInfo.hProcess);
    CloseHandle(piProcessInfo.hThread);
    // TODO: Add your control notification handler code here
}

我想在 java 应用程序的处理开始后立即启动等待游标,并希望在应用程序进程完成后结束等待游标。怎么能做到这一点。我尝试实现BeginWaitCursor和EndWaitCursor。但可以获得所需的输出。请指点我礼仪方向。提前谢谢。

从上面的代码来看,您的代码似乎执行以下操作,

  1. 设置等待光标
  2. 创建 Java 进程
  3. 然后关闭进程和线程句柄

它永远不会将正常光标设置回来。因此,即使在完成 java 过程后,您的应用程序也会显示沙漏。

这就是我脑海中的想法,

  1. 在 OnBnClickedDbxPcToCloud() 中设置等待光标
  2. 启动一个新线程,该线程执行以下操作

    2.1) 创建 Java 进程

    2.2)通过调用WaitForSingleObject(piProcessInfo.hProcess)等待java进程完成

    2.3)然后通过向窗口发送自定义消息来通知UI线程。

  3. 在自定义窗口消息处理程序中,您设置了正常值(箭头)光标。

相关内容

最新更新