MDI程序中传入参数问题

qiek 2005-06-07 12:39:04
已经为自定义的格式(如*.myf)文件建立了关联,在双击abc.myf文件后,启动程序也成功了,但是用GetCommandLine();得到的字符串中并没有abc.myf这个文件名啊,只有"...\my.exe /dde",我如何才能得到abc.myf这个文件名?
用重载CCommandLineInfo::ParseParam(const TCHAR* pszParam,BOOL bFlag,BOOL bLast);或CWinApp::GetCommandLine();的方法都不行。
...全文
130 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiek 2005-06-07
  • 打赏
  • 举报
回复
检查发现我采用的文件关联方式有问题,为什么这么说呢,因为在注册表中[HKEY_CLASSES_ROOT\MyApp.Document\shell\open\command]
@="...\\Debug\\MyApp.exe /dde" 应该是 "...MyApp.exe %1"的。

但是我用的是MFC自身的关联机制啊。就是String Table表中

IDR_MYAPPTYPE \n新建文档\nNew Section\nMyApp 文件 (*.myf)\n.myf\nMyApp.Document\nMyApp Document

在CMyApp::InitInstance()中加入:

EnableShellOpen();
RegisterShellFileTypes(TRUE);

哪一点我忽略了呢?请教高手。
Atomictry 2005-06-07
  • 打赏
  • 举报
回复
用csdn的全文检索有一大堆,如果真的不行自己写注册表。 ^_^
qiek 2005-06-07
  • 打赏
  • 举报
回复
谢谢krh2001(边城浪子)指教,茅厕顿开!
Atomictry 2005-06-07
  • 打赏
  • 举报
回复
没用过,RegisterShellFileTypes用默认的(FALSE)看看。
文件关联:
EnableShellOpen();
RegisterShellFileTypes();
qiek 2005-06-07
  • 打赏
  • 举报
回复
经再次深入研究发现:用以上方式建立的文件关联应该是正确的,因为它在注册表中也建立了如下分支:
[HKEY_CLASSES_ROOT\MyApp.Document\shell\open\ddeexec]
@="[open(\"%1\")]"

所以现在的问题就是如何得到这个"%1"了!
jerry 2005-06-07
  • 打赏
  • 举报
回复
这个打开是通过 DDE 来进行的呀.
这个命令行不带文件名的. 反正不管怎么样, 最后打开文件还是会调用
CWinApp::OpenDocumentFile(LPCTSTR lpszFileName);
来执行打开动作的, 你可以重载这个函数来定制你的文件打开方式

16,548

社区成员

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

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

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