在vc里怎样弹出打开方式对话框
如题,我想打开某一个文件,但是该文件的类型不确定,所以我想弹出windows自己的对话框让用户自己选择用什么程序打开该文件。不知我的表达大家清不清楚,谢谢 问题点数:20、回复次数:12Top
1 楼fanqing(火影忍者+28%(准备学习进程/线程))回复于 2005-02-19 17:05:14 得分 0
CFileDialogTop
2 楼huangjianglanff()回复于 2005-02-19 17:10:45 得分 0
CFileDialog
是用户选择打开文件吧
我是要用户选择用什么程序打开文件Top
3 楼huangjianglanff()回复于 2005-02-19 17:12:32 得分 0
类似于下面的问题:
在 windows 下,如果我们双击一个文件时,如果相应的文件链接存在,windows 会调用相应的程序来打开该文件,如果找不到相应文件,windows 会显示出一个“打开方式”的服务器程序列表对话框供选择,现在问题是:
我想在程序中调用这个“打开方式”对话框,怎样实现?
Top
4 楼krh2001(边城浪子)回复于 2005-02-19 18:00:40 得分 20
ShellExecute()Top
5 楼webfpc(人人)回复于 2005-02-19 18:43:39 得分 0
等待,我是初学者Top
6 楼huangjianglanff()回复于 2005-02-23 11:30:47 得分 0
ShellExecute()
能说得具体点吗?Top
7 楼handwolf(青松崖)回复于 2005-02-23 12:09:58 得分 0
分享给你一个函数,现在很少有人用这个了, 但是很好,是api。
//select file dialog
BOOL SelBMPFile(TCHAR* lpstrFilename) // open an file dialog to sel a bmp file
{
OPENFILENAME ofn;
//设定文件的名称储存空间
//TCHAR lpstrFilename[MAX_PATH] = "";
//清空OPENFILENAME
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(OPENFILENAME);//lStructSize的返回值是是76
//设定父窗口
ofn.hwndOwner = NULL;
///设定打开文件的类型
ofn.lpstrFilter = "";
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFile=lpstrFilename;
if (!GetOpenFileName(&ofn))
return FALSE;
return TRUE;
}
调用方法:
TCHAR lpstrFilename[MAX_PATH] = "";
BOOL rlt = SelBMPFile(lpstrFilename);
如果rlt 为TRUE,则文件名(路径)在参数lpstrFilename中。Top
8 楼handwolf(青松崖)回复于 2005-02-23 12:10:53 得分 0
函数名称你可以改一下,我以前是专门为了选bmp文件的Top
9 楼krh2001(边城浪子)回复于 2005-02-24 21:54:07 得分 0
ShellExecute(NULL, NULL, "rundll32.exe","shell32.dll,OpenAs_RunDLL \"e:\\aaa.abc\"", NULL, SW_SHOW);
这样执行ShellExecute,将弹出文件e:\aaa.abc的打开方式对话。很简单吧 :)Top
10 楼krh2001(边城浪子)回复于 2005-02-24 21:57:40 得分 0
注意OpenAs_RunDLL与后面部分用空格分开,这里显示的不清楚。文件名最好象上面一样用引号引起来,这样可以处理带空格的路径Top
11 楼jiangsheng(蒋晟.Net[MVP])回复于 2005-02-25 07:22:13 得分 0
http://www.codeguru.com/forum/showthread.php?p=761654Top
12 楼huangjianglanff()回复于 2005-03-03 16:38:02 得分 0
我试了krh2001(边城浪子) 的方法,不用加引号可以,但是加引号不行,不知何故
但总算是解决了,谢谢所有得人Top




