MFC 进度条显示问题 mfc进度条 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 就是说如果完全是exe格式的程序,就不能显示这个程序的进度了? 你的程序做成控制台吧,带有回显消息的,回显消息显示进度之类的信息,然后你的MFC程序以无窗口模式启动它,再创建一个pipe管道去提取回显的进度,将回显的进度反映到MFC进度条上,前提是你的视频分析程序必须是console类型的下面是代码,希望能给你些启示:CString getEach(char *cmd){ LPTSTR lpsz = (LPTSTR)(LPCTSTR)CString((char*)cmd); SECURITY_ATTRIBUTES sa; HANDLE hRead,hWrite; sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor = NULL; sa.bInheritHandle = TRUE; if (!CreatePipe(&hRead,&hWrite,&sa,0)) { MessageBox(NULL, "text",_T("Error on CreatePipe()!"), MB_OK); return " "; } STARTUPINFO si; PROCESS_INFORMATION pi; si.cb = sizeof(STARTUPINFO); GetStartupInfo(&si); si.hStdError = hWrite; si.hStdOutput = hWrite; si.wShowWindow = SW_HIDE; si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; if (!CreateProcess(NULL,lpsz,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)) { MessageBox(NULL,"test", _T("Error on CreateProcess()!"),MB_OK); return " "; } CloseHandle(hWrite); char buffer[4096]; memset(buffer,0,4096); DWORD byteRead; CString eachstring; //获取命令行数据 while(true) { if (ReadFile(hRead,buffer,4095,&byteRead,NULL) == NULL) { break; } eachstring+=CString(buffer); Sleep(1); } return eachstring;}这里cmd参数这样传 "cmd /c C:/video.exe" 绿色是你的视频分析exe 问题的关键是:只知道exe程序,不知道内部运行机制,还有这个视频分析程序不是简单的播放,是分析这个视频有没有被编码过?所以....我估计显示进度就很难办到了 在主框架上右键菜单的问题 交个朋友 vc开发的程序可以独立运行吗 VC.net 的单选控件默认选择问题 CSocket在Receive的时候block过长时间,如何让设置它超时返回一个SOCKET_ERROR? 句柄应该在什么时候关闭? 100分相送! 本人刚学VC,不知道该从什么开始学起给点建议! 小女求助!VC++6中如何通过编程创建"*.mdb"格式的数据库文件以及创建表? 怎样在VC程序中调用TC编译器? VC怎么总是编译所有的文件?--help 求一个能播放gif的类 软件开发与反腐
CString getEach(char *cmd)
{
LPTSTR lpsz = (LPTSTR)(LPCTSTR)CString((char*)cmd);
SECURITY_ATTRIBUTES sa;
HANDLE hRead,hWrite;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hRead,&hWrite,&sa,0))
{
MessageBox(NULL, "text",_T("Error on CreatePipe()!"), MB_OK);
return " ";
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hWrite;
si.hStdOutput = hWrite;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
if (!CreateProcess(NULL,lpsz,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
MessageBox(NULL,"test", _T("Error on CreateProcess()!"),MB_OK);
return " ";
} CloseHandle(hWrite); char buffer[4096];
memset(buffer,0,4096);
DWORD byteRead;
CString eachstring; //获取命令行数据
while(true)
{
if (ReadFile(hRead,buffer,4095,&byteRead,NULL) == NULL)
{
break;
}
eachstring+=CString(buffer);
Sleep(1);
}
return eachstring;
}
这里cmd参数这样传 "cmd /c C:/video.exe" 绿色是你的视频分析exe
所以....我估计显示进度就很难办到了