VS2010编写自定义宏注释

来源:互联网 发布:python datetime函数 编辑:程序博客网 时间:2024/04/29 16:38

一部分引自:http://blog.csdn.net/ajioy/article/details/8483011

这里所说的宏可不是指#define PI 3.14159之类的,而是按下Alt + 1,Alt + 2之类的键盘组合之后可以方便地插入一大串自定义的内容,如:

[cpp] view plaincopy
  1. /******************************************************************* 
  2. * 函数名称: 
  3. * 功    能: 
  4. * 参    数: 
  5. * 返 回 值:void 
  6. * 创 建 人:Ajioy 
  7. * 博    客:blog.csdn.net/ajioy 
  8. * 电子邮箱:ajioy1206@gmail.com 
  9. * 日    期:2013.1.8 21:18 
  10. *******************************************************************/  


这在团队开发中显得尤为重要,当然,在网络上发布源代码时也起到一个简单地版权声明作用,而不需要人为地花时间编写及排版,减少了许多繁琐而不必要的工作。

简单地了解一下,这里谈的宏(Macro)是开发工具VS2010(或VS的其它版本)自带的,一种方便开发人员进行注释、版权声明或者执行其他若干琐碎工作的“小机器人”。重复、不辞劳苦地为我们做一些不可缺少的小事。总之,有它的存在,生活更美好。

怎样自己写一个宏?

1.打开VS2010(或VS的其它版本),“Tools” -->  "Macros"--->"Macros IDE...(Alt + F11)" 打开宏IDE

2.在宏IDE的工具栏中"Project"->"Add Module"(或Add New Item)->Name:AjioyMacros--->"Add"

3.将初始内容替换成以下代码

