单击mfc代码中的关系文件时如何获取文件名?

时间:2013-12-19 07:53:12

标签: c++ windows visual-studio-2008 mfc

如何在mfc代码中单击关系文件时获取文件名?

现在,我创建了与文件和执行应用程序的文件关系,

当我点击关系文件将打开应用程序,但我无法获取文件名。

我可以用什么方法获取文件名,哪个函数哪个变量来获取文件名

另一个例子,使用OndropFile,DragQueryFile将得到 文件名保存在strFilePath变量中,如下代码所示;

但我需要点击文件方法,而不是dropfile。

我的申请是MDI。

void CTerchy_CurveViewView::OnDropFiles(HDROP hDropInfo)
{
CString strPath;
WCHAR strFilePath[MAX_PATH];
::DragQueryFile(hDropInfo, 0, strFilePath, sizeof(strFilePath));

strPath = strFilePath;
if(strPath.Right(4) == _T(".GRP") || strPath.Right(4) == _T(".grp") ||
    strPath.Right(5) == _T(".7215") || strPath.Right(5) == _T(".8103"))
{

文件关系设置:

Command: Executing application
Description: None
Extensions:GRP
MIME:"%1"

我找到一个讨论文件关系的网站:File Associations In Visual Studio

  

" Arguments"的默认值是"%1",这意味着传递完整路径   和文件名到您的应用程序。

如何获取文件名?

3 个答案:

答案 0 :(得分:0)

对于SDI,您可以在命令行中获取文件名。在标准应用程序中,您可以使用CCommandLine。文件名存储在那里。

对于MDI应用程序,使用DDE接口,内部框架工作通过DDE打开文件。开放文档

答案 1 :(得分:0)

与MFC CDocument对象关联的文件名可通过CDocument::GetPathName

获得

答案 2 :(得分:0)

好的,谢谢大家,获取文件名的方法,应用程序已经实现, 打开MyAppView.cpp

// 剖析標準 Shell 命令、DDE、檔案開啟舊檔的命令列
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);

/* 檔案關聯開啟的檔名 */
strRelationFile = cmdInfo.m_strFileName;

我明白了。