<!-- Search Google -->
输入您的搜索字词 提交搜索表单
|
<!-- Search Google -->
文件切换功能的原理非常简单,就是首先得到当前文档窗口的文件名称,判断是不是C/C++的类型的文件,然后找到与这个文件对应的代码文件并打开这个文件。查找对应的文件其实就是根据当前文件的扩展名查找对应的代码文件,如果当前文件是.cpp或.c文件,那么就在相应的位置查找同名的.h文件,反之亦然。TabBars插件的C++文件切换功能不仅可以在当前文档所在目录查找对应的文件,还支持多个搜索目录,支持那些讲头文件和cpp文件分开存放的项目。
文件切换首先是得到当前打开的文件名称,Visual Studio的内置组件的IApplication接口有一个属性ActiveDocument,就是当前打开的IGenericDocument文档对象,IGenericDocument对象的FullName属性就是当前文件的全路径名。完整的代码如下:
CComBSTR bStr;
CComPtr<IDispatch> pActiveDocument;
m_pApplication->get_ActiveDocument(&pActiveDocument);
if (pActiveDocument)
{
CComQIPtr<IGenericDocument, &IID_IGenericDocument> pDoc(pActiveDocument);
pDoc->get_FullName(&bStr);
}
接下来就是对FullName名进行分析,得到文件的路径和名称。替换名称中的扩展名就得到了原文件对应的代码文件,然后在当前目录中找这个文件,如果不存在就遍历整个预先定义的搜索路径,在所有的路径下找这个文件。为了简化代码,切换搜索部分总是将当前文件目录作为第一个搜索目录:
i = 0;
BOOL bOpen = FALSE;
while(i < strAExts.GetSize() && !bOpen)
{
k = 0;
while(k < g_strAFlipPath.GetSize() && !bOpen)
{
cFullName.Format(_T("%s%s%s"),g_strAFlipPath[k],cFName,strAExts[i]);
bStr = cFullName;
CComVariant sAuto("Auto"), vFalse(VARIANT_FALSE);
pDocuments->Open(bStr, sAuto, vFalse, &pDisp);
if (pDisp != NULL)
{
bOpen = TRUE;
}
k++;
}
i++;
}
strAExts是对应的扩展名序列,比如对于.c或.cpp文件,它的对应扩展名序列就是.h,.hpp和.hxx,主要是为了兼容不同C++编译器对文件名称的要求。g_strAFlipPath就是搜索目录数组,g_strAFlipPath[0]总是当前目录,对于每一个组合的文件名使用IDocuments对象的Open方法尝试打开,如果打开成功就表示找到对应的文件。这个方法看似很笨,其实实现起来简单,比自己编写代码进行文件搜索要快的多。
分享到:
相关推荐
《数据结构——C++实现》(第二版)课本源代码,内分多个文档
操作系统进程的相关实验——C++代码 操作系统进程的相关实验——C++代码 操作系统进程的相关实验——C++代码 操作系统进程的相关实验——C++代码 操作系统进程的相关实验——C++代码 操作系统进程的相关实验——C++...
数据结构与程序设计——C++语言描述(答案解析) 英文版本 要的下!
数据结构、算法与应用——C++语言描述.rar
[12]优秀程序员之路——C++开发经验及技巧大汇总.zip上位机开发VC串口学习资料源码下载[12]优秀程序员之路——C++开发经验及技巧大汇总.zip上位机开发VC串口学习资料源码下载[12]优秀程序员之路——C++开发经验及...
C++中的雷区——C++内存管理详解C++中的雷区——C++内存管理详解C++中的雷区——C++内存管理详解C++中的雷区——C++内存管理详解
学籍管理系统——C++学籍管理系统——C++学籍管理系统——C++学籍管理系统——C++
动态规划算法——C++实现经典案例——初级
课程的随堂作业,C语言的,用dev就能运行,萌新代码,勿喷,仅仅帮助不想写作业的朋友方便一下,反正老师也不会仔细检查的
面向对象的程序设计语言——C++课件 第二版(陈志泊 )
数据结构与程序设计—— C++描述(高等教育出版社) Bobert L.Kruse Alexander J.Ryba
数据结构——C++描述 数据结构——C++描述数据结构——C++描述
面向对象的程序设计语言——C++ 面向对象的程序设计语言——C++ 面向对象的程序设计语言——C++ 面向对象的程序设计语言——C++
基础知识之一——c++篇.docx
微机作业——c++基础从0到1 微机作业——c++基础从0到1 微机作业——c++基础从0到1 微机作业——c++基础从0到1 微机作业——c++基础从0到1 微机作业——c++基础从0到1 微机作业——c++基础从0到1 微机作业——c++...
socket编程——c语言封装——c++封装(一对一对话).zip
fashionxu.blogchina.com上面的蚁群算法源代码,用C++实现。
王牌9_优秀程序员之路——C++开发经验及技巧大汇总