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

时间:2014-01-08 06:32:01

标签: c++ 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 PC\n 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应用程序处理开始后立即启动等待光标,并希望在应用程序进程完成时结束Wait游标。如何才能做到这一点。我试图实现BeginWaitCursor和EndWaitCursor。但是可以获得所需的输出。请指出我的方向。提前谢谢。

1 个答案:

答案 0 :(得分:1)

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

  1. 设置WAIT光标
  2. 创建java进程
  3. 然后关闭进程和线程句柄
  4. 永远不会将正常光标设置回来。因此,即使在完成Java过程之后,您的应用程序也会显示小时玻璃。

    这就是我的想法,

    1. 在OnBnClickedDbxPcToCloud()
    2. 中设置等待光标
    3. 开始一个执行以下操作的新线程

      2.1)创建java进程

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

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

    4. 在自定义窗口消息处理程序中,您将恢复正常 (箭头)光标。