MFC程序与文件关联

之前转载过一篇这方面的文章:VC中建立程序的关联文件【http://www.mydreamsky.tk/?p=906】,但发现用上面的方法,虽然能建立程序与文件的关联,但一旦我们的程序放在另一个目录了,就会出去很多问题。因此想从注册表的角度上来解决这个问题,因为程序关联其实就是在注册表上进行操作的。网上找了下,已经有前辈在这方面做了不少工作,甚至还有人已经将整个操作封装成了一个很好调用的类。
那个类的下载:http://download.csdn.net/detail/viviwen123/4359353。用法上面有。
再贴一段在程序中具体使用的例子:

void CDlgInstall::OnBnClickedButtonConnectapk()
{
CRegRelateExt RegRelateExt;
BOOL sign=true;
sign=RegRelateExt.Delete(“.apk”);// 删除.apk与任何程序的关联
CString appPath = “”;
AfxGetModuleFileName(theApp.m_hInstance,appPath);
CString appName = theApp.m_pszAppName;
appName += “.exe”;
CString mPath = appPath.Left(appPath.Find(appName));
CString currentExe=mPath+appName+” %1″;
sign=RegRelateExt.Set(“.apk”,currentExe);
if (sign)
{
MessageBox(“设置关联成功!”);
}
else
{
MessageBox(“设置关联失败!”);
}
}

至于在程序初始化InitInstance()时如何接收参数进行处理,就看《VC中建立程序的关联文件》【http://www.mydreamsky.tk/?p=906】这篇文章了,上面有介绍。此外,VC中建立程序的关联文件的时候不能是对话框程序,但如果想做成对话框程序的效果也是可以的,只需要在InitInstance()里未创建程序主界面之前弹出我们要显示的对话框,然后在退出对话框时return false,退出程序即可。

你可能感兴趣的:(MFC程序与文件关联)