C++ Windows:打开命名文档
我正在尝试扩展一个名为的现有应用程序,它可以编辑MP4电影文件的元数据。。我希望能够将文件拖放到它上面,但它不支持。我已经做了足够多的工作,能够在删除“剪贴板”数据时对其进行解码,并对其进行过滤,以便只接受我可以处理的文件(扩展名)。(但我几乎不知道winapi/C++,所以它完全是货物崇拜。)C++ Windows:打开命名文档,c++,winapi,C++,Winapi,我正在尝试扩展一个名为的现有应用程序,它可以编辑MP4电影文件的元数据。。我希望能够将文件拖放到它上面,但它不支持。我已经做了足够多的工作,能够在删除“剪贴板”数据时对其进行解码,并对其进行过滤,以便只接受我可以处理的文件(扩展名)。(但我几乎不知道winapi/C++,所以它完全是货物崇拜。) 但是现在我想触发打开文档,它的(文件)名在TCHAR中。我被卡住了。当我通过拖放操作知道文件名时,如何触发与“文件>打开”对话框相同的操作?通常,“文件>打开”对话框只允许用户选择文件名。然后,它会将这
但是现在我想触发打开文档,它的(文件)名在TCHAR中。我被卡住了。当我通过拖放操作知道文件名时,如何触发与“文件>打开”对话框相同的操作?通常,“文件>打开”对话框只允许用户选择文件名。然后,它会将这个文件名返回给程序员,以进行处理 但是,在本例中,您正在修改现有的应用程序,因此代码已经编写好了。要找到它,您需要搜索显示文件->打开对话框的方法。查看他们如何处理“打开”对话框返回的文件名 打开文件的所有逻辑很可能被塞进显示文件->打开对话框的方法中。如果是这样,我要做的就是重构代码,这样您就有了一个单独的方法,比如
void OpenFile(CString pszFileName, /* other important parameters */)
{
// ...
}
处理打开文件的操作,该文件由包含其完整路径的字符串指定。从“文件->打开”对话框中获取文件名后,以及从其他位置(例如从拖放操作中获取文件名后)将调用此方法。与链接存储库中一样:AFAICT有一个默认的OnFileOpen实现(该标识符在代码中的其他位置不显示)连接BEGIN_MESSAGE_MAP?默认的
OnFileOpen
实现调用CWinApp::OpenDocumentFile
,一旦它有了要打开(记录)的文件名。因此,您可以调用相同的方法。首先检查它是否在派生应用程序类中被重写。如果是,则调用派生方法@阿兰