社区
界面
帖子详情
VC里边打开文件夹
夜雨_倚琴
2007-07-24 11:07:16
各位大哥:
小弟现在要做一个基于命令行的一个程序。
要求可以打开一个文件或者批量的文件,对这些文件进行命令行操作。
所以我用VC做的就是一个截面封装。
可我有2点不大明白。
1,打开文件夹这个怎么来实现?用控件吗?
2,在VC里边如何调用命令行,谢谢!
...全文
2653
11
打赏
收藏
VC里边打开文件夹
各位大哥: 小弟现在要做一个基于命令行的一个程序。 要求可以打开一个文件或者批量的文件,对这些文件进行命令行操作。 所以我用VC做的就是一个截面封装。 可我有2点不大明白。 1,打开文件夹这个怎么来实现?用控件吗? 2,在VC里边如何调用命令行,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
夜雨_倚琴
2007-07-26
打赏
举报
回复
你在上面回答我的问题我表示感谢
但你好象没读懂我的问题.
jhs1982419
2007-07-26
打赏
举报
回复
不需要那么麻烦,我以前做的个打开文件很简单方便,与大家分享下,要结帐哈,呵呵
我这个是打开图像文件并对每一幅图像操作,你可以稍微改下就OK了
void CImageRetrievalDoc::OnImagefilesOpen()
{
// TODO: Add your command handler code here
CImageRetrievalApp* pApp = (CImageRetrievalApp*) AfxGetApp();
CImageRetrievalView* pView =
((CImageRetrievalView* )((CMainFrame* )pApp->GetMainWnd())->GetActiveView());
char path[MAX_PATH];; //用来存储路径的字符串
BROWSEINFO bi;//接收用户所选择的文件夹的参数信息
//ZeroMemory(&bi, sizeof(bi));//清空bInfo在内存中的空间,全部置零
bi.hwndOwner = AfxGetApp()->m_pMainWnd->GetSafeHwnd();//得到对话框父窗口的句柄
//CImageRetrievalApp* pApp = (CImageRetrievalApp*) AfxGetApp();//需要进行类型转换
//bi.hwndOwner = pApp->GetMainWnd()->GetSafeHwnd();//GetMainWnd()所得到的就是m_pMainWnd
bi.pidlRoot = NULL;
bi.pszDisplayName = path;
bi.lpszTitle = _T("请选择进行检索的图像库: ");//在对话框中显示字符
bi.ulFlags = BIF_EDITBOX|BIF_RETURNONLYFSDIRS; //增加一个编辑控件,用户可以在里面直接输入路径条目
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
LPITEMIDLIST pidl; //用来保存返回信息的IDList
pidl = SHBrowseForFolder(&bi) ; //显示一可以使用户选择文件夹的对话框,返回值为LPITEMIDLIST类型
if(pidl != NULL) //用户按了确定按钮
{
//////////////////////////以下是在重新选择图像库时,以前的检索图像全部清空
pView->m_JiShu = 0;
pView->m_Seek_ListCtrl.DeleteAllItems();//以前检索的所有的图像列表全部清空
// pView->Seekimagepath = "";//清空显示图像
pView->Seekimage.load(" null.jpg");
for (int i=0;i<21;i++)//清空最前面图像的显示
{
pView->SelectImage[i].load(" null.jpg");
}
SHGetPathFromIDList(pidl, path);//把项目标识列表转化成字符串
FilePath = path; //将CHAR类型的字符串转换为CString类型的字符串
FilePath += "\\"; //在路径后好加上文件的名字
}
CHAR szFind[MAX_PATH];
lstrcpy(szFind, FilePath);
//lstrcat(szFind, "\\"); //因为在CImageRetrievalDoc::OnImagefilesOpen() 中,
//已经有一句Path += "\\";表示在后面加个
lstrcat(szFind, "*.jpg"); // 找所有jpg文件
//hFind = FindFirstFile(szFind, &FileData);
//if (FindFirstFile(szFind, &FileData) == INVALID_HANDLE_VALUE)
if((pView->hFind = FindFirstFile(szFind, &(pView->FileData))) == INVALID_HANDLE_VALUE)
{
pView->MessageBox("该文件夹中没有jpg图像,请重新选择");
return ;
}
// do
// {
// pView->TempStr[pView->Jishu] = pView->FileData.cFileName;
// pView->Seekimagepath[pView->Jishu] = pView->GetDocument()->FilePath+pView->TempStr[pView->Jishu];
// //将每个图像的路径Seekimagepath传给ondraw函数去重绘图,画出图来
// pView->AllSeekimage[pView->Jishu].load(pView->Seekimagepath[pView->Jishu]);
// pView->Jishu++;
//
// }
// while (FindNextFile(pView->hFind, &(pView->FileData)));
UpdateAllViews(NULL);
}
夜雨_倚琴
2007-07-25
打赏
举报
回复
回答8L的
我所说的命令行操作是指之前已做好的一个执行文件.
但是我现在只是做个界面让用户操作的时候不用敲命令行,举个例子:用户点一个按钮之后我就调用命令行来执行.
你刚才说用 execute()可以是吧,那我44看.
另外,告诉我怎么给分吧,我给你加5分(你回答了我第2个问题)嘿嘿.
夜雨_倚琴
2007-07-24
打赏
举报
回复
CStdioFile file(m_lf.GetPath(),CStdioFile::modeRead);
你是不是写错了,
感觉应该是 :CStdioFile file(fileDlg.m_lf.GetPath(),CStdioFile::modeRead);
feilonghai
2007-07-24
打赏
举报
回复
CString CSadDlg::BrowseFolder(HWND hWnd, LPCTSTR lpTitle)
{
// 调用 SHBrowseForFolder 取得目录(文件夹)名称
// 参数 hWnd: 父窗口句柄
// 参数 lpTitle: 窗口标题
char szPath[MAX_PATH]={0};
BROWSEINFO m_bi;
m_bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;
m_bi.hwndOwner = hWnd;
m_bi.pidlRoot = NULL;
m_bi.lpszTitle = lpTitle;
m_bi.lpfn = NULL;
m_bi.lParam = NULL;
m_bi.pszDisplayName = szPath;
LPITEMIDLIST pidl = ::SHBrowseForFolder( &m_bi );
if ( pidl )
{
if( !::SHGetPathFromIDList ( pidl, szPath ) ) szPath[0]=0;
IMalloc * pMalloc = NULL;
if ( SUCCEEDED ( ::SHGetMalloc( &pMalloc ) ) ) // 取得IMalloc分配器接口
{
pMalloc->Free( pidl ); // 释放内存
pMalloc->Release(); // 释放接口
}
}
return szPath;
}
lnzcyj
2007-07-24
打赏
举报
回复
//这个有用,我刚刚打开过
void CLogView::OnFileOpen()
{
// TODO: Add your command handler code here
CFileDialog fileDlg(TRUE); //有用
fileDlg.m_ofn.lpstrTitle="日志文件打开对话框";//有用
fileDlg.m_ofn.lpstrFilter="log Files(*.log)\0*.log\0All Files(*.*)\0*.*\0\0";//有用
if(IDOK==fileDlg.DoModal())//有用
{
CClientDC dc(this);////处理流程
TEXTMETRIC tm;
dc.GetTextMetrics(&tm); //获取文字大小
RECT rc;
GetClientRect(&rc);
CString csTem;
fileDlg.GetFileName();
CStdioFile file(m_lf.GetPath(),CStdioFile::modeRead);
//file.Open(m_lf._szFileName,CStdioFile::modeReadWrite,NULL);
m_LineNum=0;
while (file.ReadString(csTem))
{
dc.TextOut(0,tm.tmHeight*m_LineNum,csTem);
m_LineNum++;
}
UpdateData(FALSE);
}
}
夜雨_倚琴
2007-07-24
打赏
举报
回复
呵呵
刚刚找了下,就是用CFileDialog可以实现对文件的打开,保存,分析等。
至于下面的在VC里边调用命令行,暂时还不知道怎么搞。
go_baby
2007-07-24
打赏
举报
回复
雖然我認真讀了三遍,可是我還是不知道你說的啥意思呀,大哥.
不過幫你頂一下哈.
xuxingok
2007-07-24
打赏
举报
回复
可以考虑用.bat对文件进行批处理~
emptyness
2007-07-24
打赏
举报
回复
个基于命令行的一个程序。
让使用者敲命令,想说的应该是控制台程序吧.
----------------------------------------
对这些文件进行命令行操作。
什么操作是命令行操作?
命令行操作系统不是给了么?
---------------------------
解答下吧LZ..
execute()可以调用,也可以指示显示不显示cmd....
直接使用cmd的命令不好么?
del copy copyx ...................
ccgxg
2007-07-24
打赏
举报
回复
CFileDialog
VC
中常见问题
(3) 为什么我的
VC
6.0自动显示成员列表功能时有时无? 删除该项目扩展名为.ncb文件,重新打开该项目。 (4)孙老师的视频教程第一课的程序,为什么在我机子上不行? 选菜单project->settings...在弹出的对话框中选...
asp.net知识库
技术基础 New Folder 多样式星期名字转换 [Design, C#] .NET关于string转换的一个小Bug Regular Expressions 完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 ...
用
VC
#.NET开发交互式CAD系统
用
VC
#.NET开发交互式CAD系统,包括结合GDI+和OPENGL两种方案。 联系平台客服可开发票。
vs2013 MFC
打开文件
或文件
夹
对话框(有图有真相)
vs2013环境要求比
vc
6.0严格些。以前的代码不能直接拿来用,做了些修改。有效果图。
C++: Visual Studio 向工程中添加文件
夹
C++工程中,Visual Studio 向工程中添加文件
夹
界面
15,978
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章