怎样做到双击后打开一个文件?

xzou 2000-08-18 06:01:00
我最近作了一个简单的察看某种格式文件的浏览器,假设文件后缀为*.xxx,我怎样才能使以这样后缀结尾的文件以我的浏览器为默认浏览器,另外,怎样在双击文件时得到他的全名,因为我显示文件内容的前提是先知道它的文件名。
...全文
592 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzou 2000-08-25
  • 打赏
  • 举报
回复
谢谢各位,可惜分太少了,可能分赃不均。
Holly 2000-08-21
  • 打赏
  • 举报
回复
因为WriteProfileString是MFC包装在CWinApp的应用程序注册函数之一,其只能根据应用程序中保存的主键在其子键中增改信息。
你需要自己打开注册表建立HKEY与要写的地方对应,简单的方法是用MFC的CRegKey类,高兴的话也可以用API来写,也没有很麻烦查找RegOpenKeyEx及其相关的函数就可。
****问题是????*********
如果你只是支持一种文件扩展名的话是不需要编程或手工修改注册表的,只需在资源文件中将文档的字符串信息填写完整即可!!
************************
xzou 2000-08-21
  • 打赏
  • 举报
回复
正如大家所言,我已经取得了文件名,但无法用WriteProfileString在注册表的HKEY_CLASSES_ROOT内写入shines告诉的内容,好像WriteProfileString只能写在HKEY_CURRENT_USER\SOFTWARE\,有谁指点一下。
Holly 2000-08-20
  • 打赏
  • 举报
回复
怎么!没有看明白我的上一个帖子?
你只要重载CWinApp::OpenDocumentFile()函数,就不用管文件名从双击来的还是命令行来得到的,而且是全路径!
wxz 2000-08-20
  • 打赏
  • 举报
回复
双击文件名时,文件所在目录即被设置位当前目录,在程序里可以用API函数
DWORD GetCurrentDirectory(
DWORD nBufferLength, // size, in characters, of directory buffer
LPTSTR lpBuffer // address of buffer for current directory
)
获取当前目录,加上文件名即可得到他的全名
Maxwell 2000-08-19
  • 打赏
  • 举报
回复
如shines所言,然后当你的程序被启动时,在命令行上就有完整的文件名.
xzou 2000-08-19
  • 打赏
  • 举报
回复
请问各位,怎样在双击文件时得到他的全名并将文件名传给我的程序知道?
Holly 2000-08-18
  • 打赏
  • 举报
回复
补充:文件名是系统通过DDE调用你的OpenDocumentFile(LPCTSTR lpfilename)时传递给你的;当然前提是你使用MFC缺省的处理方式;实际上也可以处理命令行参数象Un1提到的;
Holly 2000-08-18
  • 打赏
  • 举报
回复
Shines的方法正确!
vcbeginner的方法是有限的,只适合一种类型扩展名文档的打开,如果同时支持多种的话,就需要继承MFC中的CDocManager重载修改MatchDocType()函数;
vcbeginner 2000-08-18
  • 打赏
  • 举报
回复
>>
这是MFC的标准功能,更本不用些一行代码。
>>
shines77 2000-08-18
  • 打赏
  • 举报
回复
在注册表里登记相应的关联就行。

首先在HKEY_Class_Root\.123写入 (默认)串值(REG_SZ)为 "123file";

然后在HKEY_Class_Root\123file\Shell\Open\Command写入,(默认)串值为"abc.exe %1"。
(注意串值的类型)

假设你的文件类型为*.123,浏览器的执行程序为abc.exe,路径为C:\Windows 或者 C:\Windows\System,如果不是在系统目录 "abc.exe %1" 应改为 "C:\..你的浏览器的目录..\abc.exe %1"。
Un1 2000-08-18
  • 打赏
  • 举报
回复
command line

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