1

实际上,我不知道我的问题的标题是什么,所以我无法在谷歌上搜索,首先我需要知道对这个问题说什么。

好吧,我在 Visual Studio C++ 2010 中开发了一个应用程序,其中可以处理 3D 对象,所以有一个名为 Import Model 的函数可以帮助导入模型。

我想要的是,用户只需右键单击对象并使用 [应用程序名称] 按打开或双击它,应用程序应该获取该文件的路径并调用导入函数。就像我们对任何 MS word *.doc 文件所做的一样,我们双击它并打开它。

我希望同样的事情使我的软件作为默认程序来打开某些特定的文件扩展名。当用户双击模型时,它应该在我的应用程序中打开。

实际上,我读过一些关于参数解析器的东西,我对此知之甚少。这是我需要寻找的吗?

谢谢。

更新1:

它正在工作 Benjamin Lindley 和其他人,但在启动应用程序之前我收到以下错误。该参数仅通过 FLTK 窗口。我不知道这个窗口是从哪里来的?甚至没有关于这些图像选项.. 请看下面的图片......

在此处输入图像描述

4

2 回答 2

3

您需要文件关联,例如在.bat文件中:

@ASSOC .3D=3DObject.File
@FTYPE 3DObject.File="C:\MyProjects\Release\myprog.exe" "%%1" %%*

这使用注册表配置单元HKEY_CLASSES_ROOT,您可能需要对其进行写访问,因此“以管理员身份运行”。

编辑:作为程序员,您可以使用注册表 API(RegCreateKeyExRegSetValueEx等)将关联添加到HKEY_CLASSES_ROOT自己,但可能不值得付出努力,因为它可能只需要一次。

于 2012-12-31T12:21:03.340 回答
2

正如评论和答案中提到的,“文件关联”是题外话(在我看来),并且可能属于Super User。但是作为程序员,你需要做什么?好吧,当有人双击与您的程序关联的文件时,文件名作为您的 main 函数的参数出现,您可以随意处理它:

int main(int argc, char** argv)
{
    // the name file that was used to open your program is stored in argv[1]
    if (argc == 2)
        DoSomethingWithFile(argv[1])
}
于 2012-12-31T12:25:59.227 回答