我正在开发一个应用程序,我在我的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。但是可以获得所需的输出。请指出我的方向。提前谢谢。
答案 0 :(得分:1)
从上面的代码看,您的代码似乎执行以下操作,
永远不会将正常光标设置回来。因此,即使在完成Java过程之后,您的应用程序也会显示小时玻璃。
这就是我的想法,
开始一个执行以下操作的新线程
2.1)创建java进程
2.2)通过调用WaitForSingleObject(piProcessInfo.hProcess)等待java进程完成
2.3)然后通过向窗口发送自定义消息来通知UI线程。
在自定义窗口消息处理程序中,您将恢复正常 (箭头)光标。