[cpp] view plaincopy
  1. Imports System  
  2. Imports EnvDTE  
  3. Imports EnvDTE80  
  4. Imports EnvDTE90  
  5. Imports EnvDTE90a  
  6. Imports EnvDTE100  
  7. Imports System.Diagnostics  
  8. Imports System.Text  
  9. Imports System.Text.RegularExpressions  
  10. Imports System.IO  
  11. Imports System.Collections.Specialized  
  12.   
  13. Public Module AjioyMacros'这里要与保存的Module名保持一致,不然无法调用宏  
  14.     Sub AddMessageBox()  
  15.         'DESCRIPTION 增加对话框  
  16.         ActiveDocument.Selection.Text = "MessageBox("""",""提示"");" + vbNewLine + "system(""pause"");"  
  17.     End Sub  
  18.     Sub AddStartComment()  
  19.         'DESCRIPTION 注释开始  
  20.         ActiveDocument.Selection.Text = "system(""pause"");"  
  21.     End Sub  
  22.     Public Sub FileSign()  
  23.         'DESCRIPTION 文件签名  
  24.         Dim Description As New StringBuilder  
  25.         Dim BlankLine As String  
  26.         BlankLine = "//" + vbNewLine  
  27.         With Description  
  28.             .AppendFormat("//Copyright (c) 2013 Ajioy All Rights Reserved{0}",vbNewLine)  
  29.             .AppendFormat("/*********************************************************************************************{0}", vbNewLine)  
  30.             .AppendFormat("*文件名:{0}{1}{2}", vbTab, DTE.ActiveDocument.Name, vbNewLine)  
  31.             .AppendFormat("*说明:{0}{1}{2}", vbTab, "", vbNewLine)  
  32.             .AppendFormat("*创建日期:{0}{1}{2}", vbTab, Date.Today.ToString("yyyy-MM-dd"), vbNewLine)  
  33.             .AppendFormat("*作者:{0}{1}{2}", vbTab, "Ajioy", vbNewLine)  
  34.             .AppendFormat("*版本:{0}{1}{2}", vbTab, "1.0", vbNewLine)  
  35.             .AppendFormat("*----------------------------------------------------------------------------------------------{0}", vbNewLine)  
  36.             .AppendFormat("*修改记录:{0}", vbNewLine)  
  37.             .AppendFormat("*日期{0}版本{1}修改人{2}修改内容{3}", New String(vbTab, 3), vbTab, vbTab, vbNewLine)  
  38.             .AppendFormat("*{0}{1}", Date.Today.ToString("yyyy-MM-dd"), vbNewLine)  
  39.             .AppendFormat("********************************************************************************************/{0}", vbNewLine)  
  40.             .Append(vbNewLine)  
  41.         End With  
  42.         '插入cs文件头部  
  43.         Dim objSel As TextSelection  
  44.         objSel = CType(DTE.ActiveDocument.Selection, TextSelection)  
  45.         DTE.UndoContext.Open("FileSign")  
  46.         objSel.StartOfDocument(False)  
  47.         objSel.Insert(Description.ToString())  
  48.         DTE.UndoContext.Close()  
  49.     End Sub  
  50.     Sub FunctionSign()  
  51.         'DESCRIPTION 文件签名  
  52.         Dim obj  
  53.         obj = Now()  
  54.         Dim DocSel As EnvDTE.TextSelection  
  55.         DocSel = DTE.ActiveDocument.Selection  
  56.         DocSel.NewLine()  
  57.         DocSel.Text = "/*******************************************************************"  
  58.         DocSel.NewLine()  
  59.         DocSel.Text = "* 函数名称:"  
  60.         DocSel.NewLine()  
  61.         DocSel.Text = "* 功    能:"  
  62.         DocSel.NewLine()  
  63.         DocSel.Text = "* 参    数:"  
  64.         DocSel.NewLine()  
  65.         DocSel.Text = "* 返 回 值:"  
  66.         DocSel.NewLine()  
  67.         DocSel.Text = "* 创 建 人:Ajioy"  
  68.         DocSel.NewLine()  
  69.         DocSel.Text = "* 博    客:blog.csdn.net/ajioy"  
  70.         DocSel.NewLine()  
  71.         DocSel.Text = "* 电子邮箱:ajioy1206@gmail.com"  
  72.         DocSel.NewLine()  
  73.         DocSel.Text = "* 日    期:" + CStr(Year(obj)) + "." + CStr(Month(obj)) + "." + CStr(Day(obj)) + " " + CStr(Hour(obj)) + ":" + CStr(Minute(obj)) 'System.DateTime.Now.ToLongDateString()  
  74.         DocSel.NewLine()  
  75.         DocSel.Text = "*******************************************************************/"  
  76.     End Sub  
  77.     Sub AddModify()  
  78.         'DESCRIPTION 增添修改  
  79.         Dim obj  
  80.         obj = Now()  
  81.         ActiveDocument.Selection.Text = "//Ajioy" + CStr(Year(obj)) + "." + CStr(Month(obj)) + "." + CStr(Day(obj))  +" " + CStr(Hour(obj)) + ":" + CStr(Minute(obj)) + " 修改"  
  82.     End Sub  
  83.     Sub AddStartSymbol()  
  84.         'DESCRIPTION 开始注释  
  85.         ActiveDocument.Selection.Text = "/*"  
  86.     End Sub  
  87.     Sub AddEndSymbol()  
  88.         'DESCRIPTION 结束注释  
  89.         ActiveDocument.Selection.Text = "*/"  
  90.     End Sub  
  91. End Module  

简单实现功能,该部分引自:http://www.xuebuyuan.com/630353.html

Imports SystemImports EnvDTEImports EnvDTE80Imports EnvDTE90Imports EnvDTE90aImports EnvDTE100Imports System.DiagnosticsPublic Module MyNote    Sub DocumentFileHeader()        Dim DocSel As EnvDTE.TextSelection        DocSel = DTE.ActiveDocument.Selection        DocSel.NewLine()        DocSel.Text = "'************************************************"        DocSel.NewLine()        DocSel.Text = "'◇作者:吴利昌"        DocSel.NewLine()        DocSel.Text = "'◇小组:无"        DocSel.NewLine()        DocSel.Text = "'◇说明:"        DocSel.NewLine()        DocSel.Text = "'◇版本号:V1.0"        DocSel.NewLine()        DocSel.Text = "'◇创建日期:" + System.DateTime.Now.ToLongDateString        DocSel.NewLine()        DocSel.Text = "'*************************************************"    End SubEnd Module


保存后关闭宏IDE

4.回到VS2010主界面,"Tools"--->"Options"--->"Environment"--->"Keyboard"--->在Show commands containing:下的编辑框中输入FunctionSign(所有带括号的那些名称,如AddStartSymbol()...),会看到有"Macros.Macros(或Samples).AjioyMacros.FunctionSign"的项,选中它,在Press shortcut keys:下自定义快捷键,建议用Alt +  数字0-9和-+键组合,以免与编译环境快捷键发生冲突,之后"Assign",最后确定。

接下来我们可以随便验证一下,打开一个.cpp文件,按下Alt + 数字,产生自定义注释。


0 0
原创粉丝点击