我正在开发一个应用程序,我正在从我的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。但可以获得所需的输出。请指点我礼仪方向。提前谢谢。
从上面的代码来看,您的代码似乎执行以下操作,
- 设置等待光标
- 创建 Java 进程
- 然后关闭进程和线程句柄
它永远不会将正常光标设置回来。因此,即使在完成 java 过程后,您的应用程序也会显示沙漏。
这就是我脑海中的想法,
- 在 OnBnClickedDbxPcToCloud() 中设置等待光标
-
启动一个新线程,该线程执行以下操作
2.1) 创建 Java 进程
2.2)通过调用WaitForSingleObject(piProcessInfo.hProcess)等待java进程完成
2.3)然后通过向窗口发送自定义消息来通知UI线程。
-
在自定义窗口消息处理程序中,您设置了正常值(箭头)光标。