Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Windows:打开命名文档_C++_Winapi - Fatal编程技术网

C++ Windows:打开命名文档

C++ Windows:打开命名文档,c++,winapi,C++,Winapi,我正在尝试扩展一个名为的现有应用程序,它可以编辑MP4电影文件的元数据。。我希望能够将文件拖放到它上面,但它不支持。我已经做了足够多的工作,能够在删除“剪贴板”数据时对其进行解码,并对其进行过滤,以便只接受我可以处理的文件(扩展名)。(但我几乎不知道winapi/C++,所以它完全是货物崇拜。) 但是现在我想触发打开文档,它的(文件)名在TCHAR中。我被卡住了。当我通过拖放操作知道文件名时,如何触发与“文件>打开”对话框相同的操作?通常,“文件>打开”对话框只允许用户选择文件名。然后,它会将这

我正在尝试扩展一个名为的现有应用程序,它可以编辑MP4电影文件的元数据。。我希望能够将文件拖放到它上面,但它不支持。我已经做了足够多的工作,能够在删除“剪贴板”数据时对其进行解码,并对其进行过滤,以便只接受我可以处理的文件(扩展名)。(但我几乎不知道winapi/C++,所以它完全是货物崇拜。)


但是现在我想触发打开文档,它的(文件)名在TCHAR中。我被卡住了。当我通过拖放操作知道文件名时,如何触发与“文件>打开”对话框相同的操作?

通常,“文件>打开”对话框只允许用户选择文件名。然后,它会将这个文件名返回给程序员,以进行处理

但是,在本例中,您正在修改现有的应用程序,因此代码已经编写好了。要找到它,您需要搜索显示文件->打开对话框的方法。查看他们如何处理“打开”对话框返回的文件名

打开文件的所有逻辑很可能被塞进显示文件->打开对话框的方法中。如果是这样,我要做的就是重构代码,这样您就有了一个单独的方法,比如

void OpenFile(CString pszFileName, /* other important parameters */)
{
    // ...
}

处理打开文件的操作,该文件由包含其完整路径的字符串指定。从“文件->打开”对话框中获取文件名后,以及从其他位置(例如从拖放操作中获取文件名后)将调用此方法。

与链接存储库中一样:AFAICT有一个默认的OnFileOpen实现(该标识符在代码中的其他位置不显示)连接BEGIN_MESSAGE_MAP?默认的
OnFileOpen
实现调用
CWinApp::OpenDocumentFile
,一旦它有了要打开(记录)的文件名。因此,您可以调用相同的方法。首先检查它是否在派生应用程序类中被重写。如果是,则调用派生方法@阿兰