1、Imports SystemImports EnvDTEImports EnvDTE80Imports EnvDTE90Imports System.DiagnosticsPublic Module COMMENTFunction StripTabs(ByVal MyStr)Do While InStr(MyStr, vbTab) 0 ThenfcName = Left(Header, Loc)Header = Right(Header, Len(Header) - Len(fcName)Trim(fcName)得到函数名称Do While InStr(fcName, “ “) 0 ThenR
2、etTp = LTrim(Right(RetTp, Len(RetTp) - Len(“virtual“)End If去掉 inlineIf InStr(RetTp, “inline“) 0 ThenRetTp = LTrim(Right(RetTp, Len(RetTp) - Len(“static“)End IfiPrm = 0iPrmA = 0prms = HeaderDo While InStr(prms, “,“) 0 TheniPrm = iPrm + 1iPrmA = iPrmReDim ParamArr(iPrm)Do While InStr(Header, “,“) 0 Th
3、enParamArr(iPrm) = Right(ParamArr(iPrm), _Len(ParamArr(iPrm) - InStr(ParamArr(iPrm), “ (“)Trim(ParamArr(iPrm)End IfHeader = Right(Header, Len(Header) - InStr(Header, “,“)iPrm = iPrm - 1LoopParamArr(iPrm) = HeaderIf InStr(ParamArr(iPrm), “)“) 1 ThenParamArr(1) = Left(ParamArr(1), InStr(ParamArr(1), “
4、)“) - 1)Trim(ParamArr(1)iPrmA = 1If ParamArr(1) = “void“ TheniPrmA = 0End IfEnd IfEnd IfIf ActiveDocument.Selection.CurrentLine 0 ThenActiveDocument.Selection.text = “* brief “ + fcName + “ “Else为构造函数If InStr(fcName, “) 0If InStr(ParamArr(iPrmA), vbLf) 1 ThenParamArr(iPrmA) = Right(ParamArr(iPrmA),
5、Len(ParamArr(iPrmA) - 1)End IfActiveDocument.Selection.NewLine()首先判断参数列表中有没有=号,如果有,则等号左边为参数名,右边为默认值。Dim defautValueIf InStr(ParamArr(iPrmA), “=“) 0defautValue = Right(defautValue, Len(defautValue) - InStr(defautValue, “ “)LoopDo While InStr(ParamArr(iPrmA), “ “) 0 ThenActiveDocument.Selection.text =
6、 “* paramin “ + LTrim(ParamArr(iPrmA) + “ Defaults to “ + Trim(defautValue) + “.“ElseActiveDocument.Selection.text = “* paramin “ + LTrim(ParamArr(iPrmA) + “ “End IfiPrmA = iPrmA - 1LoopActiveDocument.Selection.NewLine()If Len(Trim(RetTp) 0 And Trim(RetTp) 1 ThenActiveDocument.Selection.GoToLine(Act
7、iveDocument.Selection.CurrentLine - 1)ActiveDocument.Selection.MoveTo(ActiveDocument.Selection.CurrentLine, 0)ActiveDocument.Selection.EndOfLine()ActiveDocument.Selection.NewLine()End IfActiveDocument.Selection.text = “/*“ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* file “ +
8、ActiveDocument.NameActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* brief “ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* author *“ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* date “ActiveDocument.Selection.text = DateTime.Today + “ “
9、 + TimeOfDayActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* version “ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* copyright: “ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* email: *“ActiveDocument.Selection.NewLine()ActiveDocument.Se
10、lection.text = “* company: http:/“ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* All rights reserved.“ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* modification:“ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* Write modifications here
11、.“ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “*/“If InStr(ActiveDocument.Name, “.“) 0 ThenIf Right(ActiveDocument.Name, Len(ActiveDocument.Name) - InStr(ActiveDocument.Name, “.“) = “h“ _Or Right(ActiveDocument.Name, Len(ActiveDocument.Name) - InStr(ActiveDocument.Name, “.“) =
12、“hpp“ _Or Right(ActiveDocument.Name, Len(ActiveDocument.Name) - InStr(ActiveDocument.Name, “.“) = “hh“ ThenDim defdef = “_“ + UCase(Left(ActiveDocument.Name, InStr(ActiveDocument.Name, “.“) - 1) _+ “_“ + Right(ActiveDocument.Name, Len(ActiveDocument.Name) - InStr(ActiveDocument.Name, “.“)ActiveDocum
13、ent.Selection.NewLine()ActiveDocument.Selection.text = “#ifndef “ + defActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “#define “ + defActiveDocument.Selection.NewLine()ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “#endif “ActiveDocument.Selection.NewLine()End
14、IfIf Right(ActiveDocument.Name, Len(ActiveDocument.Name) - InStr(ActiveDocument.Name, “.“) = “c“ _Or Right(ActiveDocument.Name, Len(ActiveDocument.Name) - InStr(ActiveDocument.Name, “.“) = “cpp“ ThenDim defdef = “#include “ + Chr(34) + Left(ActiveDocument.Name, InStr(ActiveDocument.Name, “.“) + “h“
15、+ Chr(34)ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = defActiveDocument.Selection.NewLine()End IfEnd IfEnd Sub生成 doxygen样式的项目编号描述Public Sub ItemDescription()ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “/*“ActiveDocument.Selection.NewLine()ActiveDocument.Sel
16、ection.text = “* “ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* - “ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* -# “ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* -# “ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text
17、= “* - “ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* -# “ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* -# “ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “*/“End Sub生成 doxygen样式模块描述Sub ModuleDescription()ActiveDocument.Selection.NewLi
18、ne()ActiveDocument.Selection.text = “/*“ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* defgroup “ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* brief “ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* “ActiveDocument.Selection.NewLine()A
19、ctiveDocument.Selection.text = “* Detailed description.“ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* “ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “*/“ActiveDocument.Selection.NewLine()ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “/*
20、*/ “End Sub生成 doxygen样式类描述Sub ClassDescription()Dim classNameDim StartLineclassName = ActiveDocument.Selection.textIf Len(className) 1 ThenActiveDocument.Selection.MoveTo(StartLine - 1, 0)ActiveDocument.Selection.EndOfLine()ActiveDocument.Selection.NewLine()End IfIf InStr(className, “class“) 0 Thenc
21、lassName = LTrim(Right(className, Len(className) - Len(“class“)End IfIf InStr(className, “:“) 0 ThenclassName = Trim(Left(className, InStr(className, “:“) - 1)ElseclassName = Trim(className)End IfActiveDocument.Selection.text = “/*“ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “*
22、 class “ + classNameActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* brief “ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* “ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* Detailed description.“ActiveDocument.Selection.NewLine()ActiveDoc
23、ument.Selection.text = “*/“End IfEnd Sub生成 doxygen样式组描述Sub GroupDescription()ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “/*“ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* name “ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* brief “Ac
24、tiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* “ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* Detailed description.“ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “* “ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “*/“ActiveDocument.Selection.NewLine()ActiveDocument.Selection.NewLine()ActiveDocument.Selection.text = “/* */“End SubEnd Module