-
-
[原创]VC6插件FileTool的一点改进
-
发表于:
2014-9-24 19:04
10421
-
作为VC6的老用户,始终还是感觉这个IDE最顺手,而且完全能够满足自己的需要,所以只在必要的时候才用VS2010什么的。。。
但是如今进入Win7后时代,VC6依然可以用,但是有点小问题,如果你同时安装了Office 2007及以上版本,那么会导致其中的“打开”和“添加文件到工程”居然用不了,直接就崩溃掉。。。
MS根据用户的反馈,提供了一个AddIn小插件,名字就做FileTool,用它来替代原来的菜单功能
这下虽然基本解决了添加文件的问题,但是这个插件有一点不足,就是打开文件的对话框没有指定初始路径,导致要来回翻半天才到当前工程目录,非常麻烦
为了用得更爽一点,遂决定改造一下FileTool,在它打开文件时指定初始路径
但是需要先得到当前活动工程的工作路径,这个一下难到我了,真是费了好大劲才找到一些资料
好不容易修改完成,用起来感觉还不错,分享给需要的人吧,相信还在用VC6的不在少数。。。。反正俺们都不怎么写界面的。。。
主要代码如下:
获取当前工程的路径:
m_pDispatch=NULL;
hr=m_pApplication->get_ActiveProject(&m_pDispatch);
if(FAILED(hr))
{
AfxMessageBox("Unable to obtain the ActiveProject pointer");
return S_FALSE;
}
CComQIPtr<IGenericProject, &IID_IGenericProject> m_ActiveProject(m_pDispatch);
CComBSTR type;
hr=m_ActiveProject->get_Type(&type);
if(FAILED(hr))
{
AfxMessageBox("Unable to obtain the ActiveProject type");
return S_FALSE;
}
CComBSTR bstrPrjPath;
CString strPrjPath;
[COLOR="Red"][B]m_ActiveProject->get_FullName(&bstrPrjPath);[/B][/COLOR]
strPrjPath = bstrPrjPath ;
然后将取到的路径截断成目录的形式
int nPos = strPrjPath.ReverseFind('\\');
strPrjPath.SetAt(nPos,'\0');
指定选择文件对话框的起始路径:
AddFiles.m_ofn.lpstrInitialDir = strPrjPath ; //这里指定一下初始目录
附件提供修改过的完整工程源码和一个编译好的Bin,需要的直接拿去用~~
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)